多邊形掃瞄轉換演算法

2021-09-05 11:44:09 字數 1108 閱讀 4118

1.多邊形的頂點表示轉換為多邊形的點陣表示

1)頂點表示:用多邊形的頂點的序列來描述多邊形,幾何意義強、佔記憶體少。

2)點陣表示:用位於多邊形內的畫素的集合來描述多邊形。

3)轉換基本思想:按掃瞄線順序,計算掃瞄線與多邊形的相交區間,再用要求的顏色顯示這些區間的所有象素

2.x掃瞄線演算法的演算法步驟

1)得到多邊形頂點的最小和最大y值(ymin和ymax)。

2)從y=ymin到y=ymax,每次用一條掃瞄線進行填充。

3)對一條掃瞄線填充的過程可分為四個步驟:

①求交:計算掃瞄線與多邊形所有邊的交點;

②排序:把所有交點按x座標遞增進行排序;

③交點配對:配對第1、2個交點等,每對交點代表掃瞄線與多邊形的乙個相交區間;

④區間填色:把相交區間內的畫素設定成填充色。

3. 對交點座標的取整的特殊處理

規則1:交點落於掃瞄線上兩個相鄰畫素之間時(x為小數):

交點位於左邊界之上,向右取整;

交點位於右邊界之上,向左取整;

規則2:交點位於邊界象素上時(x為整數)

落在右邊邊界上的畫素不予填充,掃瞄線與多邊形的相交區間左閉右開。避免兩個多邊形的共享邊重複繪製。

4. 當掃瞄線與多邊形頂點相交時,交點的取捨要保證交點正確配對.

若共享頂點的兩條邊分別落在掃瞄線的兩邊,交點只算乙個;

若共享頂點的兩條邊在掃瞄線的同一邊,這時交點作為零個或兩個。

實際處理:只要檢查多邊形頂點的兩條邊的另外兩個端點的y值,兩個y值中大於交點y值的個數是0,1,2,來決定取0,1,2個交點。

5. 有效邊表演算法(y連貫性演算法)

為了簡化交點的計算,利用掃瞄線連貫性和邊連貫性進行多邊形掃表轉換的演算法:有效邊表演算法。

有效邊表資料結構:

邊表資料結構:

乙個縱向鍊錶,鍊錶的長度為多邊形所占有的掃瞄線數,鍊錶的乙個結點(稱為乙個桶)對應多邊形覆蓋的一條掃瞄線。

將每條邊的資訊鏈入與該邊最小y座標(ymin )相對應的桶處。也就是說,若某邊的較低端點為ymin,則該邊就放在相應的掃瞄線桶中。

OpenGL 多邊形的掃瞄轉換

一 理論 求交 計算掃瞄線與多邊形各邊的交點 排序 把所有交點按遞增順序進行排序 交點配對 第乙個與第二個,第三個與第四個 保證交點的個數為偶數個 區間填色 把這些相交區間內的畫素置成不同與背景色的填充色 在填充過程中應該考慮兩個問題 一是當掃瞄線與多邊形頂點相交時,交點的取捨問題。二是多邊形邊界上...

多邊形的掃瞄轉換與區域填充

在計算機圖形學中,多邊形有兩種重要的表示方法 頂點表示和點陣表示。頂點表示是用多邊形的頂點序列來表示多邊形。這種表示直觀 幾何意義強 佔記憶體少,易於進行幾何變換,但由於它沒有明確指出哪些象素在多邊形內,故不能直接用於面著色 點陣表示是用位於多邊形內的象素集合來刻畫多邊形。這種表示丟失了許多幾何資訊...

直線段掃瞄轉換演算法

數值微分 dda 法 設過端點p0 x0,y 0 p1 x1,y1 的直線段為l p0,p 1 則直線段 l的斜率dda畫線演算法程式 void ddaline int x0,int y0,int x1,int y1,int color 注意 我們這裡用整型變數color表示象素的顏色和灰度。舉例 ...