引言
當兩個二維的點p1, p2已決定,而我們也知道像素點是不連續的,這時該怎麼在這兩個點中間填上適合的點,讓他們看起來像是由p1, p2連起來的直線呢?
這時我們會使用到由像素點繪製直線用的DDA演算法,這是個相對簡便好理解的直線繪製演算法,我們就使用這個演算法來繪製直線吧!
DDA演算法
演算法的想法與步驟我將列在底下:
DDA演算法的想法是,將x, y分量差較大者當作總像素點數(例如國中學過的邊長3,4,5直角三角形,5那邊是連起來的線,3, 4則分別是x, y分量,則此處邊長為4的邊就是分量差較大者),這樣能確保這條線每個點間都能相連。另一方面,先計算好要的線的斜率,然後在每個相鄰的點都累加這個斜率,就能畫出線了。這個方法能確保每個點之間都只使用到加法,畢竟斜率在一開始就計算好了,計算量較少。大家可能會想問為什麼想讓計算量減少呢?畢竟想要在螢幕上高頻率地更新畫面,可是牽涉到非常多的線條改動,試想如果是個高畫質的3D遊戲,線條可能是以百萬條計算,要在極短時間內更新幾百萬條線條的狀態,計算量可就大了許多。因此減少最基本元素的計算量是很重要的呢。
以3,4,5三角形為例:
下篇我們將實際以C語言實作這個演算法。