您的位置:首页 > 其它

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

2013-06-20 21:31 316 查看
 

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)

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: