我们都知道已知A(x1,y1)、B(x2,y2)、C(x3,y3)三点的面积公式为 |x1 x2 x3| S(A,B,C) = |y1 y2 y3| * 0.5 =
| 1 1 1 |
[(x1-x3)*(y2-y3) - (x2-x3)*(y1-y3)]*0.5
(当三点为逆时针时为正,顺时针则为负的) 对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有: S(A1,A2,A3,、、、,An) = abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1)) P是可以取任意的一点,用(0,0)时就是下面的了: 设点顺序 (x1 y1) (x2 y2) ... (xn yn) 则面积等于 |x1 y1 | |x2 y2| |xn yn| 0.5 * abs( | | + | | + ...... + | | ) |x2 y2 | |x3 y3| |x1 y1| 其中 |x1 y1| | |=x1*y2-y1*x2 |x2 y2| 因此面积公式展开为: |x1 y1| |x2 y2| |xn yn|
=0.5*abs(| | + | | + …… + | |)
|x2 y2| |x3 y3| |x1 y1|
(此算法适用于凸和凹多边形但并不适用于当多边形有边相交的情况)
|