直线生成算法---Bresenham算法

 

Bresenham直线生成算法原理:

 

假设直线是从(xa,ya)至(xb,yb),如果把直线平移使点(xa,ya)与原点重合,则直线方程可写成y=△y/△x·x,其中:△x=xb-xa, △y=yb-ya。

则S,t可用下式计算:
         S=△y/△x·(r+1)-q
          t=(q+1)-△y/△x·(r+1)
         S-t=2·△y/△x·(r+1)-2q-1

         △x(S-t)=2(r·△y-q·△x)+2△y-△x  其中:△x>0。

   令di=△x(S-t),则di与S-t的符号相同,只要判别di的符号就可确定下一点的坐标是Si还是Ti。

   于是 di=2(r·△y-q·△x)+2·△y-△x;
   当r=xi-1,q=yi-1时,
    di=2xi-1·△y-2yi-1△x+2△y-△x
    di+1=2xi·△y-2yi·△x+2△y-△x
    di+1-di=2△y(xi-xi-1)-2△x(yi-yi-1)
    di+1=di+2△y(xi-xi-1)-2△x(yi-yi-1)
    因此,di的递推公式为:d1=2△y-△x

     di+1=di+2△y     当di<0时,取Si(xi-1+1,yi-1)
     di+2△y-2△x   当di≥0时,取Ti(xi-1+1,yi-1+1)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值