2D任意多边形图形面积计算
鞋带公式(Shoelace Formula),也称为高斯面积公式。是由Albrecht Ludwig Friedrich Meister (1724-1788)在1769年,基于高斯(Carl Friedrich Gauss)和C.G.J. Jacobi. 的梯形公式提出的。此公式可以简单快速的得出平面上任意多边形的面积。因为利用多边形坐标进行交叉相乘,像是系鞋带,所以称之为鞋带公式。
由于计算简单,很适合计算面积时使用。
使用方式是选取多边形一个点做顶点,然后向一个方向顺序取坐标(必须是顺序的)。之后按照公式进行交叉相乘。计算中如果遇到坐标超出顶点个数范围时循环取数。
例子
三角形由公式可得固定方程(超出下标时循环取数):
代入三角形数据:、、
三角形面积求得:
参考资料的链接里面还有举更复杂的图形例子。
代码
const shoelaceFormula = (vertices: Array<{ x: number; y: number }>) => {
const length = vertices.length;
let area: number;
area = vertices.reduce((sum, vertice, i, array) => {
const afterIndex = i + 1 >= length ? 0 : i + 1;
const bforeIndex = i - 1 < 0 ? length - 1 : i - 1;
return sum + vertice.x * (array[afterIndex].y - array[bforeIndex].y);
}, 0);
return Math.abs(area) / 2;
};
参考资料
Shoelace formula - Wikipedia
【国际数学竞赛】任意多边形面积计算公式
鞋带定理(Shoelace formula)求2D多边形面积
几何图形面积公式的发展简史,从“海伦公式”到“高斯公式”
积分关系定理(格林公式、高斯公式、斯托克斯公式)