激情飞扬

————活着的人要思考,让行为本身产生的能量更值得!!
posts - 8, comments - 19, trackbacks - 1, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Bresenham 画线算法 (转载)

Posted on 2005-11-08 20:21 激情飞扬 阅读(7768) 评论(4)  编辑 收藏 引用 所属分类: Be your personal best
Bresenham 画线算法 Bresenham 画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用了 整数的增量来实现的。 Bresenham算法将对整形参数的符号检测,整形参数的值比于实际险段之间的偏量。 Bresenham算法内容 对于直线方程 Y = kX + b; A,0< 斜率 < 1 时候的算法 1,输入线段的两个端点Point1和Point2,并且存储到Point1(x1,y1)和Point2(x2,y2)中; 2,将Point1载入桢缓存,绘画第一个起始点; 3,计算常量△x、△y、2△y和2(△y-△x),并且获得一个决策参数的第一个值:P = 2△y - △x; 4,从n = 0开始,在沿线经过每个Xn处,进行下面的监测: 如果Pn< 0, 下一个点绘制的是(Xn+1,yn),并且Pn+1= Pn + 2△y 如果P0>= 0 ,下一个点绘制的是(Xn+1,Yn+1),并且Pn+1 = Pn + 2(△y-△x) 5,重复执行△x-1次步骤4; 关于在C++中的算法如下实例: #include using namespace std; void Bresenham(int x1,int y1,int x2,int y2){ int dx = x2 - x1;//△x int dy = y2 - y1;//△y int p = (2*dy) - dx ; //P = 2△y - △x int dobDy = 2* dy ; // 2 △y int dobD = 2*(dy - dx) ; // 2(△y - △x) int PointX,PointY; //设置两个临时用来显示位置的变量 if( x1 > x2){ //判断线段的方向 PointX = x2;//起始坐标X PointY = y2;////起始坐标Y x2 = x1; } else{ PointX = x1;//起始坐标X PointY = y1;//起始坐标Y } //达因第一个起始点 cout<<"Point: X:"<>

Feedback

# re: Bresenham 画线算法 (转载)  回复  更多评论   

2007-04-16 18:38 by vv
请问这种有人机交互功能的代码可以提供一下么?qq:562305192谢谢!!!

# re: Bresenham 画线算法 (转载)  回复  更多评论   

2007-06-25 17:47 by DSADAS
P = 2△y - △x
WHAT IS THE USE OF P?

# re: Bresenham 画线算法 (转载)  回复  更多评论   

2007-10-04 20:11 by bresenham
P = 2△y - △x 是为了去除掉除法运算,便于硬件计算

# re: Bresenham 画线算法 (转载)  回复  更多评论   

2009-04-17 15:55 by 创意产品网
不错

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理