如何从平面交叉点从3D几何体中提取2D切片?

时间:2008-10-16 09:51:25

标签: 3d geometry 2d geometry-slice

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

找到交叉点本身并不是一项艰巨的任务,但确保正确生成三角形并使用正确的角落组合正在与我们进行艰苦的比赛。我们只是缺乏对arbirtrary模型中三角形结构如何完成的数学/理解。

如果您在理解我们要做的事情时遇到问题,请想象一下这个场景:

将兔子模型加载到程序中。接下来,“激光”穿越太空,将兔子切成两半。激光切割的薄切片是我们想要生成的切片。它应该是2D三角形集。如果激光不能为你剪切(没有双关语),可以考虑刀,平面,任何在平面上切片的东西。

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

两者都有一个名为Slice的过滤器,它完全符合你所说的内容,并且都允许你将数据保存回来。

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

在这些软件包中还有许多其他过滤器可供您感兴趣,例如Clip(将您的兔子切成两半并查看其中一半)和阈值(假设您为兔子的某些部分指定了值,例如区域ID就像耳朵,鼻子,眼睛,脚等,你可以“阈值”,这样只留下那些部分来查看)

答案 1 :(得分:1)

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

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

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

我会尝试的一种方法是:

  1. 用积分填写你的轮廓。点的密度应反映轮廓上点的密度。更好的是,当你离开中心时,密度会降低。
  2. 使用Delaunay三角剖分进行三角测量(QHull提供了有效的实现)
  3. 对于第一点,投掷镖算法应该采用可变密度来优化第二步。这意味着:你投掷'飞镖'来找到你的分数,但是如果一个飞镖最终离它的邻居太近了,你就把它移走并扔一个新的。

答案 2 :(得分:0)

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

因此,激光/刀扫描/切片穿过兔子模型三角形的结果是线段的集合。我不确定你希望如何/为什么期望得到一个“2D三角形设置”。

如果你想拍摄由这些线段形成的(可能是非凸的)多边形并用三角形“填充”,CGAL's polygon tools可能会完成这项工作(我的猜测是几张图片在那个页面上就像你想要实现的那样。)