CGAL:CGAL示例中的Delaunay三角剖分与三角剖分

时间:2019-05-10 20:31:27

标签: cgal triangulation voronoi delaunay

在我的工作中,我需要获取Voronoi邻居的第一个壳作为焦点粒子。为此,我使用Delaunay三角剖分,这是Voronoi细分的对偶图。我使用的CGAL版本是4.7。我总是使用CGAL manual_4.7中的基本代码作为模板来创建Delaunay三角剖分。我的问题是该示例中的标头和typedef,因为我最近发现它们与最新可用的CGAL 4.14不同。在CGAL 4.7中:

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Periodic_2_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_2_triangulation_traits_2.h>
#include <CGAL/Triangulation_vertex_base_with_info_2.h>
#include <vector>
typedef CGAL::Exact_predicates_inexact_constructions_kernel         K;
typedef CGAL::Periodic_2_triangulation_traits_2<K>                  Gt;
typedef CGAL::Triangulation_vertex_base_with_info_2<unsigned, Gt>   Vb;
typedef CGAL::Periodic_2_triangulation_face_base_2<Gt>              Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb>                 Tds;
typedef CGAL::Periodic_2_Delaunay_triangulation_2<Gt, Tds>          Delaunay;
typedef Delaunay::Point                                             Point;

CGAL 4.14中的

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Periodic_2_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_2_Delaunay_triangulation_traits_2.h>
#include <CGAL/Periodic_2_triangulation_face_base_2.h>
#include <CGAL/Periodic_2_triangulation_vertex_base_2.h>
#include <CGAL/Triangulation_vertex_base_with_info_2.h>
#include <iostream>
#include <vector>
typedef CGAL::Exact_predicates_inexact_constructions_kernel             K;
typedef CGAL::Periodic_2_Delaunay_triangulation_traits_2<K>             Gt;
typedef CGAL::Periodic_2_triangulation_vertex_base_2<Gt>                Vbb;
typedef CGAL::Triangulation_vertex_base_with_info_2<unsigned, Gt, Vbb>  Vb;
typedef CGAL::Periodic_2_triangulation_face_base_2<Gt>                  Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb>                    Tds;
typedef CGAL::Periodic_2_Delaunay_triangulation_2<Gt, Tds>              Delaunay;
typedef Delaunay::Point                                                 Point;

然后,我仔细检查了手册,以了解外植体是否不同。据我了解,Software Design 4.14Software Design 4.7是相同的,并且与第二个示例匹配。由于我需要使用空圆属性进行三角剖分,并且只需要检索Delaunay三角剖分中的相邻顶点的索引,因此第一种方法是否也会得到相同的结果? 我可以检查它们的某些点,但是我只是怀疑它们是否对每组点都产生相同的结果?

1 个答案:

答案 0 :(得分:1)

这将导致完全相同的结果。

更详细的解释:周期性三角剖分期望三角剖分数据结构具有顶点和面,这些顶点和面提供一定数量的功能和成员,如概念所描述(请参见P2T2 concepts)。在CGAL 4.7中,顶点和面类不满足这些要求:它们缺少一些仅在P2T2的某些功能中使用的周期性信息。但是,所有示例均已编译并运行良好,因为示例未调用这几个函数。一些较新的编译器过分热心,并决定他们希望能够编译该类的所有函数,即使那些未调用的函数也是如此,因此正在使用的顶点和基类不再令人满意。

另请参阅https://github.com/CGAL/cgal/pull/3624