bresenham算法

  • 学习bresenham算法是为了在计算机上面画直线,因为在计算机屏幕中只有像素点。

定义:在迭代算法中,每一步的x,y的值由前一步的值加上一个增量来获得,我们称这种算法为bresenham算法


推导

  • 给点两个坐标点我们可以得到直线方程式y=ax+b,有可以写成f(x) = y - kx -b = 0

  • 我们可以得到斜率k = y的增量/x的增量

  • bresenham算法

  • 上面的图可以看出,理想的直线把平面图分为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近一些,选它为下一点


公式

bresenham算法

bresenham算法

上面的推导只有 0 <= k <= 1的,主要还是后面的公式,我们可以根据公式求出一条直线上所有的点,把它写成程序,就可以在计算机得到不同斜率的直线


相关文章:

  • 2020-06-03
  • 2021-07-24
  • 2021-08-05
  • 2021-08-05
  • 2021-08-31
  • 2021-08-31
  • 2021-08-31
  • 2021-12-15
猜你喜欢
  • 2021-10-10
  • 2021-02-13
  • 2021-08-01
  • 2021-08-18
  • 2021-08-29
  • 2021-10-19
  • 2018-04-15
  • 2018-12-15
相关资源
相似解决方案