凸多边形:指如果把一个多边形的所有边中,任意一条边向两方无限延长成为一直线时,其他各边都在此直线的同旁,那么这个多边形就叫做凸多边形,其内角应该全不是优角。
非凸多边形:不是凸多边形的多边形。
多边形的有向面积:通过把n边形转换为n-2个三角形(从第一个顶点出发向其他点连边),用叉乘公式求每个三角形的有向面积。对于非凸多边形也同样适用,在外面部分可以正负抵消。实际中,多是求多边形的面积而不是有向面积,那么先求出有向面积再取绝对值就好了。
double GetArea(poi *p, int n)
{
double area = 0;
for(int i = 1; i < n-1; i++)
area += cross(p[i]-p[0],p[i+1]-p[0]);
return area;
}