您的位置:首页 > 理论基础

计算机扫描直线Bresenham算法

2011-03-23 14:27 246 查看
计算机扫描直线原理:

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

在第一象限画线 (X0,Y0)->(X1,Y1)






当前点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 ;反之取P1 ;

令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

由此,该算法优点可以看出:没有除法 只用到整数加减,所以该算法是高效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: