鞋带定理(Shoelace formula)求2D多边形面积

参考
鞋带公式——多边形面积求和
GIS算法:利用鞋带定理(Shoelace formula)求2D多边形面积

一、简单解释

鞋带公式 (Shoelace formula),也叫高斯面积公式,是一种数学算法,可求确定区域的一个简单多边形的面积。该多边形是由它们顶点描述笛卡尔坐标中的平面。用户交叉相乘相应的坐标以找到包围该多边形的区域,并从周围的多边形中减去该区域以找到其中的多边形的区域。之所以称为鞋带公式,是因为对构成多边形的坐标进行恒定的交叉乘积,就像系鞋带一样。——以上来自维基百科en.wikipedia.org/wiki/Shoelace_formula。

为什么叫做鞋带公式,这是因为在计算的过程很像鞋带一样缠绕着,比如一个多边形(三角形),三个顶点分别是 A:(x1, y1) , B:(x2, y2) , C:(x3, y3) 鞋带公式是这样子算的:


image.png

S三角形=0.5∗((x1∗y2+x2∗y3+x3∗y1)−(y1∗x2+y2∗x3+y3∗x1))

我们代个数进去试试A:(0, 4) , B:(0, 0) , C:(3, 0) ,代进公式中:S 三 角 形 = 0.5 ∗ ( ( 0 ∗ 0 + 0 ∗ 0 + 3 ∗ 4 ) − ( 4 ∗ 0 + 0 ∗ 3 + 0 ∗ 0 ) ) = 6

二、更复杂的例子
image.png

首先参考一个例子,展示如何利用鞋带定理计算多边形面积。我们只需选择一个顶点,然后按照逆时针顺序读取坐标,最后回到起点。并按照类似系鞋带的顺序将坐标串联起来。

image.png

对于绿色的线链接的坐标直接相乘。红色的相乘;最后把两者相减。重复操作,最后将计算好的数累和得到4+2+30+24+22+28=110,则多边形的面积为110/2=55


image.png
三、以三角形为例进行证明

对于一个三角形,我们可以将其转换为求平行四边形面积的一半


image.png

取三角形的坐标,a、b和c、d构建两个矩形。两个绿色的直角三角形是大矩形的两个空白,补上了平行四边形和小矩形部分。易知大矩形的面积等于平行四边形加小矩形(小矩形与平行四边形有重叠部分),即ad = S平等四边形+bc,得到S平等四形=ad-bc,S三角形面积=0.5*(ad-bc)

注:这里可以将下图中,底部直角三角形移到顶部,左侧直角三角形移到右上角,可以看到大矩形的面积就是图中橙色和绿色区域之和,并且绿色重叠部分要算两遍。重新拆解组合,先算平等四边形,会发现绿色重叠部分还要算一次,而它正好和旁边的两个绿色小直角三形组合成绿色小矩形。

image.png
image.png

其实熟悉向量叉乘的话,会发现这个公式很容易,可以参考Cocos 向量应用

四、推广到任意多边形

上个例子的多边形就可以拆分成多个三角形,对各组坐标的叉乘最终计算得出了三角形的面积,累加起来就得到了多边形的面积。

image.png

如图多边形,原点p在多边形外面,使用鞋带定理计算面积。可以发现从V1开始逆时针遍历顶点。如果线段pv1是划向逆时针方向,三角形就是正数,划向顺时针方向为负数。正负抵消最终得到多边形面积


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目在这里:2036 改革春风吹 这题的目的就是求多边形的面积,求多边形的面积是通过将多边形分割成多个三角形,然后...
    Buffalooo阅读 757评论 0 1
  • 上学时曾读过一本算法竞赛书,其中一章介绍几何算法。因为平时很少接触,所以当时在我看来,几何问题都有一种瑰丽神奇的色...
    packet阅读 1,710评论 0 1
  • 大家都知道世界上有正方形,长方形,三角形,梯形,平行四边形等等图案吧,其实这些图案都属于多边形。可是如果在数学中多...
    橄榄树煜舒阅读 484评论 0 0
  • 在我们学多边形的面积时老师让我们小组里讨论还告诉我说现在知道直角三角形的面积和正方形长方形的面积怎么求现在如何求出...
    老VS王阅读 471评论 0 0
  • 来自非一班 小惠同学 土豆:今日推荐小惠同学关于多边形面积的研究,这已经是小惠的二稿啦!五年级上学期学习多边形的面...
    小土豆上学阅读 2,883评论 0 0