Shoelace Theorem
概念简介
Shoelace公式,也叫高斯面积公式,是一种数学算法,可求确定区域的一个简单多边形的面积。该多边形是由它们顶点描述笛卡尔坐标中的平面。用户交叉相乘相应的坐标以找到包围该多边形的区域,并从周围的多边形中减去该区域以找到其中的多边形的区域。是因为对构成多边形的坐标进行恒定的交叉乘积,就像系鞋带一样,所以称为鞋带公式。
公式内容
对于任意一个多边形,如果已知其各个顶点的坐标,那么这个多边形的面积为:
图解
证明
(虽然我自己也没怎么看懂)因为证明不难,用格林公式定理来证时,只须假设合适的向量场,也比较方便。所以就不写了。
代码求解
我们可以利用下式计算多边形面积。首先把多边形顶点坐标按逆时针顺序存入数组,循环读取数组,带入公式即可。
#include<bits/stdc++.h>
using namespace std;
long double s;
//数据存储结构,定义一个结构体,存储坐标,初始化结构体数组即可。
struct area{
long double x;
long double y;
}
//实现公式。循环读取坐标,进行叉乘;最后一次是读取最后一个坐标和第一个坐标叉乘,代表回到了原点。
… … …
for(int i=0;i<7;i++){
if(i!=6)
s+=area[i].x*area[i+1].y-area[i].y-area[i+1].x;
else
s+=area[i].x*area[0].y-area[i].y-area[0].x;
}
… … …