2008-10-16 81 views
2

最近我们的团队正面临着在一个平面和一些3D几何体(一组三角形)之间建立2D切片的任务。谷歌并没有像我们希望的那样有帮助,所以我们把注意力转移到这里,看看有没有人遇到过这个问题,并提供可行的解决方案。链接也是通缉。如何从平面相交中从三维几何中提取二维切片?

找到交点本身并不是一项艰巨的任务,但确保三角形正确生成正确的角落组成正在与我们玩一场艰难的比赛。我们只是缺乏数学/理解如何从arbirtrary模型的三角构造完成。

如果你有问题的理解我们正在试图做的,想象一下这样的场景:

一个小兔子模型装入程序。接下来一个“激光”穿越太空,将兔子切成两半。激光切割的薄片就是我们想要生成的切片。它应该是一个二维三角形集。如果激光不会为你切割(不是双关语),请考虑刀,飞机,任何在飞机上切割东西的东西。

在此先感谢。

回答

1

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

我还想你的问题可以抽象成轮廓的三角形?

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

一种方法我会尝试是:

  1. 填写与人之间的轮廓。点的密度应该反映轮廓上点的密度。更好的是,当你离开中心时密度应该减小。 (QHull提供了一种高效的实现)
  2. 三角测量使用Delaunay三角

对于第一点,飞镖投掷算法应该做的伎俩,具有可变密度以优化第二步骤。这意味着:你扔'飞镖'来找到你的观点,但是如果一个飞镖离它的邻居太近,你就把它移开并投掷一个新的。

+0

肯定尝试德劳内第一。 – 2008-10-16 12:40:14

0

一个平面和一个三角形的交点是一个线段或没有任何东西(忽略三角形的退化情况正好在平面中)。

因此,在兔子模型三角形上激光/刀扫描/切片的结果是线段的集合。我不知道为什么你会期望得到一个“二维三角形”作为结果。

如果你想采用由这些线段组成的(可能是非凸的)多边形并用三角形“填充”,CGAL's polygon tools可能会完成这项工作(我的猜测是该页面上的两张图片就像你想要达到的目标)。

2

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

两者都有一个名为Slice的过滤器,可以非常准确地完成您正在谈论的内容,并且都允许您将数据保存回去。

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

这些软件包中还有许多其他可用的过滤器,您可能会发现它们很有趣,例如Clip(将兔子切成两半并查看其中的一半)和Threshold(例如,将值分配给兔子的某些部分,例如区域ID像耳朵,鼻子,眼睛,脚等,你可以“阈值”,以便只有那些部分留下来查看)

相关问题