当前位置: 首页 > Web前端 > JavaScript

鞋带公式计算画布多边形的面积

时间:2023-03-27 18:21:59 JavaScript

$$S=\frac{1}{2}\left|\sum_{i=1}^{n}\left(x_{i}y_{i+1}-x_{i+1}y_{i}\right)\right|=\frac{1}{2}\left|\sum_{i=1}^{n}x_{i}\left(y_{i+1}-y_{i-1}\right)\right|$$鞋带公式(ShoelaceFormula),又称高斯面积公式。它是由AlbrechtLudwigFriedrichMeister(1724-1788)于1769年根据高斯(CarlFriedrichGauss)和C.G.J.的梯形公式提出的。雅各比。这个公式可以简单快速的得到平面上任意一个多边形的面积。因为用多边形坐标做叉乘,就像系鞋带一样,所以叫鞋带公式。由于计算简单,非常适合计算面积。使用方法是选取多边形的一个点作为顶点,然后在一个方向上依次取坐标(必须是顺序的)。然后根据公式进行叉乘。在计算中,如果坐标超出顶点数的范围,则循环数。例子三角形的固定方程可以由公式(超出下标时重复数字)得到:$$S_\text{triangle}=\frac{1}{2}\left|x_{1}\left(y_{2}-y_{3}\right)+x_{2}\left(y_{3}-y_{1}\right)+x_{3}\left(y_{1}-y_{2}\右)\右|$$替换三角形数据:\(A点:\left(0,6\right)\),\(B点:\left(1,1\right)\),\(C点:\left(4,1\right)\)三角形区域:$$\begin{align}S_\text{triangle}&=\frac{1}{2}\left|0\cdot\left(1-1\right)+1\cdot\left(1-6\right)+4\cdot\left(6-1\right)\right|\\&=\frac{1}{2}\左|-5+4\times5\右|\\&=7.5\end{align}$$参考资料中也有指向更复杂图形的链接。代码constshoelaceFormula=(vertices:Array<{x:number;y:number}>)=>{constlength=vertices.length;让面积:数量;area=vertices.reduce((sum,vertices,i,array)=>{constafterIndex=i+1>=length?0:i+1;constbforeIndex=i-1<0?length-1:i-1;returnsum+vertice.x*(array[afterIndex].y-array[bforeIndex].y);},0);returnMath.abs(area)/2;};参考资料鞋带公式-维基百科【国际数学竞赛】任意多边形面积计算公式鞋带定理(Shoelaceformula)求二维多边形面积几何图形面积公式发展简史,从“赫伦公式”到“高斯公式”积分关系定理(格林公式、高斯公式、斯托克斯公式)