1. 程式人生 > >Bresenham直線演算法

Bresenham直線演算法

該演算法是圖形學中繪製直線的一種經典演算法。

給定的條件座標,試光柵化線段

並且假定

推導過程

1、列出直線方程:(使用兩點式)

得到了我們需要的直線方程形式:

並且該方程滿足:


2、Bresenham的核心思想:已知當前點座標(x,y),因為直線的斜率已經規定了是小於等於1的,所以下一個點的座標只可能是(x+1,y)或者(x+1,y+1)。那麼我只需要判斷(x+1,y+1/2)(中點)在直線的上方還是下方就可以了。

如果F(中點)<0,則中點在直線上方,那麼下一個點應該取(x+1,y);

   如果F(中點)>0,則中點在直線下方,那麼下一個點應該取(x+1,y+1);

3、對於步驟2中下一個點的座標只可能是(x+1,y)或者(x+1,y+1)的情況,我們可以寫成(x,y)+(1,0)或者(x,y)+(1,1)。記:



4、然後根據Bresenham的思想,就很容易做下去了。我們以下圖為例:

計算過程如下:


  這樣就能進一步簡化計算。

實際計算步驟:

如上圖中例圖所示。