利用向量叉乘:三角形ABC面積可以利用向量 (↑AB) ×(↑AC)*(1/2)得出,對於多邊形,可以隨意選取多邊形某一點爲源點然後一次計算.對於如下:
的多邊形
A=sigma(Ai) (i=1…N-2)
#include <stdio.h>
#include <math.h>
typedef struct node
{
double x,y;
}node;
node s[1001];
double cal(node x,node y,node z)
{
return (y.x-x.x)*(z.y-x.y)-(y.y-x.y)*(z.x-x.x);
}
int main()
{
int n,i;
double res;
while(scanf("%d",&n)&&n)
{
res=0;
for(i=0;i<n;i++)
scanf("%lf%lf",&s[i].x,&s[i].y);
for(i=1;i<n-1;i++)
res+=cal(s[0],s[i],s[i+1]);
printf("%.1lf\n",res/2.0);
}
return 0;
}