非均匀网格上的2d积分

时间:2013-03-04 17:56:23

标签: math numeric numerical-methods

我正在编写一个数据分析程序,其中一部分需要找到一个形状的体积。形状信息以点丢失的形式出现,给出半径和点的角坐标。

如果数据点均匀分布在坐标空间中,我将能够执行积分,但不幸的是,数据点基本上是随机分布的。

我的低效方法是找到每个点的最近邻居并将形状拼接在一起,找到缝合在一起的部分的体积。

有没有人有更好的方法?

感谢。

3 个答案:

答案 0 :(得分:2)

如果这些是表面点,一个好的方法是将表面离散化为三角形,并使用格林定理将体积积分转换为曲面积分。然后你可以在三角形上使用简单的高斯求积法。

答案 1 :(得分:0)

好的,就在这里,我想是沿着duffymo的路线。

首先,对表面进行三角测量,并确保三角形的方向一致。意味着相邻三角形的方向是这样的,即共同边缘在相反的方向上穿过。

其次,对于每个三角形,ABC计算此表达式:H * cross2D(BA,CA),其中cross2D仅使用坐标X和Y计算叉积,忽略Z坐标,H是任何方便点的Z坐标在三角形中(虽然重心会提高精度)。

第三,总结以上所有表达方式。结果将是表面内的有符号体积(加或减,取决于方向的选择)。

答案 2 :(得分:0)

听起来你想要点云的convex hull。幸运的是,有一些有效的方法可以帮助您。查看scipy.spatial.ConvexHull