2009-09-18 69 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