轻量级Delaunay三角剖分库(适用于c ++)

时间:2009-09-18 21:51:16

标签: c++ geometry triangulation cgal

我想玩一些(2D)Delaunay三角测量,我正在寻找一个相当小的库来工作。我知道CGAL,但我想知道是否有一些相当简单和直接的东西。

我想做的事情:

  • 创建任意点集的三角剖分
  • 找到任意点所在的三角形,并获取顶点
  • 创建三角测量图像(可选)

建议?

3 个答案:

答案 0 :(得分:12)

您应该稍微详细说明一下您的目标,以便提供更多相关答案,但让我首先提一下Triangle,这是一个用C语言编写的2D Delaunay生成工具,可以同时用作一个独立的程序,或者从你自己的代码调用。

然后,关于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;
}

答案 1 :(得分:3)

另见poly2tri,看起来不错:https://github.com/greenm01/poly2tri

答案 2 :(得分:0)

我使用Gnu Triangulated Surface library进行2D Delaunay三角测量,效果很好。调用有点奇怪,因为它使用了OOP-in-C GLib样式,但它很容易wrapped up