我想玩一些(2D)Delaunay三角測量,並且正在尋找一個合理的小型庫來處理。我知道CGAL,但我想知道是否有相當簡單和直接的東西。輕量級Delaunay三角測量庫(for C++)
事情我想這樣做:
- 創建點的任意集的三角
- 發現三角形的任意一點是,並獲取頂點
- 創建三角的圖像(可選)
建議?
我想玩一些(2D)Delaunay三角測量,並且正在尋找一個合理的小型庫來處理。我知道CGAL,但我想知道是否有相當簡單和直接的東西。輕量級Delaunay三角測量庫(for C++)
事情我想這樣做:
建議?
您應該詳細描述一下您的目標,以便提供更多相關答案,但首先讓我提一下使用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;
}
我用Gnu Triangulated Surface library二維Delaunay三角,效果不錯。調用起來有些奇怪,因爲它使用了OOP-in-C GLib風格,但它很容易被wrapped up。
又見poly2tri,它看起來不錯:https://github.com/greenm01/poly2tri
這是用於約束delaunay,我不確定這將工作,如果您使用隨機的一組點。 – jokoon
在哪個維度? – Camille
你是否需要它成爲一個圖書館,或獨立的程序可以嗎? – Camille
獨立程序可能不會好。我正在考慮將其整合到更大的軟件工具中。 –