计算几何中求多边形面积是一个很基础的算法,我们知道,两条线段的叉积等于这两条由同一端点引出线段所围成三角形的面积。那么三角形的面积即可由此计算。多边形(凸)内部也可以分出许多个三角形,由此我们可以计算出多边形的面积。
duang!
duang!
其实是因为叉积的正负性啦!如果你们不能理解,你们可以用笔和纸去算算看。那么我们可以推出一个面积公式,这个公式我就不写出来了,下面是代码实现:
int cross(Point x,Point y,Point z)
{
return (y.x-x.x)*(z.y-x.y)-(y.y-x.y)*(z.x-x.x);
Vector a[100];
int main()
{
int i;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
double ans=0;
ans+=cross(a[1],a[i-1],a[i]);
ans=abs(ans);
ans/=2;
printf("%.4f\n",ans);
return 0;
}
}
for(i=3;i<=n;i++)