原理:
多边形面积在计算机中有一个很好的处理办法就是相量叉乘,我们知道三角形ABC的面积可以等于1/2*|AB|*|AC|*sinBAC,也就是等于ABXAC的模,若A(x1,y1),B(x2,y2),那么S=x1*y2-x2*y1。
叉乘计算凹凸边形都可以
#include<stdio.h>
int main()
{
int a[110],b[110];
int n,i;
double sum;
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
for(sum=0,i=1;i<n-1;i++)
sum+=((a[i]-a[0])*(b[i+1]-b[0])-(a[i+1]-a[0])*(b[i]-b[0]));
printf("%.1lf\n",sum/2);
}
return 0;
}