下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、姓 名: 学 号: 班 级: 实验地点: 实验时间:计算机图形学实验报告谢云飞20112497计算机科学与 技术 11-2 班逸夫楼 5072014.03实验 1 直线的生成1 实验目的和要求理解 直线 生成的原理;掌 握典型直 线生 成算 法;掌 握步处 理、分 析 实验数据的能力;编程 实现 DDA算法 、 Bresenham 中 点算 法; 对于 给定 起点和终点的 直 线, 分别调用 DDA算法 和 Bresenham 中 点算 法进 行批 量绘制,并记 录 两种 算法的绘制时间;利用 excel 等数 据分 析软 件, 将试验结果编 制成表格,并绘制折线图比较两种算法的性能。2 实验
2、环境和工具开发环 境: Visual C+ 6.0实验平 台: Experiment_Frame_One ( 自制 平台 )。本 实 验 提 供 名 为 Experiment_Frame_One 的 平 台 ,该 平 台 提 供 基 本 绘 制、设置 、输入 功能 ,学生 在此 基础 上实 现 DDA算 法和 Mid_Bresenham 算法,并进行分析。平台界面 :如 错误 ! 未找 到引用源。所 示设置 :通 过 view-setting菜 单 进 入 ,如 错 误 ! 未 找 到 引 用源。所示 输 入 : 通 过 view-input 菜 单 进 入 . 如 错 误 ! 未 找 到 引
3、 用 源。所示 实现算法:DDA算法 :void CExperiment_Frame_OneView:DDA(int X0, int Y0, int X1, int Y1)Mid_Bresenham 法 : voidCExperiment_Frame_OneView:Mid_Bresenham(int X0, int Y0, int X1, int Y1)3 实验结果3.1 程序流程图1) DDA 算 法 流 程 图 :开 始定 义 两 点 坐 标 差 dx , dy , 以 及 epsl , 计 数 k=0 , 描 绘 点 坐 标 x,y , x 增量 xIncre , y 增 量 yInc
4、re输 入 两 点 坐 标 x1,y1,x0,y0dx=x1-x0,dy=y1-y0;反之epsl=|dy|若 |dx|dy| epsl=|dx|xIncre=dx/epsl; yIncre=dy/epsl填 充 (强 制 整 形 )(x+0.5,y+0.5);横坐标x+xIncre;纵坐标y+yIncre;kx1反之x=x1;x1=x0;x0=x;x=x0;Y=y1;y1=y0;y0=y;y=y0; . 坐 标 差 dx=x1-x0;dy=y1-y0;判 断 值 d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;填 充 点 (x,y) , 且 x=x+1
5、; 若 d0 反 之y=y+1, 且 d=d+UpIncre d=d+DownIncre. 若 xabs(dy) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl;for(k=0;kX1) x=X1;X1=X0;X0=x; y=Y1;Y1=Y0;Y0=y; x=X0;y=Y0; dx=X1-X0;dy=Y1-Y0; d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy; while(xX1)DrawPixel(x,y);x+;i
6、f(d0)y+; d+=UpIncre;else d+=DownIncre;3.3 运行结果3.4 运行结果分析DDA 算 法 基 本 上 没 有 什 么 问 题 , Mid_Bresenham 算 法 在 网 格尺寸比较大 时误 差较 大,通过改变网格尺寸大 小即能较 为精确地 描绘出所绘直线。总之在误差允许的范围类,实验结果令人满意。4 思考题(可选)如何测试比较算法的性能?提示 1: 因为 绘制 1 条直线时间很短, 所以 需要绘制大量直线 才能比较它们之间的性能; 提 示 2: drawpixel 需 要 耗 费 时 间 ,但 它 的 时 间 性 能 和 直 线 绘 制 算法无关,因此
7、在比较不同算法性能时,应该屏蔽它的影响, 如何屏蔽?5 实验心得通过此次实验,我对典型的直线绘制算法 DDA 算法、 Bresenham 中 点算 法有了进一步的了解与 掌握 。由于第一次做图形 学的 相关 实验 , 陌生感还是有的,对平台也不太掌握,所以一开始很难入门,但在老 师的帮助和同学的相互讨论下,结果还是可观的。两个基本算法都得 以实现。希望随着学习的加深,后续的实验能够做的更好。实验 2 多边形扫描转换算法1 实验目的和要求理解多边形扫描转换的原理;掌握典型多边形扫描转换算法;掌 握 步处理、分析实验数据的能力;编 程实 现基本 X-扫描线转换算法 (必 做);编 程 实 现 有
8、效 边 表 转 换 算 法 ( 选 做 )。2 实验环境和工具本试验提供自带实验平台开发 环境: Visual C+ 6.0本 实 验 提 供 名 为 Polygon_Conversion的 平 台 , 该 平 台 提 供 基 本 绘 制 、设 置、 输入功能,学生在此基 础上 实现 X-扫描 线算 法和有效边表转换 算 法 。多边形输入:用户按【 功能】 【输入多边形 】菜单开始输入多边形 ; 单击鼠标左键输入多边形顶点; 点击鼠标右键结束多边形输入,并将最后一个顶点和第一个顶点进行连接;参数设置:用户按“【 功能 】 【设置 】”启 动设置对话框设置内容:填充色是否填充多边形选择转换算法实
9、现扫描转换算法X-扫描线转换算法:void CPolygon_ConversionView:X_Scan_Line_Conersion(int Vertices2, int VertexNum)有效边表转换算法:void CPolygon_ConversionView:Active_Edge_Table_Conersion(int Vertices2, int VertexNum)3 实验结果3.1 程序流程图X- 扫描 线转 换 算法 : 开始(若构点小于 3个结束)确定多边形所占有的最大扫描线,得到多边形顶点的最小和最大 y 值(ymin 和 ymax)从 ys=ymin 开 始 扫 描
10、, 且 计 算 每 条 边 的 方 程 式 记 录 ys 与 多 边 形 各 边 交 点(判断并取舍交点:顶点的两条边的另外两个端点的 y1,y2 的值比 ys大的个数为 0,1,2,则取 交点对 应个 数为 0,1,2;) 取完交点横坐标后排序交点横坐标 x 数组,并 配 对( 1,2)(3,4) 填充配对区间若扫描 线 ys=ymax (结束)3.2 程序代码void CPolygon_ConversionView:X_Scan_Line_Conersion(int Vertices2, int VertexNum)int ymin,ymax,x10,i,j,n=0,x1,x2,y1,y2
11、,x0,ys; ymax=0xffffffff;ymin=0x7fffffff; if(VertexNum=3) return;for(i=0;iVertexNum;+i)if(Verticesi1ymax) ymax=Verticesi1;for(ys=ymin;ys=ymax;ys+)n=0;for(j=0;jVertexNum;+j)x1=Verticesj0;y1=Verticesj1;x2=Vertices(j+1)%VertexNum0;y2=Vertices(j+1)%VertexNum1;if(y1=y2)continue ; if(ysmax(y1,y2) continue;
12、x0=int(ys-y1)*(x2-x1)/(y2-y1)+x1+0.5); if(ys=y1)continue;if(ys=y2)int tmp=0;if(y1ys) +tmp;if(Vertices(j+2)%VertexNum1ys) +tmp;if(tmp%2=0) continue;xn=x0;n+; sort(x,x+n);/ 排 序for(i=0;in;i+=2) / 填 充 for(j=xi;j= nodesk&t 1) value=(Divide(t-nodesk),(nodesk+m-1-nodesk)*BKM(t,k,m-1,no des)+Divide(nodesk+m
13、-t),(nodesk+m-nodesk+1)*BKM(t,k+1,m-1 ,nodes);return value;2)生成曲线的节点矢量: bool CFreeform_CurveView:Create_Nodes_Vector(int n,int m, int SplineType, float nodes) switch(SplineType) case 0: / 均匀 B 样条曲线/ 添加代码 for(int i=0;i=n+m;i+) nodesi=i;break; case 1: / 开放均匀 B 样条曲线/ 添加代码 int i=0;for(;im;i+)nodesi=0;for(;i=n;i+) nodesi=i-m+1;for(;i=n+3;i+) nodesi=n-m+2;break;default:return false;return true;3.3 运行结果3.4 运行结果分析这次试验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年卫生清洁担保合同3篇
- 2024年企业场地租赁合同规范文本3篇
- 2024年山西省大同市公开招聘警务辅助人员(辅警)笔试摸底备战测试(3)卷含答案
- 2024年度某大型医院医疗设备维修服务合同3篇
- 2023年河南省驻马店市公开招聘警务辅助人员(辅警)笔试摸底备战测试(2)卷含答案
- 2024年沈阳客运考试模拟题及答案详解
- 2024年专用加工场地租赁合同3篇
- 2024年河北省邯郸市公开招聘警务辅助人员(辅警)笔试专项训练卷(1)含答案
- 2024年升级:互惠互利劳动合同2篇
- 2024年合肥道路运输客运从业资格证考试题库及答案
- 太赫兹技术在医学检测和诊断中的应用研究
- 工程量清单及招标控制价编制服务采购实施方案(技术标)
- 海运出口货运代理协议
- 安徽六国化工股份有限公司磷石膏生态环境影响综合整治及绿色发展项目环境影响报告书
- 个人对赌协议对赌协议书范文
- 长在石板上的大米
- 五年级道德与法治《不甘屈辱-奋勇抗争》教学反思
- 高分子化学课后习题答案
- 安全管理年终工作总结PPT模板下载
- 中国缺血性卒中和短暂性脑缺血发作二级预防指南(2022年版)解读
- 2022钢铁企业销售员工作总结及2022年工作计划
评论
0/150
提交评论