いくつかの (2D) Delaunay 三角形分割をいじりたいと思っており、使用できる適度に小さいライブラリを探しています。私は CGAL のことは知っていますが、かなりシンプルでわかりやすいものがあるのではないかと考えていました。
私がやりたいこと:
- 任意の点集合の三角形分割を作成する
- 任意の点が含まれる三角形を見つけ、頂点を取得します
- 三角測量の画像を作成する (オプション)
提案?
いくつかの (2D) Delaunay 三角形分割をいじりたいと思っており、使用できる適度に小さいライブラリを探しています。私は CGAL のことは知っていますが、かなりシンプルでわかりやすいものがあるのではないかと考えていました。
私がやりたいこと:
提案?
より関連性の高い回答を提供できるように、おそらく目標を少し詳しく説明する必要がありますが、最初にTriangleについて言及させてください。これは、C で記述され、スタンドアロン プログラムとしても、あなた自身のコード。
次に、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;
}
poly2triも参照してください。見栄えがします:https ://github.com/greenm01/poly2tri
2D Delaunay 三角形分割にGnu Triangulated Surface ライブラリを使用しましたが、うまく機能しました。OOP-in-C GLib スタイルを使用しているため、呼び出すのは少し奇妙ですが、簡単にラップできます。