文章目录
bresenham算法
- 学习bresenham算法是为了在计算机上面画直线,因为在计算机屏幕中只有像素点。
定义:在迭代算法中,每一步的x,y的值由前一步的值加上一个增量来获得,我们称这种算法为bresenham算法
推导
-
给点两个坐标点我们可以得到直线方程式y=ax+b,有可以写成f(x) = y - kx -b = 0
-
我们可以得到斜率k = y的增量/x的增量
-
-
上面的图可以看出,理想的直线把平面图分为3各区域f(x,y)>0 在直线上方,f(x,y) < 0 在直线下方,f(x,y) = 0 在直线上
-
假设理想的斜率是 0 <= k < 1,就会出现 △x > △y (x的增量大于y的增量),然后x轴就变为主位移方向,按照重点bresendam原理,x方向上每次加1,y方向上加不加1取决于中电的误差值
-
图中可以看出下一点的值在Pu 和 Pd之间
-
将M坐标的值带入d = f(x+1,y+0.5) = y + 0.5 - k(x+1) - b求误差项
-
当d<0,离Pu近一些选它为下一点,d>=0,离Pd近一些,选它为下一点
公式
上面的推导只有 0 <= k <= 1的,主要还是后面的公式,我们可以根据公式求出一条直线上所有的点,把它写成程序,就可以在计算机得到不同斜率的直线