1

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

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

我的低效方法是找到每个点的最近邻居,然后像这样将形状缝合在一起,找到缝合在一起的部分的体积。

有没有人有更好的方法可以采取?

谢谢。

4

3 回答 3

2

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

于 2013-03-04T19:44:38.550 回答
0

好的,这就是我认为的 duffymo 的路线。

首先,对曲面进行三角剖分,并确保三角形的方向一致。这意味着相邻三角形的方向使得公共边沿相反方向遍历。

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

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

于 2013-09-24T00:29:01.313 回答
0

听起来你想要点云的凸包。幸运的是,有一些有效的方法可以让你到达那里。退房scipy.spatial.ConvexHull

于 2016-11-07T09:11:09.663 回答