在我的工作中,我需要获取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.14和Software Design 4.7是相同的,并且与第二个示例匹配。由于我需要使用空圆属性进行三角剖分,并且只需要检索Delaunay三角剖分中的相邻顶点的索引,因此第一种方法是否也会得到相同的结果? 我可以检查它们的某些点,但是我只是怀疑它们是否对每组点都产生相同的结果?
答案 0 :(得分:1)
这将导致完全相同的结果。
更详细的解释:周期性三角剖分期望三角剖分数据结构具有顶点和面,这些顶点和面提供一定数量的功能和成员,如概念所描述(请参见P2T2 concepts)。在CGAL 4.7中,顶点和面类不满足这些要求:它们缺少一些仅在P2T2的某些功能中使用的周期性信息。但是,所有示例均已编译并运行良好,因为示例未调用这几个函数。一些较新的编译器过分热心,并决定他们希望能够编译该类的所有函数,即使那些未调用的函数也是如此,因此正在使用的顶点和基类不再令人满意。