2015-11-24 150 views
1

所以,我有一组n面坐标(x,y,z)用于平面n面多边形。坐标没有任何特定的格式,因为我不确定最适合该应用的是什么。从这里我需要推断多边形的面积,但我没有真正的想法如何实现这一点。三维空间中n面平面多边形的面积

我想过使用Polygon Triangulation,然后在总结每个三角形的面积之前计算Heron公式中每个边的长度。但我不确定是否有更简单的方法?更不用说从哪里开始实施了。

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

+0

我可能会去三角测量路线。如果多边形是凸的,那么得到三角测量不应该太难。 – Thomas

+2

投影到二维上,然后使用鞋带配方。 –

+0

看看这里的一些提示:http://geomalgorithms.com/a01-_area.html – Thomas

回答

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

请注意,之后的数值是的总和。

+0

谢谢你的帮助,经过一点思考,并在纸上做它的工作,所以时间来实施! – WillowDog