向量叉积求三角形面积公式:
A,B,C为三角形的三个点,向量AB,向量AC
S(A,B,C)=abs(AB×AC)/2;
然后,可以扩展到以原点为起始点,相邻两个点位终点,求出来的面积是有方向的。。。
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
float s=0;
int x0,y0;
int px,py,nx,ny; //前一个点,与后一个点
scanf("%d %d",&px,&py);
x0=px,y0=py; //因为要计算到第一个点,所以要保存起来
for(int i=1;i<n;i++)
{
scanf("%d %d",&nx,&ny);
s+=(px*ny-nx*py)*1.0/2;
px=nx,py=ny;
}
s+=(nx*y0-x0*ny)*1.0/2; //计算最后一个与第一个点的面积
printf("%.1f\n",s);
}
return 0;
}