计算机扫描直线Bresenham算法

计算机扫描直线原理:

直线方程:y=kx+b           y-kx-b=0

在第一象限线 (X0,Y0)->(X1,Y1)  Bresenham直线算法Bresenham直线算法

当前点Pi (Xi , Yi)  

则下一点必为P1( Xi +1, Yi) 或  P2 Xi +1, Yi+1)。

理想直线靠近哪个点,就取那个点。

 

推导:

令F(x,y)=y-kx-b,那么理想直线上方有F>0,下方F<0.

取P1 P2中点M(Xi +1, Yi+0.5),

则F(M)<0,M在F下,应该取P2 ;反之取P

令di=F(Mi)=Yi+0.5-k(Xi +1)-b

则di<0时第i+1个点 Pi+1(Xi +1, Yi+1)

                        di+1=di+1-k

         di>0时  Pi+1(Xi +1, Yi)

                     di+1=di-k

d0=0.5-k

由以上递推公式可以确定每一个像素点坐标,从而画出直线。

优化(只需要d的符号):

k=Δy/Δx  而一象限Δx为正

2Δxd0=1-2Δy  //避免k的除法 0.5的浮点数

2Δxdi+1=2Δxdi+2Δx - 2Δy    或   2Δxdi+1=2Δxdi-2Δy

结论:

重新令d0=1-2Δy 

则  di+1=di+2Δx - 2Δy    或   di+1=di-2Δy

 

 

 

由此,该算法优点可以看出:没有除法 只用到整数加减,所以该算法是高效的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值