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;
}
… … …