计算任意多边形面积的问题是一个很基础且常见的问题。
在高中数学知识的基础上的解法是:
1.连接多边形内不相邻顶点,将多边形划分成多个三角形。
2.计算每个三角形的面积。
3.对所有三角形的面积进行求和。
在这里求解三角形的面积需要用到海伦公式(高中数学知识)
通俗地说,即知道三角形三边长可以求得其面积,其中的p是三角形周长的一半。
而在此问题中,恰好就满足了海伦公式的条件——三边长。
虽然不是直接给出了三边长,但是知道了所有顶点的坐标,也就可以通过距离公式求出所有边长了。
所以在2D情况下,这个问题是比较简单的。
但是在3D情况下呢?假如是需要求解3D空间内任意多边形的面积,也就不能用此方法了,因为基向量变了。
这里新的问题的数学推导如下:
可以看到最后即需要假如需要用代码实现的话,分为以下几步:
1.求解a
2.求解cosnx,cosny,cosnz
3.迭代求解S
最终的代码如下(python):
import math
def compute_3D_polygon_area(points):
'''
points为任意多边形的点集合
注意输入时要按环的流动输入,不能乱序输入
此方法是3D空间的,相较于2D更具有普适性
'''
if (len(points) < 3): return 0.0
P1X,P1Y,P1Z = points[0][0],points[0][1],points[0][2]
P2X,P2Y,P2Z = points[1][0],points[1][1],points[1][2