为什么CGAL :: Triangulation_3 :: locate不会给你包含你的请求点的四面体的顶点?
问题描述:
我正在使用CGAL::Delaunay_triangulation_3
来生成插值网格。我有三个关于Triangulation_3::locate
的问题。为什么CGAL :: Triangulation_3 :: locate不会给你包含你的请求点的四面体的顶点?
-
在下面,如果
Cell
返回包含点Location
四面体的四个顶点? http://doc.cgal.org/latest/TDS_3/classTriangulationDataStructure__3_1_1Cell.htmlDelaunay_triangulation_3 Mesh(Points.begin(), Points.end()); Cell_handle Cell = Mesh.locate(Location);
什么会
Cell
归还时Location
坐的四面体顶点,边,面吗?Cell
是否仅返回Location
所在的顶点,边的两个顶点,facet的三个顶点?什么将填写Cell->vertex(vertex_no)
,而vertex_no
应该是0,1,2,3?在哪种情况下,由
Cell->vertex(vertex_no)
给出的四个顶点构建的四面体可能不包含点Location
?为什么我有很多这种情况?另外Cell->vertex(vertex_no)
似乎给与高重复的四个顶点的相同组合,而Location
不包围他们? http://doc.cgal.org/latest/Triangulation_3/classCGAL_1_1Triangulation__3.html#a63e8c40604ae19d745b5f83e0e927379
答
注意这里是函数locate()
的几个重载。你应该采用Locate_type lt
,int li
和lj
。这会告诉你,如果查询是在细胞内,在面上,上边缘,或上一个顶点,并li
和lj
会告诉你哪个面,边,或顶点。
你的最后一个环节似乎已经回答您的大多数问题... –
@MarcGlisse是...只是不是很确定......所以第一次是肯定的..第二仿佛'Location'是在边界上,它给这种四面体拿着点(查询)?..中的任何一个,但我的主要困惑是为什么了'Location'(或'query'中的链接)可以躺在其中由'Cell' – saar
给出的四面体之外什么让你觉得这可能发生?如果你有一个(小)测试用例,也许你应该开始使用它。 –