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)