數值微分(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表示象素的顏色和灰度。
舉例:用dda方法掃瞄轉換連線兩點p0(0,0)和p1(5,2)的直線段。
xint(
y+0.5)
y+0.5
0 0 0
1 0 0.4+0.5
21 0.8+0.5
31 1.2+0.5
42 1.6+0.5
圖2.1.1 直線段的掃瞄轉換
注意:上述分析的演算法僅適用於
|k|
≤1的情形。在這種情況下,x每增加1,y最多增加1。當
|k|
> 1時,必須把x,
y地位互換,
y每增加1,
x相應增加1/k
。在這個演算法中,y與
k必須用浮點數表示,而且每一步都要對
y進行四捨五入後取整,這使得它不利於硬體實現。
直線的掃瞄轉換演算法
這是第一篇部落格,順便深入學習一下markdown語法。之後的圖形學文章都使用c 實現。數值微分法 中點畫線法 bresenham畫線演算法 數值微分法通過計算直線的斜率,計算每個x對應的y座標,並取畫素x,round y 本方法直觀可行,但執行效率低。由於每步都需要進行浮點乘法運算與捨入運算,故需...
多邊形掃瞄轉換演算法
1.多邊形的頂點表示轉換為多邊形的點陣表示 1 頂點表示 用多邊形的頂點的序列來描述多邊形,幾何意義強 佔記憶體少。2 點陣表示 用位於多邊形內的畫素的集合來描述多邊形。3 轉換基本思想 按掃瞄線順序,計算掃瞄線與多邊形的相交區間,再用要求的顏色顯示這些區間的所有象素 2.x掃瞄線演算法的演算法步驟...
直線掃瞄演算法
每次想寫點東西的時候,都不知道該寫點什麼,想起來在ai for game developer上看到使用bresenham演算法來做tile地形中的追逐和逃避演算法,正好可以寫點關於直線畫法的東西,這也是計算機圖形學中的基本圖元生成演算法了,還是比較簡單的。很多人都寫過,網上資料也很多,這裡也就不怕再...