Облегченная библиотека триангуляции Делоне (для c ++) [закрыта]
-
22-07-2019 - |
Вопрос
Я хотел бы поиграть с некоторыми (2D) триангуляциями Делоне и ищу достаточно небольшую библиотеку для работы.Я знаю о CGAL, но мне было интересно, есть ли там что-нибудь достаточно простое и прямолинейное.
Вещи, которые я хотел бы сделать:
- создайте триангуляцию произвольного набора точек
- найдите треугольник, в котором находится произвольная точка, и извлеките вершины
- создайте изображение триангуляции (необязательно)
Предложения?
Решение
Вероятно, вам следует немного детализировать свои цели, чтобы можно было получить более релевантные ответы, но позвольте мне сначала упомянуть Треугольник, инструмент генерации 2D Delaunay, который написан на C и может использоваться как отдельная программа, так и вызываться из вашего собственного кода.
Затем, что касается CGAL, вот типичный небольшой пример, на случай, если вы все еще рассматриваете его:
#include <vector>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Delaunay;
typedef K::Point_2 Point;
void load_points(std::vector< Point >& points)
{
points.push_back(Point(1., 1.));
points.push_back(Point(2., 1.));
points.push_back(Point(2., 2.));
points.push_back(Point(1., 2.));
}
int main()
{
std::vector< Point > points;
load_points(points);
Delaunay dt;
dt.insert(points.begin(), points.end());
std::cout << dt.number_of_vertices() << std::endl;
return 0;
}
Другие советы
Смотрите также poly2tri, это выглядит красиво: https://github.com/greenm01/poly2tri
Я использовал Библиотека триангулированных поверхностей Gnu для 2D-триангуляции Делоне, и это сработало хорошо.Немного странно вызывать, потому что он использует этот бойкий стиль ООП-in-C, но его легко можно завернутый в.