2010-05-12 43 views
6

Tôi có một loạt các hình tam giác chồng lên nhau từ một mô hình 3D chiếu vào mặt phẳng 2D. Tôi cần phải hợp nhất mỗi hòn đảo của các hình tam giác chạm vào một đa giác khép kín, không lồi.Hợp nhất các hình tam giác chồng lên nhau thành một đa giác

Đa giác kết quả không được có bất kỳ lỗ nào trong chúng (vì dữ liệu nguồn không).

Nhiều hình tam giác nguồn chia sẻ (dấu chấm động giống hệt nhau) cạnh với các hình tam giác khác trong dữ liệu nguồn.

Cách dễ nhất để thực hiện việc này là gì? Hiệu suất không phải là đặc biệt quan trọng, vì điều này sẽ được thực hiện tại thời điểm thiết kế.

+1

Xem thêm "Liên hiệp các đa giác phức tạp": http://stackoverflow.com/questions/2667748/union-of-complex-polygons – unutbu

Trả lời

2

Hãy thử gpc hoặc Thư viện chung Polygon Clipper.

+0

tiếc là điều này sẽ được sử dụng trong một trò chơi thương mại; không chắc là UManchester sẽ cảm thấy thế nào về điều đó. – nornagon

+1

gpc cũng có giấy phép thương mại. Hơn nữa, gpc liệt kê các thư viện tương tự khác tại http://www.cs.man.ac.uk/~toby/alan/software/#Links. Có lẽ một trong số đó có giấy phép phù hợp hơn. – lhf

2

Hãy tưởng tượng phép chiếu lên mặt phẳng dưới dạng "chế độ xem" của mô hình (tức là hướng chiếu là đường ngắm và phép chiếu là thứ bạn nhìn thấy). Trong trường hợp đó, đường viền của đa giác bạn muốn tính tương ứng với hình bóng của mô hình.

Hình bóng, lần lượt, là một tập hợp các cạnh trong mô hình. Đối với mỗi cạnh trong hình bóng, các khuôn mặt liền kề sẽ có các tiêu chuẩn chỉ cách mặt phẳng hoặc hướng về mặt phẳng. Bạn có thể kiểm tra điều này bằng cách lấy sản phẩm chấm của khuôn mặt bình thường với mặt phẳng bình thường - tìm các cạnh có các chỉ tiêu mặt liền kề có các dấu chấm đối diện với các hướng chiếu.

Khi bạn đã tìm thấy tất cả các cạnh hình bóng, bạn có thể nối chúng lại với nhau thành các đường biên của đa giác mong muốn.

Nói chung, bạn có thể tìm hiểu thêm về phát hiện và tách hình bóng theo các thuật ngữ googling như mesh silouette finding detection. Có thể một nơi tốt để bắt đầu là here.

+0

Điều này không hoàn toàn phù hợp - đối với một, tôi có một số phần mô hình có dự đoán trùng lặp. – nornagon

+0

@nomagon, điểm tốt. Ngoài ra, các mô hình của bạn có bị đóng không? I E. họ có bên trong và bên ngoài như quả cầu hay hình xuyến không? Hay họ chỉ là một loại súp đa giác chung? – brainjam

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