电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

绘制任意斜率的直线VIP免费

绘制任意斜率的直线_第1页
1/9
绘制任意斜率的直线_第2页
2/9
绘制任意斜率的直线_第3页
3/9
淮 海 工 学 院 计 算 机 工 程 学 院 实验报告书 课程名: 计算机图形学 题 目: 绘制任意斜率的直线 班 级: 测绘1 2 1 学 号: ********** * 名: *** 评语: 成绩: 指导教师: 批阅时间: 年 月 日 2 一、实验目的或要求 1. 掌握任意斜率直线的绘制算法。 2. 掌握直线中点Bresenham 算法的基本原理,能够用VC++实现该算法。 二、 实验内容 1、掌握直线段的生成算法,并用C++实现算法,包括中点法生成 直线。 2、编程实现DDA 算法、Bresenham 算法、中点画线法绘制直线段 三、实验代码 1、生成直线的DDA 算法 算法思想:一个坐标轴上以单位间隔增量,决定另一个坐标轴上最靠近线段路径的对应整数值。假定x2﹣x1 的绝对值大于y2﹣y1 的绝对值,取x 为一个象素单位长,即x 每次递增一个象素,然后利用下式计算相应的y 值:yk+1﹦yk﹢△y﹦yk﹢m·△x 对于|m|>1 的线段,可通过计算由 Y 方向的增量△y 引起的改变来生成直线: xk+1﹦xk﹢△x﹦xk﹢m·△y 生成直线的DDA 算法思想是源用初中直线的方程得出来的,而生成直线的中点算法是通过将 DDA 算法的方程式改为隐函数形式,然后通过与中点的比较确定该取的像素,绘制图线。 /* DDA */ #include void linedda(int x0,int y0,int x1,int y1,int 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; } 3 } 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++环境: #include #include // 四舍五入 int Round(float x) { return (int)(x < 0 ? x - 0.5 : x + 0.5); } // 使用 DDA 算法画任意斜率的直线(包括起始点,不包括终止点) void Line_DDA(int x1, int y1, int x2, int y2, int color) { float x, y; // 当前坐标点 4 float cx, cy; // x、y 方向上的增量 int steps = abs(x2 - x1) > abs(y2 - y1) ? abs(x2 - x1) : abs(y2 - y1); x = (float)x1; y = (float)y1; cx = (float)(x2 ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

绘制任意斜率的直线

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部