``` // 计算面积(使用鞋带公式) double area() const { if (size() < 3) return 0.0; double area = 0.0; int n = size(); for (int i = 0; i < n; ++i) { int j = (i + 1) % n; area += at(i).x * at(j).y; area -= at(j).x * at(i).y; } return std::abs(area) / 2.0; } ``` 鞋带公式(Shoelace Formula,又称高斯面积公式)用来求任意简单多边形(不自交)的面积,只要知道各顶点按顺序(顺/逆时针均可)的平面坐标即可。 1. 公式写法 设多边形有 n 个顶点 P₀(x₀,y₀), P₁(x₁,y₁), …, Pₙ₋₁(xₙ₋₁,yₙ₋₁), 则面积 {{.:pasted:20251014-163658.png}} 下标循环:i+1=n 时取 0。 把相邻顶点“交叉相乘”再相减,最后取绝对值除以 2,形状像“系鞋带”而得名。 2. 三角形特例 三点 A(x₁,y₁), B(x₂,y₂), C(x₃,y₃) {{.:pasted:20251014-163708.png}}