2011-09-05 35 views
6

Trong hình ảnh bên dưới, bạn thấy trong (1) hình tam giác và hình tròn. Với một điểm X chuyên dụng trong tam giác đó, tôi muốn cắt bỏ mọi thứ không thể nhìn thấy được từ điểm này. Không có vấn đề gì khi chỉ xóa vòng tròn bằng thuật toán khác biệt đa giác đơn giản như trong (2). Nhưng loại thuật toán nào tôi có thể sử dụng để có được một đa giác như trong (3)?Cắt đa giác: Chỉ vùng "có thể xem"

Đa giác luôn đơn giản.

Chỉnh sửa: Vòng tròn chỉ là một ví dụ. Mọi đa giác đơn giản đều có thể thực hiện được.

Image #1

Bạn có thể hình nhu cầu của tôi bằng cách tham gia một cái nhìn vào hình ảnh của trò chơi "Commandos - Đằng sau chiến tuyến địch":

Image #2

+0

+1, Commandos. Trò chơi tuyệt vời. –

+0

Nếu bạn không nhận được câu trả lời, bạn có thể trả tiền thưởng. –

+0

Câu hỏi của bạn có vẻ rất giống với http://stackoverflow.com/q/5892539/359538 –

Trả lời

3

Đây là ý tưởng cơ bản.

Tôi giả định một vấn đề chung chung hơn, nhưng sẽ dễ dàng hơn để thích ứng với vấn đề của bạn: được cung cấp một hình dạng, một điểm và một bộ hình dạng hình học, chúng tôi muốn loại bỏ khỏi kế hoạch khu vực không nhìn thấy được từ điểm đó.

Điều chúng tôi muốn thực hiện là, đối với mỗi hình dạng, đó là starting_polarending_polar điểm, đó là 2 điểm có góc cực tối thiểu và cực đại thuộc về hình dạng.

Bây giờ chúng tôi sẽ xóa từ plan hình dạng và chúng tôi sẽ loại bỏ các quadrilateral hình thành bởi các điểm: starting_polar, ending_polar, và các nút giao thông giữa 2 đường thẳng (x, starting_polar)(x, ending_polar) và ranh giới của plan.

Trong trường hợp của bạn, kế hoạch sẽ chỉ đơn giản là triangle.

+0

Âm thanh hứa hẹn tôi sẽ thử. – tur1ng

+0

nó sẽ hoạt động chắc chắn cho hình dạng lồi; nhưng tôi nghĩ rằng nếu một hình dạng là lõm và bạn có thể chia nó thành các hình convex, nó sẽ vẫn làm việc lặp lại nó cho tất cả các hình con của hình dạng – Simone

0

C song song với D, G song song đến A , B song song với F, D là đường kính.

Polygon

+0

Xin lỗi nhưng tôi quên đề cập đến rằng vòng tròn chỉ là một ví dụ. Mọi đa giác đơn giản đều có thể thực hiện được. – tur1ng

+0

Không, dù sao câu trả lời Simone cung cấp giải pháp tốt hơn cho mọi trường hợp :) – HRgiger

+0

Đối với bất kỳ trường hợp nào trong đó hình dạng lồi..if là lõm nó không luôn hoạt động hoàn hảo ... nhưng tôi nghi ngờ rằng nếu chúng ta có thể chia nhỏ từng hình dạng lõm trong hình dạng lồi thì vấn đề có thể giải được cho hình dạng lõm quá – Simone

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