计算机图形学直线生成算法实现.doc

(7页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

9.9 积分

实验二直线生成算法实现班级08信计学号80姓名 分数一、 实验目的和要求:1、 理解直线生成的基本原理2、 掌握几种常见的直线的生成算法3、 实现直线生成的算法二、 实验内容:1. 了解直线的生成原理2. 掌握几种基木的直线生成算法:DDA算法、brcscnham画线法、中点画线 法3. 实现直线生成的,在屏幕上任意生成一条直线三、 实现程序程序1#define pi 3.141592ttdefine MAX (a, b) (a>b) ? a:b ftdefine MIN(a, b) (a*t0)( *t0=r;return (1);))else if(q>0)( r=d/q;if(rxmax-pot[0]. x, &t0, &tl))( delaty=pot[1]. y-pot[0]. y;if (clip(-delaty, pot[0]. y-rect->ymin, &t0, &tl))if(clip(delaty, rect->ymax-pot[0]. y, &t0, &tl))( line((int)(pot[0]. x+t0*delatx), (int)(pot[0]. y+t0*delaty), (int)(pot[0]. x+tl*delatx), (int)(pot[0]. y+tl*delaty));)))void main()(int driver=DETECT, mode; int i=0, j, key; registerbgidriver(EGAVGA_driver);initgraph(&driver, &mode, "\\tc");initgraph(&driver, &mode, "\\tc");zhongxing (x, y, 4);setcolor(3);rectangle (150, 100, 490, 380);/**/for(;;)( if (bioskey(1))( key=bioskey(0):if(key==0x4d00)( zhongxing (x, y, 0);x+=5;zhongxing (x, y, 4);rectangle (150, 100, 490, 380);)if(key==0x011b){printf("esc be press*);break;)if(key=0x4b00)( zhongxing (x, y, 0);x-=5;zhongxing (x, y, 4);rectangle (150, 100, 490, 380);)if(key==0x5000)(zhongxing (x, y, 0);y+=5;zhongxing (x, y, 4);rectangle (150, 100, 490, 380);)if(key==0x4800)(zhongxing (x, y, 0);y-=5;zhongxing (x, y, 4);rectangle (150, 100, 490, 380);)if(key==OxlcOd)( add(x, y, i); circle (x, y, 3);i+=l;}if(key==0x3920)(liang(pot, &rect);for(j=0;j<2;j++)( pot[j]. x=0;pot[j]. y=0;} i=0;)))getch ();closegraph ();)一程序2(1) DDA算法程序实现的完整源程序 #includeh>#include#include#define YS 10000()dda_Iine(int xa9int ya,int xb,int ybjnt c){float delta_x,delta_y,x,y;int dx,dy,steps,k;dx=xb-xa;dy=yb・ya;if(abs(dx)>abs(dy)) /* 判断步长的方向 */ steps=abs(dx); /*steps 作为控制数 Kvl*/ elsesteps=abs(dy); /*steps 作为控制数 K>1*/ delta_x=(float)dy / (loat)steps; /*值为±1 域土 1/m*/delta_y=(float)dy / float)steps; /*值为±1 域土m*/x=xa;y=ya;putpixel(x,y,c); /*画起点,c为点的颜色*/for(k= 1; k<=steps;k++) /* 循坏画点成直线 */(x+=delta_x;y+=delta_y;putpixel(x,y,c);delay(YS);})main()(int x 1=250,y1 =250,x2=300,y2=300,c=5;int dx,dy,n,k,i,f;int x,y;int gdriver,ginode;gdriver=DETECT;initgraph(&gdriver,&gmode,” ”);ddajine(xl,yl,x2,y2,c);getch();closegraph();)(2)改进的Bresenham画线算法程序实现的完整源程序#include#include#include#define YS 100000bresenham_line(int xO,int yO,int xl,int yl,int c)(int x,y,dx,dy,e,i;dx=xl-x();dy=yl-y();e=-dx;x=xO,y=yO;for(i=0;iv=dx;i++)(putpixel(x,y,c++);/*c++不同描点不同颜色 */delay (YS);x++,e=e+2*dy;if(e>0)(y++;e=e-2*dx;})}main()int x0=100,y0=100,xl=200,y1=200,c=l;int gdriver^gmode;gdriver=DETECT;initgraph(&gdriver9&gmode/f ");bresenhamJine(xO,yO,xl5yl,c);getch();closegraph();}(3)中点算法实现的完整源程序#include #include #include #include vconio.h〉#include #define rad 0.0174532925#define NUMBER 24/*此程序写出的图形,(0,0)在左上方,即以原y轴的负半轴为正,x轴不变,类似于抛物 运动。*//*此程序写出的图形,(0,0)在左上方,即以原y轴的负半轴为正,X轴不变,类似于抛物 运动。*/main()(float xa,xb,ya,yb;float dex,dey,dx,dy;float x,y,sl,s2;int steps,k,l;int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode/tH);cleardevice();printf(Hshu ru qi dian he zhong dian zuo biao (xa,ya) (xb,yb):\nH);printf(M\n xa= ”);scanf(”%f”,&xa);printf(n\n ya= ”);scanfT%f”,&ya);printf(H\n xb= ”);scanf(H%fH,&xb);printf(H\n yb= ”);scanf(H%fH,&yb);dx=xb-xa;dy=yb-ya;/* if(abs(dx)>abs(dy)) */dex=l;dey=dy/dx;/* printf("dx=%f dy=%f dey=dy/dx= %f\n”,dx,dy,dey); *//*dey=dy/dx;*//*clrscr(); */cleardevice();setbkcolor(BLUE);putpixel(xa,ya,RED);for(k=l;k<=dx;k++)(xa=xa+dex;ya=ya+dey;/*putpixel(xa,xa+l,GREEN);*/putpixel(xa,floor(ya),RED); /* foor 取整函数 */delay(500);}getch(); /* qu yi zi hu,hui che hou jin xing xia yi bu */sl=0;for(k=l ;k<=400;k++){sl=sl+l;putpixel(5()0,si,GREEN);delay(450); /* ting liu 450 hao miao,chu xian dong hua xiao guo*/)settextstyle( 1,0,3);ou ttextxy (200,300, *1 duanzhiy ing' *);getch(); /* jie shu cheng xu */closegraph();return 0;}2、实验结果DDA算法运行结果:□ZhixianS. eze改进的Bresenham算法运行结果:□ZhixianS. eze中点算法运行结果:□2. eze四、实验结果分析1、 该程序实现了三种算法的直线段绘制分别是生成直线的DDA算法、改进的 Bresenham生成算法和中点算法2、 比较三种算法的结果:像素逼近效果由好到差依次为:B算法、DDA算法、中点算法执行速度由快到慢依次为: 中点算法、DDA算法、B算法通过对程序的分析与学习,使我学到了如何熟悉直线的生成算法,掌握直 线的绘制。通过应用基本函数,编写程序,然后才能使用一些基本的图形函数, 进行调用,编写程序,经过许多个步骤,编完之后应用TC软件进行调试,修改, 最终才能得到想要的结果。 关 键 词: 算法 直线 实现 图形 计算机 生成

 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

计算机图形学直线算法程序,计算机图形学直线生成算法实现.doc相关推荐

  1. 计算机地图制图原理与算法,计算机地图制图原理与方法-基本图形生成算法.ppt...

    <计算机地图制图原理与方法-基本图形生成算法.ppt>由会员分享,可在线阅读,更多相关<计算机地图制图原理与方法-基本图形生成算法.ppt(35页珍藏版)>请在人人文库网上搜索 ...

  2. 【计算机图形学】 圆的两种生成算法(角度微分法、Bresenham算法)

    圆的两种生成算法(角度微分法.Bresenham算法) 文章目录 1.角度微分法的原理 2.角度微分法的实现(基于matlab) 3.Bresenham 算法的原理 4.Bresenham 算法的实现 ...

  3. matlab画梅花,基于Matlab图像素描生成算法究.doc

    毕 业 文 图像素描生成算法研究 姓 名 院(系) 信息学院 专业班级 学 号 指导教师 职 称 论文答辩日期 年月日 摘 要 分析比较图像处理提供参考.关键词: 目 录 1 前言1 1.1 课题研究 ...

  4. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

  5. line划线计算机图像学,【计算机图形学】根本图形元素:直线的生成算法

    [计算机图形学]基本图形元素:直线的生成算法 08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net ...

  6. 计算机图形学01:直线生成算法(DDA算法)

    作者:非妃是公主 专栏:<计算机图形学> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文章目录 专栏推 ...

  7. DDA直线生成算法|MFC|计算机图形学

    DDA直线生成算法|MFC|计算机图形学|保姆篇 1.如何创建MFC编译环境? 点击工具->获取工具和功能 2.创建MFC编辑窗口 3.进入到MFC编辑窗口后 1)设计窗口,修改ID 2)添加事 ...

  8. 计算机图形学 Bresenham直线生成算法

    bresenham算法是一种光栅化的直线生成算法,是计算机图形学目前使用广泛的直线扫描转换算法,具体逻辑很简单,就是描点.所以bresenham的算法研究实际上是研究目标点的选择. 实验环境: ope ...

  9. 计算机图形学直线段的生成算法

    计算机图形学直线段的生成算法C++实现,包括:DDA,中点画线,改进的Bresenham画线 文章目录 1.实验目的和内容 1.1实验目的 1.2实验内容 2.算法原理 2.1 DDA(数值微分算法) ...

