完美解决计算3D空间任意多边形面积

计算任意多边形面积的问题是一个很基础且常见的问题。

在高中数学知识的基础上的解法是:

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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值