【问题标题】:How do I extract a 2D slice from 3D geometry from plane intersection?如何从平面相交的 3D 几何图形中提取 2D 切片?
【发布时间】:2008-10-16 09:51:25
【问题描述】:

最近,我们的团队面临着在平面和一些 3D 几何体(三角形集)之间构建 2D 切片的任务。谷歌并没有像我们希望的那样有帮助,所以我们把注意力转向这里,看看是否有人遇到过这个问题并提供可能的解决方案。也需要链接。

找到交点本身并不是一项艰巨的任务,但确保正确生成三角形并使用正确的角构成是我们的一项艰巨任务。我们只是缺乏从任意模型中构建三角形的数学/理解。

如果您在理解我们正在尝试做的事情时遇到问题,想象一下这种情况:

一个兔子模型被加载到程序中。接下来,“激光”穿过太空,将兔子切成两半。激光切割的那个薄片就是我们想要生成的切片。它应该是一个二维三角形集。如果激光不适合你(没有双关语),想想刀、飞机,任何能在平面上切东西的东西。

提前致谢。

【问题讨论】:

    标签: 3d geometry 2d geometry-slice


    【解决方案1】:

    如果您未绑定任何特定软件,请在 ParaView (paraview.org) 或 ParaViewGeo (paraviewgeo.mirarco.org) 中打开您的数据集。

    两者都有一个名为 Slice 的过滤器,可以完全按照您的要求进行操作,并且都允许您将数据保存回来。

    ParaViewGeo 支持勘探/采矿/地质行业常用的数据格式(GoCad、DataMine 等),这是这两款软件之间唯一真正的区别。

    这些软件包中还有许多其他可用的过滤器,您可能会觉得有趣,例如 Clip(将您的兔子切成两半并查看其中的一半)和 Threshold(假设您为兔子的某些部分分配了值,例如区域 id 就像耳朵、鼻子、眼睛、脚等,您可以设置“阈值”,以便只留下这些部分以供查看)

    【讨论】:

      【解决方案2】:

      我真的不知道你所说的“角合成”是什么意思,但我想这是为了获得不太尖锐的三角形。

      我还想你的问题可以抽象为轮廓的三角剖分?

      如果是这样,我相信你可以在网上找到很多方法。

      我会尝试的一种方法是:

      1. 用点填充轮廓。点的密度应反映轮廓上点的密度。更好的是,当您远离中心时,密度应该会降低。
      2. 使用 Delaunay 三角剖分进行三角剖分(QHull 提供了一种高效的实现方式)

      对于第一点,飞镖算法应该可以解决问题,并使用可变密度来优化第二步。这意味着:您投掷“飞镖”以找到您的分数,但如果飞镖最终离它的邻居太近,您将其移除并扔一个新的。

      【讨论】:

      • 一定要先试试 Delaunay。
      【解决方案3】:

      平面和三角形的交点是线段或什么都不是(忽略三角形正好在平面内的退化情况)。

      因此,您的激光/刀具扫描/切割兔子模型三角形的结果是一系列线段。我不确定您如何/为什么希望得到一个“二维三角形集”。

      如果您想获取由这些线段形成的(可能是非凸的)多边形并用三角形“填充”它们,CGAL's polygon tools 可能会完成这项工作(我猜是上面的几张图片页面类似于您要实现的目标)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 2021-07-22
        相关资源
        最近更新 更多