2009-09-18 37 views
19

我想玩一些(2D)Delaunay三角测量,并且正在寻找一个合理的小型库来处理。我知道CGAL,但我想知道是否有相当简单和直接的东西。轻量级Delaunay三角测量库(for C++)

事情我想这样做:

  • 创建点的任意集的三角
  • 发现三角形的任意一点是,并获取顶点
  • 创建三角的图像(可选)

建议?

+0

在哪个维度? – Camille

+0

你是否需要它成为一个图书馆,或独立的程序可以吗? – Camille

+0

独立程序可能不会好。我正在考虑将其整合到更大的软件工具中。 –

回答

11

您应该详细描述一下您的目标,以便提供更多相关答案,但首先让我提一下使用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; 
} 
+1

谢谢你指点我三角。这是一个非常简单易用的程序。 –

+0

这些方法中的任何一种都可以用于本机iPad应用程序吗? – Andre

+0

@AndrewProck你用它作为lib吗?因为我没有找到任何代码示例使用这个三角形lib – jokoon