關於多邊形的布爾運算

在計算機圖形學中,經常遇到如何計算兩個多邊形之間交集的情況,這其實就是一種多邊形的布爾運算的問題。

多邊形必定會把平面分區爲兩個分離的區域:內部區域和外部區域。我們可以這樣定義,多邊形的每一條線形對象都具有與其相關的法線向量,法線所指向的區域標爲“外部”;相反的區域爲“內部”。如果線形對象按指定方向前進時,內部區域位於左邊,而外部位於右邊。這樣我們就明確的劃分了內部區域和外部區域。對於與多邊形相關的布爾運算,其實和數集的布爾運算基本相同,本次的內容我們主要介紹以下幾種:

1、反:反轉內部和外部區域。如何明確定義了邊線形的法線向量或前進方向,反也就是把這兩個方向全部取反就可以得反轉內部和外部區域的效果。應該比較容易理解;

2、交:顧名意思,也就是取兩個多邊形內部區域相交的部分;

3、並:兩個多邊形的聯合;

4、差:一個多邊形差去另一個多邊形的部分。

5、異或:兩個多邊形並完之後,差去兩者交的部分。

 

已經有很多方法用來解決多邊形的布爾運算問題,其中可以大家瞭解最多的就是直接用空間分區二叉樹的方法來實現(空間分區二叉樹---在圖形學中的應該還是非常多的,以後做爲一個新的一篇專門介紹一下自己的理解吧)

1、           反:對於反處理是比較簡的,假設多邊形的數據結構保存了邊,通過反轉第一條邊的次序來實現反運算。

2、           交:可以用非常簡間的方法來實現。如果AB相交,那麼A的每一條與B相交的邊,保留這些邊位於B內的部分;類似,保留B位於A內的部分。如果AB都有很多邊,那麼時間複雜度就很高是Onm)級的。由於位於二叉分區直線的一側的A的邊不需要與位於另一側的B邊進行比較,因些利用二叉樹可以減少比較次數。其實,二叉樹的方法並不是唯一的方法,但所有方法的焦點:找到一對相交的邊

3、           其它的三種運算都可以通過上兩種去簡單的操。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章