*/
#include <stdio.h>
#include <math.h>
#define N 9//N 为顶点个数
main()
{
/*A 是一个记录多边形顶点的数组,注意,这些顶点是有顺序的,也就是说从
{0,0}->{2,0}->{2,1}->....{0,-1}->{0,0}这样围成的多边形
*/
double A[N][2]={{0,0},{2,0},{2,1},{0,1},{0,2},{-2,0},{-1,0},{-1,-1},{0,-1}};
double area=0;
/*算法的思想就是将多边形绕{0,0}点切割成三角形,然后对面积求和
而三角形的面积则通过向量运算获得*/
for(int i=0,j=1;i<N;i++,j=(j+1)%N)
{
area+=A[i][0]*A[j][1]-A[i][1]*A[j][0];
}
area=fabs(area*0.5);
printf("%lf",area);
}
评论0