3D 中 n 边平面多边形的面积 space
Area of n-Sided planar polygon in 3D space
所以,我有一组 n 坐标 (x,y,z) 用于平面 n 边多边形。坐标还没有任何特定格式,因为我不确定什么最适合应用程序。由此我需要推断多边形的面积,但我不知道如何实现这一点。
我考虑过使用多边形三角剖分,然后计算每条边的长度,然后在对每个三角形的面积求和之前在 Heron 公式中使用。但是我不确定是否有更简单的方法?更不用说从哪里开始实施了。
如有任何想法,我们将不胜感激。
3D 三角形的面积 space 由其两条边的矢量叉积的大小的一半给出。
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
个点有一条线)。
请注意,幅度是在对叉积求和后取的。
所以,我有一组 n 坐标 (x,y,z) 用于平面 n 边多边形。坐标还没有任何特定格式,因为我不确定什么最适合应用程序。由此我需要推断多边形的面积,但我不知道如何实现这一点。
我考虑过使用多边形三角剖分,然后计算每条边的长度,然后在对每个三角形的面积求和之前在 Heron 公式中使用。但是我不确定是否有更简单的方法?更不用说从哪里开始实施了。
如有任何想法,我们将不胜感激。
3D 三角形的面积 space 由其两条边的矢量叉积的大小的一半给出。
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
个点有一条线)。
请注意,幅度是在对叉积求和后取的。