求简单多边形面积时非常有用的“鞋带公式”

来源:互联网 发布:ai矢量制图软件 编辑:程序博客网 时间:2024/03/29 18:18

目的

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

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

Shoelace公式

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

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

x1x2x3x1 y1y2y3y1x1x2x3x1y1y2y3y1x1x2x3x1×××y1y2y3y1

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

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

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

则三角形面积为:
SΔABC=12|ab|=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+1yi1)=12i=1nyi(xi+1xi1)=12i=1ndet(xiyixi+1yi+1)

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

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

证明

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

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

0 0