CGAL使用Locate()在三角测量表面上查找单元格

时间:2014-06-19 22:38:36

标签: triangulation cgal delaunay

使用CGAL,我在单位球上有一组随机点的3D Delaunay三角剖分,我通过以下方式获得:

Delaunay T(points.begin(),points.end());

现在,我希望能够做的是查询T(使用locate()或类似的东西)来找到任意点的曲面 facet的三个顶点(也是单位球体)包含在里面。

当我使用locate()时,我有时将内部单元格作为结果,其中包括无限顶点。我不想要任何这些。我只想要表面刻面,并且能够在任何我试图找到的任意点上执行此操作。试图解决这个问题的时间比我想象的要长很多。

任何帮助都有很大的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

所以我会使用find_conflit()CGAL::Emptyset_iterator来表示你,因为你不需要这些。 在bfit中,你将获得“洞”边界的方面,并且洞是与你的点相冲突的所有四面体(其外接球体包含点,具有无限顶点的自然延伸)。 因此,对于bfit,例如使用std::back_inserter将它们放入标准容器中。然后,迭代这些,测试它们是否是有限的方面。你得到的有限方面是那些将你的观点与三角测量的其余部分分开的方面,因此,你可以用球体的中心进行orientation()测试,得到你感兴趣的那个。