Can you summarize the following document?
        
  假設我們需要由("x", "y")這一點,繪畫一直線至右下角的另一點("x", "y"),x,y分別代表其水平及垂直座標,並且"x" - "x" > "y" - "y"。在此我們使用電腦系統常用的座標系,即x座標值沿x軸向右增長,y座標值沿y軸向下增長。  因此x及y之值分別向右及向下增加,而兩點之水平距離為formula_1且垂直距離為formula_2。由此得之,該線的斜率必定介乎於0至1之間。而此演算法之目的,就是找出在formula_3與formula_4之間,第x行相對應的第y列,從而得出一畫素點,使得該畫素點的位置最接近原本的線。  對於由("x", "y")及("x", "y")兩點所組成之直線,公式如下:  因此,對於每一點的x,其y的值是  因為x及y皆為整數,但並非每一點x所對應的y皆為整數,故此沒有必要去計算每一點x所對應之y值。反之由於此線之斜率介乎於1至0之間,故此我們只需要找出當x到達那一個數值時,會使y上升1,若x尚未到此值,則y不變。至於如何找出相關的x值,則需依靠斜率。斜率之計算方法為formula_7。由於此值不變,故可於運算前預先計算,減少運算次數。  要實行此演算法,我們需計算每一畫素點與該線之間的誤差。於上述例子中,誤差應為每一點x中,其相對的畫素點之y值與該線實際之y值的差距。每當x的值增加1,誤差的值就會增加m。每當誤差的值超出0.5,線就會比較靠近下一個映像點,因此y的值便會加1,且誤差減1。  下列虛擬碼是這演算法的簡單表達(其中的codice_1繪畫該點,codice_2返回的是絕對值)。雖然用了代價較高的浮點運算,但很容易就可以改用整數運算(詳見最佳化一節):

  雖然以上的演算法只能繪畫由左下至右上,且斜率小於或等於1的直線,但我們可以擴充套件此演算法,使之可繪畫任何的直線。第一個擴充套件是繪畫反方向,即由右上至左下的直線。這可以簡單地透過在codice_3時交換起點和終點來做到。第二個擴充套件是繪畫斜率為負的直線。可以檢查"y" ≥ "y"是否成立;若該不等式成立,誤差超出0.5時"y"的值改為加-1。最後,我們還需要擴充套件該演算法,使之可以繪畫斜率絕對值大於1的直線。要做到這點,我們可以利用大斜率直線對直線"y=x"的反射是一條小斜率直線的事實,在整個計算過程中交換 "x" 和 "y",並一併將"plot"的引數順序交換。擴充套件後的虛擬碼如下:  以上的程式可以處理任何的直線,實現了完整的Bresenham直線演算法。

  以上的程式有一個問題:電腦處理浮點運算的速度比較慢,而codice_4與codice_5的計算是浮點運算。此外,codice_4的值經過多次浮點數加法之後,可能有累積誤差。使用整數運算可令演算法更快、更準確。只要將所有以上的分數數值乘以codice_7,我們就可以用整數來表示它們。唯一的問題是程式中的常數0.5—我們可以透過改變codice_4的初始方法,以及將codice_4的計算由遞增改為遞減來解決。新的程式如下:

  Jack E. Bresenham於1962年在IBM發明了此演算法。據他本人表示,他於1963年在丹佛舉行的美國計算機協會全國大會上發表了該演算法,論文則登載於1965年的《IBM系統期刊》(IBM Systems Journal)之中。Bresenham直線演算法其後被修改為能夠畫圓,修改後的演算法有時被稱為「Bresenham畫圓演算法」或中點畫圓演算法。
佈雷森漢姆直線演算法(英語:Bresenham's line algorithm)是用來描繪由兩點所決定的直線的演算法,它會算出一條線段在n維點陣圖上最接近的點。這個演算法只會用到較為快速的整數加法、減法和位元移位,常用於繪製電腦畫面中的直線。是計算機圖形學中最先發展出來的演算法。