三维空间中n面平面多边形的面积

时间:2015-11-24 12:33:56

标签: java polygons

所以,我有一组n坐标(x,y,z)用于平面n面多边形。坐标不是任何特定的格式,因为我不确定什么是最适合应用程序的。由此我需要推断出Polygon的面积,但我对如何实现这一点并不知情。

我考虑过使用Polygon Triangulation,然后计算每个三角形区域中每个三角形区域的长度,然后将它们相加。但我不确定是否有更简单的方法?更不用说从哪里开始实现这一点。

任何想法都会受到赞赏,谢谢。

1 个答案:

答案 0 :(得分:0)

三维空间中三角形的面积是其两边矢量的交叉积的一半。

area = |   (v1 - v0)   x   (v2 - v0)   | / 2

或者,元素:

       | [ (x1 - x0) ]   [ (x2 - x0) ] |
area = | [ (y1 - y0) ] x [ (y2 - y0) ] | / 2
       | [ (z1 - z0) ]   [ (z2 - z0) ] |

所以,你可以选择一个多边形的第一个顶点作为[z0 y0 z0],并将这个数量加到所有顶点上:

area = | sum_i   (v_(i) - v0)   x   (v_((i+1) % N  - v0)   | / 2

或者,元素:

       |       [ (x_(i) - x0) ]   [ (x_((i+1) % N) - x0) ] |
area = | sum_i [ (y_(i) - y0) ] x [ (y_((i+1) % N) - y0) ] | / 2
       |       [ (z_(i) - z0) ]   [ (z_((i+1) % N) - z0) ] |

其中sum_i应表示所有顶点的总和,i in 0..(N-1),订阅_(i)表示第i个顶点的坐标。 (i+1) % N只是处理多边形点的包裹(即N-1 - 点有一条到0点的线。)

请注意,在对求和交叉乘积之后采用