2015-11-07 62 views
0

我試圖讓單調的多邊形,所以我可以三角測量它,但我有正規頂點的問題(一個頂點有一個鄰居在它上面,一個鄰居在它下面: enter image description here我如何知道多邊形的內部是否位於頂點的右側或左側?

的算法手柄定期頂點是混淆了我,因爲我不知道該多邊形是否是在右邊或左邊: enter image description here

的算法是書中計算幾何算法和應用第三版

+0

是「定期頂點」最左邊或多邊形的最右邊的頂點? – MBo

+0

兩者。 http://i.stack.imgur.com/dtyNJ.png –

+0

好的,我在你的問題中插入了圖片鏈接。 – MBo

回答

0

建立從普通的光線指向右側,查找是否相交與邊緣的cts並且得到這些交叉點的​​數量。如果很奇怪,多邊形位於右側。

這種做法是接近點在多邊形算法{} example, discussing non-trivial cases

也許,在書的算法,你得與其他方式提供這些信息。例如,您可能知道步行順序是順時針還是逆時針。

1

首先你計算整個多邊形的簽署AERA。 aera的符號會告訴你多邊形頂點的順序是順時針還是逆時針。

你只需做一次,這是一個廉價的操作。

然後找出如果你有一個左或右定期頂點,你只需要看看以前和一個頂點的索引。有上升或下降。

一張小桌子現在就告訴你,如果你在左側或右側:

Counter-Clockwise Polygon: 
-------------------------- 
Ascending order: Regular vertex is on the left of the polygon 
Descending order: Regular vertex is on the right of the polygon 


Clockwise Polygon: 
-------------------------- 
Ascending order: Regular vertex is on the right of the polygon 
Descending order: Regular vertex is on the left of the polygon 

所以沒必要做任何昂貴的線的交點或點在多邊形測試。

,我實現了算法幾年前,這是一個很大的幫助,分析多邊形的在開始纏繞順序和 - 如果逆時針 - 做任何進一步處理之前扭轉纏繞順序。

這消除了很多,其中控制流依賴於纏繞順序上箱子。你會以更簡潔,更簡單的方式跟隨代碼。

+0

聽起來比多邊形中的點更容易,但我不明白。您的意思是按升序/降序排列?你在談論指數訂單嗎? –

+0

@HansBlanco是的,正是這些指數。如果順時針繪製多邊形,觀察者會看到索引,那麼您會發現查找左側和右側是多麼容易。只要確保你會處理環繞案件。 –

+0

對不起,我還是不明白。例如在圖像中,多邊形是逆時針的。 v2是一個右常規頂點,前一個和下一個頂點的索引是1和3. v10是一個左常規頂點,前一個和下一個頂點的索引是9和11.這有助於瞭解頂點的類型? –

相關問題