版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、宁夏师范学院数学与计算机科学学院计算机图形学实验报告实验序号:7 实验项目名称: 二维图形变换学号姓名专业、班实验地点指导教师时 间一、实验目的 1、通过二维几何变换的数学模型,编写缩放、旋转、对称变换; 2、实现图形变换的交互式操作:缩放、旋转、对称变换等;二、实验内容与步骤 1、放大缩小变换 放大缩小变换公式为:x=x.Sx, y=y.Sy; 其中Sx, Sy分别为x,y方向的放缩比例系数。 变换矩阵表达式为:Sx 0 00 Sy 00 0 1 x y 1=x y 1 可通过下面不同的比例系数来显示程序运行结果。 (1)Sx=Sy= 1.5;等比例放大 (2)Sx=Sy= 0.5;等比例缩
2、小 2、对称变换 包括以x轴对称、y轴对称和原点O对称三种。由于屏幕坐标只有第一象限,我们可以将 原点平移到(500,240)处。在第一象限画出一个三角形,然后分别求出三个对称图形。 3、旋转变换 将图形上的点(x,y)旋转角度,得到新的坐标(x,y)为: x=xcos-ysin, y=xsin+ycos;cos sin 0-sin cos 00 0 1 变换矩阵表示为: x y 1=x y 1三、实验步骤 1、通过二维几何变换的数学模型,编写缩放、旋转、对称变换; 2、以(500,240)为原点建立图形变换的参考坐标系; 3、通过键盘按键控制图形的缩放、旋转、对称变换; 4、变换图形设定为以
3、Pt0(540,220)、Pt1(670,130)、Pt2(560,120)为顶点的三角形。步骤:1. 建立Trans工程文件;2. 利用Resource View设计菜单,如图所示;菜单菜单项ID值图形变换(&T)缩放(&Z)ID_TRANSFORM_SCALE图形变换(&T)旋转(&R)ID_TRANSFORM_ROTATE图形变换(&T)对称(&S)ID_TRANSFORM_SYMMETRY 4、在CTransView视图类中添加消息映射函数;对象消息函数ID_TRANSFORM_SCALECOMMANDOnFigureCirleID_TRANSFORM_ROTATECOMMANDOnF
4、igureEllipseID_TRANSFORM_SYMMETRYCOMMANDOnTransformSymmetry 5、添加自定义的成员变量:CPoint Pt3; /三角形定点数组float dAngle; /每一次旋转的角度在视图类CPP文件的构造函数中初始化成员变量Pt0.x = 540; Pt0.y = 220;Pt1.x = 670; Pt1.y = 130;Pt2.x = 560; Pt2.y = 120;dAngle = 0; 6、在视图类的OnDraw()函数中加入下列代码,实现视图绘图。void CTransView:OnDraw(CDC* pDC)CTransDoc*
5、pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/绘出以以(540,220)、(670,130)、(560,120)为顶点的三角形。 pDC-MoveTo(Pt0); pDC-LineTo(Pt1); pDC-LineTo(Pt2); pDC-LineTo(Pt0);/绘出以(500,240)为原点的坐标轴 pDC-MoveTo(100,240);pDC-LineTo(900,240); pDC-MoveTo(500,5);pDC-LineTo(500,400); pDC-Tex
6、tOut(900,235,x轴); pDC-TextOut(500,400,y轴);/控制信息 pDC-TextOut(15,10,对称变换:键盘方向键); pDC-TextOut(15,28,缩放变换:Z键缩小;X键放大); pDC-TextOut(15,46,旋转变换:键盘R键); 7、添加预编译常量#define PI 3. 8、分别编写步骤3中向视图类中添加消息映射函数,程序如下:void CTransView:OnTransformRotate() / TODO: Add your command handler code here float dRadiusAngle = 30.0
7、 * PI /180.0; for(int i=0; i3; i+) Pti.x = Pti.x * cos(dRadiusAngle) - Pti.y * sin(dRadiusAngle); Pti.y = Pti.x * sin(dRadiusAngle) + Pti.y * cos(dRadiusAngle); RedrawWindow(); /实现图形旋转void CTransView:OnTransformScale() / TODO: Add your command handler code here float dScaleX = 2.0; float dScaleY = 0
8、.5; for(int i=0; i3; i+) Pti.x *= dScaleX; Pti.y *= dScaleY; RedrawWindow(); /实现图形缩放void CTransView:OnTransformSymmetry() / TODO: Add your command handler code here for(int i=0; i3; i+) Pti.x += Pti.x; Pti.y += Pti.y; RedrawWindow(); /实现图形对称 9、添加成员函数实现键盘交互式控制图形变换 函数及代码如下:void CTransView:OnKeyDown(UI
9、NT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call default int i=0; CPoint TmpPt = Pt0; switch (nChar)case VK_UP:/上for(i=0; i3; i+)Pti.y =240-(Pti.y-240);break;case VK_DOWN:/下for(i=0; i3; i+)Pti.y =240-(Pti.y-240);break;case VK_LEFT:/左for(i=0; i3; i+)Pti.x =5
10、00-(Pti.x-500);break;case VK_RIGHT:/右for(i=0; i3; i+)Pti.x =500-(Pti.x-500);break;case 0X5A:/Z的ASCII码Pt1 = Pt1 - Pt0;Pt2 = Pt2 - Pt0;Pt0.x = Pt0.y = 0;for(i=1; i3; i+)Pti.x *= 0.5;Pti.y *= 0.5;Pt0 = TmpPt;Pt1 = Pt1 + Pt0;Pt2 = Pt2 + Pt0;break;case 0X58:/X的ASCII码Pt1 = Pt1 - Pt0;Pt2 = Pt2 - Pt0;Pt0.x
11、= Pt0.y = 0;for(i=1; i3; i+)Pti.x *= 2.0;Pti.y *= 2.0;Pt0 = TmpPt;Pt1 = Pt1 + Pt0;Pt2 = Pt2 + Pt0;break;case 0X52 : /R的ASCII码dAngle = -1.0; /每一次逆时针旋转一度float dRadiusAngle = dAngle * PI /180.0;Pt1 = Pt1 - Pt0;Pt2 = Pt2 - Pt0;Pt0.x = Pt0.y = 0;for(int i=1; i3; i+)/由于CPoint的x和y坐标值都为正值,所以如果计算出是负值来时,就直接赋0Pti.x = (float)Pti.x * cos(dRadiusAngle) - (float)Pti.y * sin(dRadiusAngle);Pti.y = (float)Pti.x * sin(dRadiusAngle) + (float)Pti.y * cos(dRadiusAngl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业物联网经济效益评估
- 社工站2024年度工作总结与2025年项目计划
- 黑龙江省绥芬河市2024-2025学年八年级上学期第一次月考生物试卷
- 如何培养一种关爱他人的习惯
- 青少年应如何正确在社会实践中发挥自己的作用
- 自定义动画 课件
- 2024年会计工作计划范文模板(26篇)
- 毕节中心城区小坝片区棚户区改造项目(豪沟安置点一期)建筑节能工程施工专项方案
- 出纳下半年工作计划(11篇)
- 爱国卫生活动工作计划
- 2024年公安机关理论考试题库500道新版
- 检验员绩效考核
- 工业设计史论习题及答案
- 国开一体化平台01588《西方行政学说》章节自测(1-23)试题及答案
- 三年级数学下册长方形和正方形的面积实际应用专项练习(含答案)
- 老年肌肉衰减症课件
- 2024年极兔速递有限公司招聘笔试参考题库附带答案详解
- 班级月考成绩分析总结与反思4篇
- 教师职业道德与教育法规 课件 第三章 教师职业道德范畴
- 任务3 聚酯酯化生产操作-酯化的工艺参数控制
- G-T 35274-2023信息安全技术 大数据服务安全能力要求
评论
0/150
提交评论