CGAL: триангуляция Делоне против триангуляции в примере CGAL - PullRequest
0 голосов
/ 10 мая 2019

В своей работе мне нужно получить первую оболочку соседей Вороного для фокальной частицы.Для этого я использую триангуляцию Делоне, которая является двойным графом тесселяции Вороного.Версия CGAL, которую я использую, - 4.7.Я всегда использовал базовый код в CGAL manual_4.7 в качестве шаблона для создания триангуляции Делоне.Моя проблема с заголовками и 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 одинаковы и соответствуют второму примеру.Поскольку мне нужна триангуляция со свойством пустого круга, и мне просто нужно получить индексы соседних вершин в триангуляции Делоне, приводит ли первая также к тем же результатам?Я могу проверить их на некоторые баллы, но я просто сомневаюсь, что если они дают одинаковые результаты для каждого набора баллов?

1 Ответ

1 голос
/ 13 мая 2019

Это приводит к точно таким же результатам.

Для более подробного объяснения: периодическая триангуляция предполагает структуру данных триангуляции с вершинами и гранями, которые предоставляют определенное количество функций и членов, описываемых концепциями (см. Понятия P2T2 ).В CGAL 4.7 классы вершин и граней не удовлетворяли этим требованиям: им не хватало некоторой периодической информации, которая используется только в нескольких функциях P2T2.Однако все скомпилировалось и работало просто отлично, потому что примеры не вызывали эти несколько функций.Некоторые более поздние компиляторы были слишком усердны и решили, что хотят иметь возможность компилировать все функции класса, даже если те, которые не были вызваны, и, таким образом, используемые вершины и базовые классы больше не удовлетворяли.

См. Также https://github.com/CGAL/cgal/pull/3624.

...