2011-09-05 117 views
6

在下圖中,您會看到(1)一個三角形和一個圓。給定該三角形中的專用點X,我想從這一點上剪掉一切看不見的東西。用(2)中的簡單多邊形差分算法去除圓形沒有問題。但是,我可以使用什麼樣的算法來獲得像(3)中的多邊形?多邊形裁剪:只有「可見」區域

多邊形總是很簡單。

編輯:圓只是一個例子。每個簡單的多邊形應該是可能的。

Image #1

你可以像我的需要,採取了看比賽的形象 「盟軍敢死隊 - 敵後」:平行於d

Image #2

+0

+1,Commandos。優秀的遊戲。 –

+0

如果你沒有得到答案,你可能會提供賞金。 –

+0

你的問題看起來非常類似於http://stackoverflow.com/q/5892539/359538 –

回答

3

這是基本的想法。

我假設一個更一般的問題,但它會更容易適應您的問題:給定一個包含所有形狀,一個點和一組幾何形狀的​​,我們希望從計劃中刪除從該點不可見的區域。

我們想要做的是得到,對於每個形狀,它是starting_polarending_polar點,即具有屬於該形狀的最小和最大極角的2個點。

現在,我們將從​​刪除形狀和我們將刪除這些點所形成的quadrilateralstarting_polarending_polar和兩條直線(x, starting_polar)(x, ending_polar)和​​的邊界之間的交叉點。

在你的情況下,計劃將只是triangle

+0

聽起來很有希望我會試試看。 – tur1ng

+0

它肯定會適用於凸形;但我認爲,如果一個形狀是凹的,你可以將它分成凸子形,這仍然可以對所有子形狀重複它 – Simone

0

C,並行G至A ,B平行於F,D是直徑。

Polygon

+0

對不起,但我忘了提到,圓只是一個例子。每個簡單的多邊形應該是可能的。 – tur1ng

+0

不,無論如何,西蒙娜答案提供更好的解決方案,對於任何情況下:) – HRgiger

+0

對於任何情況下,凸.. ..形狀是凹的它並不總是工作完美......但我懷疑,如果我們可以細分每個凹形在凸形狀,那麼問題是可以解決凹形 – Simone