绘制任意斜率的直线.doc





《绘制任意斜率的直线.doc》由会员分享,可在线阅读,更多相关《绘制任意斜率的直线.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流绘制任意斜率的直线.精品文档.淮海工学院计算机工程学院实验报告书课程名: 计算机图形学 题 目: 绘制任意斜率的直线 班 级: 测绘121 学 号: 2012122827 姓 名: 王其芳 评语:成绩: 指导教师: 批阅时间: 年 月 日一、实验目的或要求1. 掌握任意斜率直线的绘制算法。2. 掌握直线中点Bresenham算法的基本原理,能够用VC+实现该算法。二、 实验内容1、掌握直线段的生成算法,并用C+实现算法,包括中点法生成直线。2、编程实现DDA算法、Bresenham算法、中点画线法绘制直线段三、实验代码1、生成直线的DDA算法
2、算法思想:一个坐标轴上以单位间隔增量,决定另一个坐标轴上最靠近线段路径的对应整数值。假定x2x1的绝对值大于y2y1的绝对值,取x为一个象素单位长,即x 每次递增一个象素,然后利用下式计算相应的y值:yk+1ykyykmx 对于|m|1的线段,可通过计算由Y方向的增量y引起的改变来生成直线: xk+1xkxxkmy生成直线的DDA算法思想是源用初中直线的方程得出来的,而生成直线的中点算法是通过将DDA算法的方程式改为隐函数形式,然后通过与中点的比较确定该取的像素,绘制图线。/* DDA */#includevoid linedda(int x0,int y0,int x1,int y1,int
3、 color)int x,dy,dx,y;float m;dx=x1-x0;dy=y1-y0;m=dy/dx;y=y0;for(x=x0;x=x1;x+)putpixel(x,(int)(y+0.5),color);y+=m;main()int a,b,c,d,e;int graphdriver=DETECT;int graphmode=0;initgraph(&graphdriver,&graphmode,);cleardevice();a=0;b=100;c=200;d=300;e=200;linedda(a,b,c,d,e);getch();closegraph();运行结果:VC+环境
4、:#include #include / 四舍五入int Round(float x)return (int)(x abs(y2 - y1) ? abs(x2 - x1) : abs(y2 - y1);x = (float)x1;y = (float)y1;cx = (float)(x2 - x1) / steps;cy = (float)(y2 - y1) / steps;for(int i = 0; i steps; i+)putpixel(Round(x), Round(y), color);/ 在坐标 (x, y) 处画一个 color 颜色的点x += cx;y += cy;/ 主函
5、数void main()initgraph(640, 480);/ 测试画线Line_DDA(100, 100, 100, 478, RED);/ 按任意键退出getch();2、Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。 Bresenham画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 绘制 任意 斜率 直线

限制150内