2009-09-18 10 views
19

私はいくつかの(2D)Delaunay三角測量で遊んでみたいと思っています。私はCGALを認識していますが、そこにはかなり単純で直接的なものがあるのだろうかと思っていました。私がしたいLightweight Delaunay Trianguationライブラリ(C++用)

もの:

  • 任意の点はである点
  • 検索三角形の任意の組の三角形分割を作成し、頂点
  • は、三角測量の画像を作成フェッチ(オプション)

提案ですか?

+0

どの次元では? – Camille

+0

ライブラリーにする必要がありますか、スタンドアロンのプログラムは問題ありませんか? – Camille

+0

スタンドアロンプ​​ログラムはおそらくOKではないでしょう。私はこれをより大きなソフトウェアツールに統合しようとしています。 –

答えて

11

より適切な回答を提供できるように、目標を詳細に記述する必要がありますが、最初にCで書かれた2D 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

0

私は2Dドロネー三角形分割のためのGnu Triangulated Surface libraryを使用しましたし、それがうまく働きました。そのOOP-in-C GLibスタイルを使用しているために少し奇妙ですが、簡単にwrapped upになります。

3

も参照してくださいpoly2tri、それは良さそうに見えます:https://github.com/greenm01/poly2tri

+0

これは拘束されたdelaunayのためのものですが、あなたがランダムな点群を使用する場合、これがうまくいくかどうかはわかりません。 – jokoon