因此,对于平面n面多边形,我有一组n坐标(x,y,z)。坐标尚未采用任何特定格式,因为我不确定哪种格式最适合该应用程序。据此,我需要推断多边形的面积,但是我对如何实现这一点一无所知。

我考虑过使用多边形三角剖分,然后计算每个三角形的面积,然后再将它们求和,然后在Heron公式中对每个三角形的面积进行计算。但是我不确定是否有更简单的方法?更不用说从哪里开始实现这一点了。

任何想法将不胜感激,谢谢。

最佳答案

3D空间中三角形的面积由其两个边的矢量的叉积的大小的一半给出。

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个点有一条线)。

注意,幅度是在取叉积后得出的。

关于java - 3D空间中n边平面多边形的面积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33893856/

10-10 11:06