Легкий библиотеку trianguation Делоне (для C++) [закрыт]
Я хотел бы поиграть с некоторыми (2D) триангуляциями Делоне и ищу достаточно небольшую библиотеку для работы. Я знаю о CGAL, но мне было интересно, есть ли что-то довольно простое и простое.
вещи, которые я хотел бы сделать:
- создать триангуляцию произвольного набора точек
- найти треугольник, в котором находится произвольная точка, и получить вершины
- создать изображение триангуляции (необязательно)
предложения?
3 ответов
вы, вероятно, должны немного детализировать свои цели, чтобы можно было дать более релевантные ответы, но позвольте мне сначала упомянуть треугольник, инструмент генерации 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 Triangulated Surface library для 2D триангуляции Делоне, и это сработало хорошо. Немного странно звонить, потому что он использует этот стиль OOP-in-C GLib, но это может быть легко завернут.