计算由N个点构成的简单多边形面积。不考虑可能存在的边相交以及岛洞等复杂情况。
计算公式:
S(N1,N2,N3…Nn)=0.5abs[(x1y2-y1x2)+(x2y3-y2x3)…+(xny1-yn*x1)]
(为什么是这公式我也不知道)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,k;
int x[1000],y[1000];
double sum=0;
double area=0.0;
printf("请输入点的个数:\n");
which(scanf("%d",&n) && n!=0)
{
printf("请输入点的坐标,示例:1 2\n");
for(i=0; i<n; i++)
{
scanf("%d %d",&x[i],&y[i]);
}
for(i=0; i<=n-1; i++)
{
sum=sum+(x[i]*y[i+1]-x[i+1]*y[i]);
}
sum=sum+(x[n]*y[0]-y[n]*x[0]);
area=0.5*abs(sum);
printf("%.2lf\n",area);
}
}