【问题标题】:2d integration over non-uniform grid非均匀网格上的二维积分
【发布时间】:2013-03-04 17:56:22
【问题描述】:

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

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

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

有人有更好的方法吗?

谢谢。

【问题讨论】:

    标签: math numeric numerical-methods


    【解决方案1】:

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

    【讨论】:

    • 你的意思是把高斯定理应用到表面区域形成点从原点到表面点的向量吗?是的,这应该有效。集成 $Z \cdot dX \wedge dY$ 也可以,而且应该更快。
    • 我的意思是将体积积分转换为表面积分并计算简单形状的积分总和。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        相关资源
        最近更新 更多