这是一个通用的计算凸多边形或凹多边形面积的函数,用叉乘法实现的
用的计算凸多边形或凹多边形面积的函数,用叉乘法实现
#include<iostream>
#include<cstdio>
using namespace std;
typedef struct {
double x,y;
} Point;
double polygonarea(Point *polygon,int N)
{
int i,j;
double area = 0;
for (i=0;i<N;i++) {
j = (i + 1) % N;
area += polygon[i].x * polygon[j].y;
area -= polygon[i].y * polygon[j].x;
}
area /= 2;
return(area < 0 ? -area : area);
}
int n,m;
int main()
{
Point point[110];
while(cin>>n&&n)
{
m=n;
while(n--)
{
cin>>point[n].x>>point[n].y;
}
printf("%.1lf\n",polygonarea(point,m));
}
}
用的计算凸多边形或凹多边形面积的函数,用叉乘法实现