直线生成算法的实现

实验二:直线生成算法班级 13软件+道铁1班 学号 20132110050115姓名 丁益 1.实验目的通过实验,进一步理解直线段扫描转换的DDA算法、中点画线自算法及bresenham算法的基本原

实验二:直线生成算法 班级13软件+道铁1班学号20132110050115姓名丁益 1 .实验目的 a) DDA 通过实验,进一步理解直线段扫描转换的算法、中点画线自算法 bresenham 及算法的基本原理,掌握以上算法生成直线段的基本过程。 b) C/C++DDA 通过编程,掌握在环境下完成用算法、中点画线算法及 bresenhamC/C++ 算法对任意直线段的扫描转换,以及在环境下完成用中 点画圆及椭圆的绘制方法。 2. 实验内容 c) openGL 阅读《三维程序设计》(电子书)第二部分第四章,掌握 OpenGL 基本建模方法,并调试其中程序。 d) 6DDABresenham 参考教材第章,编程实现整数算法、中点画线法和 画线法,绘制直线(直线宽度和线型可自定)。 2.1 DDA直线生成 2.1.1 算法原理 Px,yPx,yL(P,P)k=(y-y)/(x-x) 已知过端点(),()的直线段,斜率为,画线过 000111011010 xxx1yy=kx+B 程从的左端点开始,向右端点步进,步长为个像素,计算相应的坐标为。 0 y=kx+B 计算 i+1i =kx+B+kx i =y+kx i x=1,y=y+kx1ykyk 当,即当每递增,递增。由计算过程可知,与可能为浮点数,需要 i+1i yround(y=(int)(y+0.5)y 取整数,源程序中)表示四舍五入所得的整数值。 2.1.2 算法流程

腾讯文库直线生成算法的实现