2010-08-24 64 views
8

Tôi phải tạo hình tam giác 2d từ danh sách 2 điểm với điều kiện: độ dài của cạnh bất kỳ không được dài hơn hằng số được xác định trước.Tạo hình tam giác 2d từ 2d điểm

Something như thế này: alt text

Bạn có biết bất kỳ thuật toán có thể làm điều này? Hoặc bất kỳ tư vấn?

Cảm ơn!

Trả lời

7

Hãy thử Delaunay triangulation, sau đó xóa bất kỳ cạnh nào quá dài.

Từ bài viết trên, bạn sẽ thấy liên kết đến CGAL's 2D triangulation page.

+0

+1 cho tam giác Delaunay. Điều này vốn đã hình thành các tam giác "cân bằng" tốt. Điều này nên làm một công việc hợp lý của việc giảm thiểu các cơ hội của các cạnh quá dài, nhưng nó không thực hiện bất kỳ đảm bảo về độ dài cạnh cụ thể. Tôi không nghĩ rằng bạn có thể chỉ cần loại bỏ các cạnh quá dài, nhưng nếu có một vấn đề, có vẻ như không (mặc dù không thể không?) Rằng có một triangulation thay thế hoạt động. Rắc rối là, ngay cả khi nó có thể (không chắc chắn - hình học tính toán của tôi là gỉ) nó có thể sẽ khó tìm. Nó có thể là một loại thử nghiệm tất cả mọi thứ có thể xảy ra. – Steve314

2

Đầu tiên, tạo tất cả các cạnh có thể (tức là kết nối một cặp đỉnh gần với hằng số). Sau đó, khi hai trong số họ cắt nhau, loại bỏ một trong số họ. Lặp lại bước này cho đến khi không có nút giao.

Giải pháp này khá nguyên thủy, có thể làm điều đó nhanh hơn.

1

Tôi thích câu trả lời svick của -

khi thực hiện tôi sẽ làm như sau

  1. tính toán ranh giới giữa mỗi cặp điểm
  2. Sắp xếp danh sách theo chiều dài
  3. Hủy bỏ tất cả các dòng dài hơn ngưỡng của bạn
  4. Tiếp tục xuống danh sách (dài nhất đến ngắn nhất) nếu nó đi qua một dòng khác rồi xóa nó.
Các vấn đề liên quan