2009-09-18 35 views
19

Tôi muốn chơi xung quanh với một số tam giác Delaunay (2D), và đang tìm kiếm một thư viện nhỏ hợp lý để làm việc. Tôi biết về CGAL, nhưng tôi đã tự hỏi liệu có điều gì đó khá đơn giản và dễ hiểu không.Thư viện tam giác hạng nhẹ Delaunay (cho c + +)

Những điều tôi muốn làm:

  • tạo ra một tam giác của một bộ tùy ý các điểm
  • tìm tam giác một điểm tùy ý là trong, và lấy các đỉnh
  • tạo ra một hình ảnh của tam giác (tùy chọn)

Đề xuất?

+0

Trong kích thước nào? – Camille

+0

Bạn có cần nó là một thư viện, hoặc một chương trình độc lập có thể được chấp nhận không? – Camille

+0

Một chương trình độc lập có thể sẽ không ổn. Tôi đang tìm cách tích hợp nó vào một công cụ phần mềm lớn hơn. –

Trả lời

11

Có lẽ bạn nên nêu chi tiết mục tiêu của mình một chút, để tôi có thể cung cấp thêm câu trả lời có liên quan, nhưng hãy để tôi đề cập đến lần đầu tiên Triangle, công cụ thế hệ 2D Delaunay, được viết bằng C và có thể được sử dụng như một chương trình độc lập hoặc được gọi từ mã của riêng bạn.

Sau đó, khoảng CGAL, đây là một ví dụ nhỏ điển hình, trong trường hợp bạn vẫn xem xét nó:

#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

Cảm ơn bạn đã chỉ cho tôi đến Tam giác. Nó rất đơn giản và dễ sử dụng. –

+0

Có thể sử dụng bất kỳ phương pháp nào trong số các phương pháp này trong ứng dụng iPad gốc không? – Andre

+0

@AndrewProck bạn có sử dụng nó làm lib không? bởi vì tôi không tìm thấy bất kỳ ví dụ mã nào sử dụng hình tam giác này lib – jokoon

3

Xem thêm poly2tri, có vẻ đẹp: https://github.com/greenm01/poly2tri

+0

điều này là để hạn chế delaunay, tôi không chắc chắn điều này sẽ làm việc nếu bạn sử dụng một tập hợp ngẫu nhiên các điểm. – jokoon

Các vấn đề liên quan