1. 思路:
可以将凸多边形(边数n > 3)划分为 (n - 2) 个三角形,分别运用向量叉积计算每个三角形的面积,最后累加各个三角形的面积就是多边形的面积。
2. 求多边形面积的算法模板:
定义点的结构体 struct Point{ double x,y; } p[MAXPOINT]; 计算三角形面积 double getS(Point a,Point b,Point c) { return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) / 2; //应用叉积的定义推出的 } 计算多边形面积。必须确保 n>=3,且多边形是凸多边形 double getPS(Point p[], int n) { double sumS = 0; for(int i = 1; i <= n - 1; i++) sumS += getS(p[1], p[i], p[i + 1]); // n-2个三角形的面积和 return sumS; }