Bresenham直线生成算法
/***************************************************/
/************ ***************/
/************ Bresenham直线生成算法 ***************/
/************ ***************/
/***************************************************/
设:p1=2dy-dx
综述上面的推导,第1a象限内的直线Bresenham算法思想如下:
1、画起点(x1,y1), dx=x2-x1,dy=y2-y1,计算误差初值
p1=2dy-dx; i=1;
2、求直线的下一点位置: x(i+1)=x(i+1);
if p(i)>0 则y(i+1)=y(i+1);否则y(i+1)= y(i);
3、画点(x(i+1),y(i+1));
4、求下一个误差p(i+1);
if p(i)>0 则 p(i+1)= p(i)+2dy-2dx;
否则 p(i+1)=p(i)+2dy;
5、i=i+1; if i否则end
Bresenham算法的优点是:
1、不必计算直线之斜率,因此不做除法;
2、不用浮点数,只用整数;
3、只做整数加减法和乘2运算,而乘2运算可以用硬件移位实现。
Bresenham算法速度很快,并适于用硬件实现。
程序说明:
void Bres_line (x1, y1, x2, y2, c)
int x1, y1, x2, y2, c;
{
int dx;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载