




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE13-计算机图形学课程实验报告实验题目:班级:姓名:学号指导教师:日期:信息与计算机工程学院2014实验2基本图形生成算法实验2基本图形生成算法2.1直线的绘制一、实验目的1、通过实验,进一步理解和掌握DDA和Bresenham算法;2、掌握以上算法生成直线段的基本过程;3、通过编程,会在TC环境下完成DDA或中点算法实现直线段的绘制。二、实验环境计算机、Turbo
C或其他C语言程序设计环境
三、实验要求:1.每个学生单独完成;2.开发语言为TurboC或C++,也可使用其它语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5.自己保留一份可执行程序,考试前统一检查和上交。四、实验内容用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。五、实验步骤1、算法、原理清晰,有详细的设计步骤;2、依据算法、步骤或程序流程图,用C语言编写源程序;3、编辑源程序并进行调试;4、进行运行测试,并结合情况进行调整;5、对运行结果进行保存与分析;6、把源程序以文件的形式提交;7、按格式书写实验报告。六、实验代码1、DDA#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidDDALine(intx1,inty1,intx2,inty2,intcolor){floatx,y,dx,dy,k;dx=(float)(x2-x1);dy=(float)(y2-y1);k=dy/dx;y=y1;x=x1;if(abs(k)<1)if(x1<=x2)for(x=x1;x<=x2;x++){putpixel(x,(int)(y+0.5),color);y=y+k;}elsefor(x=x1;x>=x2;x--){putpixel(x,(int)(y+0.5),color);y=y-k;}elseif(y1<=y2)for(y=y1;y<=y2;y++){putpixel((int)(x+0.5),y,color);x=x+1/k;}elsefor(y=y1;y>=y2;y--){putpixel((int)(x+0.5),y,color);x=x-1/k;}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);DDALine(200,200,350,260,RED);getch();closegraph();}2、中点画线:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMPLine(intx1,inty1,intx2,inty2,intcolor)/*适用于0<k<1,x1<=x2的情况*/{inta,b,d1,d2,d,x,y;a=y1-y2;b=x2-x1;d=2*a+b;d1=2*a;d2=2*(a+b);x=x1;y=y1;putpixel(x,y,color);while(x<x2){if(d<0){x++;y++;d=d+d2;}else{x++;d=d+d1;}putpixel(x,y,color);}}main(){intgmode,gdriver;gdriver==DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MPLine(200,200,300,400,RED);getch();closegraph();}3、Bresenham:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidBresenhamLine(intx1,inty1,intx2,inty2,intc){inti,s1,s2,interchange;floatx,y,deltax,deltay,e,temp;x=x1;y=y1;deltax=abs(x2-x1);deltay=abs(y2-y1);if(x2-x1>=0)s1=1;elses1=-1;if(y2-y1>=0)s2=1;elses2=-1;if(deltay>deltax){temp=deltax;deltax=deltay;deltay=temp;interchange=1;}elseinterchange=0;e=2*deltay-deltax;putpixel(x,y,c);for(i=1;i<=deltax;i++){if(e>=0){x=x+s1;y=y+s2;e=e-2*deltax+2*deltay;}else{if(interchange==1)y=y+s2;elsex=x+s1;e=e+2*deltay;}putpixel(x,y,c);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);BresenhamLine(200,200,350,260,RED);getch();closegraph();}七、实验结果1、2、2.2圆和椭圆的绘制2.2.1实验目的1、通过实验,进一步理解和掌握中点和Bresenham算法;2、掌握以上算法生成圆或椭圆的基本过程;3、通过编程,会在TC环境下完成椭圆或圆的绘制。2.2.2实验环境计算机、TurboC或其他C语言程序设计环境
2.2.3实验要求:同2.12.2.4实验内容用中点(Besenham)算法实现椭圆或圆的绘制。2.2.5实验步骤1、算法、原理清晰,有详细的设计步骤;2、依据算法、步骤或程序流程图,用C语言编写源程序;3、编辑源程序并进行调试;4、进行运行测试,并结合情况进行调整;5、对运行结果进行保存与分析;6、把源程序以文件的形式提交;7、按格式书写实验报告。2.2.6实验代码1、中点画圆#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidCirclePoint(intx,inty,intcolor){putpixel(x+100,y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);putpixel(-x+100,-y+100,color);putpixel(y+100,x+100,color);putpixel(y+100,-x+100,color);putpixel(-y+100,x+100,color);putpixel(-y+100,-x+100,color);}voidMidCircle(intr,intcolor){intx,y,d;x=0;y=r;d=1-r;while(x<=y){CirclePoint(x,y,color);if(d<0)d+=2*x+3;else{d+=2*(x-y)+5;y--;}x++;}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MidCircle(60,RED);getch();closegraph();}2、Bresenham画圆#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidBresenhamCircle(intxc,intyc,intr,intc){intx,y;floatd;x=0;y=r;d=3-2*r;putpixel((xc+x),(yc+y),c);putpixel((xc-x),(yc+y),c);putpixel((xc+x),(yc-y),c);putpixel((xc-x),(yc-y),c);putpixel((xc+y),(yc+x),c);putpixel((xc-y),(yc+x),c);putpixel((xc+y),(yc-x),c);putpixel((xc-y),(yc-x),c);while(x<y){if(d>0){d=d+4*(x-y)+10;y--;x++;}else{d=d+4*x+6;x++;}putpixel((xc+x),(yc+y),c);putpixel((xc-x),(yc+y),c);putpixel((xc+x),(yc-y),c);putpixel((xc-x),(yc-y),c);putpixel((xc+y),(yc+x),c);putpixel((xc-y),(yc+x),c);putpixel((xc+y),(yc-x),c);putpixel((xc-y),(yc-x),c);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);BresenhamCircle(100,100,50,RED);getch();closegraph();}3、中点画椭圆代码1:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMidBresenhamEllipse(inta,intb,intcolor){intx,y;floatd1,d2;x=0;y=b;d1=b*b+a*a*(-b+0.5);putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);while(b*b*(x+1)<a*a*(y-0.5)){if(d1<=0){d1+=b*b*(2*x+3);x++;}else{d1+=b*b*(2*x+3)+a*a*(-2*y+2);x++;y--;}putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);}d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;while(y>0){if(d2<=0){d2+=b*b*(2*x+2)+a*a*(-2*y+3);x++;y--;}else{d2+=a*a*(-2*y+3);y--;}putpixel(x+100,y+100,color);putpixel(-x+100,-y+100,color);putpixel(-x+100,y+100,color);putpixel(x+100,-y+100,color);}}main(){intgmode,gdriver;gdriver=DETECT;initgraph(&gdriver,&gmode,"D:\Win-TC\project");setbkcolor(WHITE);MidBresenhamEllipse(20,8,RED);getch();closegraph();}代码2:#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"voidMPEllipse(longa,longb,longxc,longyc,intc){longx,y;doubled1,d2;x=0;y=b;d1=b*b+a*a*(-b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国体育旅游行业市场规模调研及投资前景研究分析报告
- 2025年中考语文总复习名著导读《水浒传》每回内容概括(打印版)
- 农村屠宰监督管理制度
- 公司车辆出租管理制度
- 公司物品放置管理制度
- 学校进校物资管理制度
- 内蒙古自治区通辽市科尔沁左翼中旗2022-2023学年高二下学期英语期末试卷(含答案)
- 小型仓库出货管理制度
- 商品折价销售管理制度
- 对外承揽加工管理制度
- 物质安全数据表(MSDS)84消毒液
- 物业监控室视频图像点信息采集表
- 三相异步电动机的正反转
- hec教程用户手册中文版
- 救护车急诊出诊转运风险相关事项告知书
- 六辊轧机轧辊装置的设计
- 初中学生综合素质表现评价档案
- 电子设备雷击保护导则(GB7450-87)
- 常用音乐术语大全含详细速度值
- 心经注音版(打印版)
- 医院医用耗材及卫生材料采购申请表
评论
0/150
提交评论