bresenham直线算法
思路很明了的一个算法,没有中点划线法那么绕(我需要小心的判断_2Fm>0意味着什么)。 基本原理从某处摘得: 设直线方程为 y i+ 1 = y i + k ( x i+ 1 - x i )+ k 。假设 列坐标象素已经确定为 x i ,其行坐标为 y i 。那么下一个象素的列坐标为 x i + 1 ,而行坐标要么为 y i ,要么递增 1 为 y i + 1 。是否增 1 取决于误差项 d 的值。误差项 d 的初值 d 0 = 0 , x 坐标每增加 1 , d 的值相应递增直线的斜率值 k ,即 d = d + k 。一旦 d ≥1,就把它减去 1 ,这样保证 d 在 0 、 1 之间。当 d ≥ 0.5 时,直线与垂线 x = x i + 1 交点最接近于当前象素( x i , y i )的右上方象素 ( x i + 1 , y i + 1 );而当 d <0.5 时,更接近于右方象素( x i + 1 , y i )。为方便计算,令 e = d - 0.5 , e 的初值为- 0.5 ,增量为 k 。当 e ≥ 0 时,取当前象素( x i , y i )的右上方象素( x i + 1 , y i + 1 );而当 e <0 时,取( x i , y i )右方象素( x i + 1 , y i )。 上面这段叙述很见功底,是有中国特色的教授式描述,不要图就能明白