我想玩一些(2D)Delaunay三角测量,并且正在寻找一个合理的小型库来处理。我知道CGAL,但我想知道是否有相当简单和直接的东西。轻量级Delaunay三角测量库(for C++)
事情我想这样做:
- 创建点的任意集的三角
- 发现三角形的任意一点是,并获取顶点
- 创建三角的图像(可选)
建议?
我想玩一些(2D)Delaunay三角测量,并且正在寻找一个合理的小型库来处理。我知道CGAL,但我想知道是否有相当简单和直接的东西。轻量级Delaunay三角测量库(for C++)
事情我想这样做:
建议?
您应该详细描述一下您的目标,以便提供更多相关答案,但首先让我提一下使用C语言编写的二维Delaunay生成工具Triangle,该工具可以用作独立程序,或从你自己的代码中调用。
然后,大约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;
}
我用Gnu Triangulated Surface library二维Delaunay三角,效果不错。调用起来有些奇怪,因为它使用了OOP-in-C GLib风格,但它很容易被wrapped up。
又见poly2tri,它看起来不错:https://github.com/greenm01/poly2tri
这是用于约束delaunay,我不确定这将工作,如果您使用随机的一组点。 – jokoon
在哪个维度? – Camille
你是否需要它成为一个图书馆,或独立的程序可以吗? – Camille
独立程序可能不会好。我正在考虑将其整合到更大的软件工具中。 –