【问题标题】:Area of n-Sided planar polygon in 3D space3D 空间中 n 面平面多边形的面积
【发布时间】:2015-11-24 12:33:56
【问题描述】:

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

我考虑过使用多边形三角剖分,然后计算每个边的长度,以便在 Heron 公式中使用每个三角形的面积,然后再将它们相加。但我不确定是否有更简单的方法?更不用说从哪里开始实施了。

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

【问题讨论】:

  • 我可能会走三角测量路线。如果多边形是凸的,那么获得三角剖分应该不会太难。
  • 投影到二维上,然后使用鞋带公式。
  • 在这里查看一些提示:geomalgorithms.com/a01-_area.html

标签: java polygons


【解决方案1】:

三角形在 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-th 点与0-th 点有一条线)。

请注意,幅度是在对叉积求和之后获取的。

【讨论】:

  • 感谢您的帮助,经过一番思考并在纸上完成后,它奏效了,所以是时候实施了!
猜你喜欢
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多