码迷,mamicode.com
首页 > 其他好文 > 详细

求简单多边形面积时非常有用的一个公式

时间:2015-07-18 17:08:16      阅读:771      评论:0      收藏:0      [点我收藏+]

标签:多边形   鞋带公式   格林定理   面积   

目的

学习和介绍一个有用的求任意简单多边形面积的经典公式。
所谓“简单多边形”,可以是凹、或凸多边形,但原则上边与边之间不能有交叉;或者,拓扑一点,从多边形卷绕数的角度,多边形内的点卷绕数只能是±1

这个公式有悠久的历史,而且计算中十分有用,可惜维基里面只有英文版

Shoelace公式

这里的shoelace,——“鞋带”——,并不是人名,所以翻译成“鞋带公式”没有任何问题。这个名字是怎么来的呢?因为实际计算中,公式以n×2 的矩阵形式表示多边形上顺序排列的顶点,行列式的计算又存在错位,形如所系的“鞋带”,所以才得名。又叫“鞋带算法”、“鞋带法”、“高斯面积公式”、测量员公式。

维基上的简单例子是这样的,比如已知 ΔABC 三个顶点的坐标 A:(x1,y1)B:(x2,y2)C:(x3,y3),对应的矩阵是这样的:

??????????????????????x1x2x3x1 y1y2y3y1?????????????????????????????????????????????x1x2x3x1???y1y2y3y1?????????????????????????????????????????????x1x2x3x1×××y1y2y3y1??????????????????????

计算面积时,先根据中间一个矩阵,计算

a=(x1×y2)+(x2×y3)+(x3×y1)

再从最右侧矩阵计算
b=(y1×x2)+(y2×x3)+(y3×x1)

则三角形面积为:
SΔABC=12|a?b|=12((x1×y2)+(x2×y3)+(x3×y1))?((y1×x2)+(y2×x3)+(y3×x1))

代入一个简单的情形试试,A:(0,4),B:(0,0),C:(3,0),则是一个直角顶点在原点,底 34 面积为 6 的直角三角形:

SΔABC=12((x1×y2)+(x2×y3)+(x3×y1))?((y1×x2)+(y2×x3)+(y3×x1))

=12|((0×0)+(0×0)+(3×4))?((4×0)+(0×3)+(0×0))|=6

当简单多边形边数或顶点数更多时,则计算面积时上述矩阵为 n×2 维,计算规则不变。

公式的一般形式

A=12i=1nxi(yi+1?yi?1)=12i=1nyi(xi+1?xi?1)=12i=1ndet(xiyixi+1yi+1)

公式中约定: 当下标大于 n 时, xn+1=x1, yn+1=y1

它可以看作格林公式用于面积计算时的特殊情形。

证明

证明因为不难,用Green定理来证时,只须假设合适的向量场,也比较方便。所以就不写了。

这个讲完之后,后面介绍它在近似数值计算求复杂闭曲线所包围面积中的一个应用。

版权声明:stereohomology原创本文于CSDN博客,无原始链接之转载视为认可“10欧元每字符”之报酬。

求简单多边形面积时非常有用的一个公式

标签:多边形   鞋带公式   格林定理   面积   

原文地址:http://blog.csdn.net/stereohomology/article/details/46942889

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!