最新文章

  1. 缓存技术比拼:Redis与Memcached的同与不同
  2. php arrayaccess 二维,php的ArrayAccess(数组式访问接口)
  3. ejb java bean的区别_关于ejb:Bean,Java Bean和Enterprise Java Bean之间的区别
  4. springMVC自定义方法属性解析器
  5. linux 下opencv安装教程,linux 下 opencv安装
  6. 菜鸟学习Spring——60s配置XML方法实现简单AOP
  7. Linux 查看磁盘的属性,Windows XP 查看磁盘属性(转)
  8. 简单的文本文件加密小程序
  9. element ui el-carousel 滚动图 vue 基于vue-lazyload图片懒加载、延迟加载 解决方案
  10. 算法学习(四)冒泡排序
  11. hightcharts 3d 堆积图下钻
  12. 用动画来赋予PPT生命力(师从于珞珈老师)
  13. stm32定时器引脚分布,定时器2~7、9~14基本配置
  14. 通用量子计算机和容错量子计算,量子计算机研究(下册)——纠错和容错计算...
  15. Unity3D新手入门教程 (b站阿发) 总结框架笔记
  16. 计算机网络安全技术实践总结,网络安全实训总结.doc
  17. 银行卡号码校验算法(Luhn算法,又叫模10算法)
  18. myeclipse中设置项目编码方式
  19. SAP ABAP ZBA_R003 查询用户下的角色里的公司
  20. iOS开发-Please sign in with an app-specific password. You can create one at appleid.apple.com

热门文章

  1. 使用Word2Vec完成基于文本相似度的推荐
  2. 识别植物的软件有哪些?快把这些软件收好
  3. swagger初体验
  4. html页面显示代码插件,jQuery – 高亮动态显示页面HTML代码插件
  5. css button三角形,CSS实现三角形的播放器按钮图标
  6. 精耕“大数据” 做精准营销
  7. 支付宝:批量付款到支付宝账户有密接口
  8. 【shell脚本】——IFS的概念和用法
  9. 买富勒鼠标的请注意了
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java面向新手投资者的虚拟股票交易系统h1o29