2D基元繪圖

基元也稱爲圖元,是繪圖時的最小基本單位

直線和圓的光柵化

光柵化(rasterization):
光柵化也稱爲掃描轉換(scan conversion);
是從向量圖到像素矩陣的轉換。

確定哪些像素在由頂點表示的圖元內部
生成片段集合
片段有位置值(像素位置)和由頂點屬性值插值得到的顏色、紋理座標和深度等其他屬性

直線的光柵化

介紹以下這兩種算法:基礎算法,中點法

1.基礎算法

平凡算法(無增量版本 )

y = m.x+p
x: 1->n
顯示(x,round(m.x+p))


DDA(增量版本)

y = m.x + p
x[i+1] = x[i] + dx
y[i+1] = y[i] + m.dx


對於這兩種基礎算法來說,如果斜率m>1的話,就要交換x和y的角色

2.中點法

又稱作Bresenham算法,無需近似.適用於斜率在0-1,對於大於1的,交換x和y的角色,對於斜率爲負的,採用對稱法描圖

決策函數:F(Mi)=ax - by + c
已知上一個點的座標,把中點代入
F>0,採用NE
F<0,採用SE
F=0,默認採用SE

圓的光柵化

中點法

原理:我們只描述x在[0,R/sqrt(2)],其餘的點由對稱性獲得
算法

隱式方程:F(x,y)=x² + y² -R²
決策函數:F(M)=(x[p]+1,y[p]-0,5)
如果F<0,選E,否則,選SE
F(Mi+1)=F(Mi)+2x[p]+1(選擇E)
F(Mi+1)=F(Mi)+2x[p]-2y[p]+2

橢圓的光柵化

中點法

描繪區間:[0,a]
其他點通過對稱性獲得

隱式方程:F()=b²x²+a²y²-a²b²=0
當切線斜率大於-1的時候選擇E或者SE
當切線斜率小於-1的時候選擇S或者SE

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