多边形的面积

计算任意多边形的面积
多边形的面积
以三角形为例。{
S_abc=fabs(S_oab+S_obc+S_oca)/2=fabs((向量OA X 向量OB)+(向量OB X 向量OC)+(向量OC X 向量OA))/2;
}
我们根据二维向量叉积计算三角形面积。
因为叉积为顺时针为负,逆时针为正,所以可扩展到n边形(凸凹形都可以)。
PS:必须输入的坐标以顺时针或者逆时针。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
struct point{
	double x,y;
//	point (double xx=0,double yy=0):x(xx),y(yy){}
};
point a[maxn];
int n;//边的个数 
double getarea(){
	double area=0;
	for(int i=1;i<=n;i++){
		area+=a[i].x*a[i+1].y-a[i].y*a[i+1].x;
	}
	return fabs(area/2);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lf%lf",&a[i].x,&a[i].y);
	}
	a[n+1]=a[1];
	printf("%lf\n",getarea());
}