標籤:
多邊形填充區
一個
多邊形(polygon)在數學上定義為由三個或者更多稱為頂點的座標位置描述的平面圖形,這些頂點由稱為多邊性的邊(edge或者side)順序串連。
進一步來看,幾何上要求多邊形的邊除了端點之外沒有其他公用點。因此,根據定義,一個多邊形在其單一平面上必須有其所有的頂點且邊之間無交叉。多邊形的例子有三角形、矩形、八邊形和十六邊形等。有時,任一有封閉折線邊界的平面圖形暗指一個多邊形,而若其沒有交叉邊則稱為
標準多邊形(( standard polygon)或
簡單多邊形( simple polygon )。為了避免對象引用的混淆,我們把術語“多邊形”限定為那些有封閉折線邊界且無交叉邊的平面圖形。
在電腦圖形學的應用中,用於指定多邊形的一組頂點並不嚴格地在一個平面上。這可能由數值計算的舍入誤差、對座標位置的選擇錯誤或更一般地由於使用一組多邊形面片逼近曲面而引起。糾正該間題的一種方法是簡單地將指定曲面網分割成三角形。但有時必須保留網路面片的原始形狀,以便開發用平面圖形逼近非平面多邊形的方法。我們將在平面方程的有關內容中討論如何計算這些逼近平面。
10.1多邊形分類
多邊形的一個內角形的所有
內角(infterior angle)是由兩條相鄰邊形成的多邊形邊界之內的角。如果一個多邊形的所有內角均小於180度,則該多邊形為
凸(convex)多邊形。凸多邊形的一個等價定義是它的內部完全在它的任一邊及其延長線的一側。同樣,如果任意兩點位於凸多邊形的內部,其連線也位於內部。不是凸多邊形的多邊形稱為
凹(concave)多邊形。圖3.42給出了凸多邊形和凹多邊形的例子。
術語
退化多邊形(degenerate polygon)常用來描述共線或重疊座標位置的頂點集。共線頂點生成一線段。重疊頂點位置可以產生有多餘線段、重疊邊或長度為0的邊的多邊形。有時術語退化多邊形也用於少於三個座標位置的頂點隊列。為了軟體的魯棒性,圖形軟體包可以拒絕退化或非平面的頂點集。但這要求額外的識別該問題的處理,因此圖形系統常把這種考慮留給程式員。
凹多邊形也會有相關的一些問題。對凹多邊形的填充演算法和其他子程式的實現比較複雜,因此在處理前常將凹多邊形分割成一組凸多邊形以便提高效率。和其他的多邊形預先處理演算法一樣,凹多邊形的分割一般也不包括在圖形函數庫中。OpenGL等圖形軟體包要求所有的填充多邊形為凸多邊形。有些系統僅接受三角形填充區,這將大大簡化許多顯示函數。
10.2識別凹多邊形
凹多邊形中至少有一個內角大於180度。凹多邊形某些邊的延長線會與其他邊相交且有時一對內
點連線會與多邊形邊界相交。因此,我們可以將凹多邊形的這些特徵中的任意一個作為基礎設計別演算法。如果為每一邊建立一個向量,則可使用相鄰邊的叉積來測試凸凹性。凸多邊形的所有向量叉積均同號。因此,如果某些叉積取正值而另一些為負值,可確定其為凹多邊形。圖3.43給出了識別凹多邊形的邊向量、叉積方法。
識別凹多邊形的另一個方法是觀察多邊形頂點位置與每條邊延長線的關係。如果有些頂點在某一邊延長線的一側而其他一些頂點在另一側,則該多邊形為凹多邊形。
電腦圖形學(二)輸出圖元_10_多邊形填充區_1_多邊形分類和識別