版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三二维图形变换一、实验任务1. 通过二维几何变换的数学模型,编写缩放、旋转、对称变换;2. 实现图形变换的交互式操作:缩放、旋转、对称变换等;二、实验内容1. 放大缩小变换放大缩小变换公式为:x =x.S x , y =y.S y ; 其中S x ,S y 分别为x,y 方向的放缩比例系数。变换矩阵表达式为:x y (1S x =S y =1.5;等比例放大(2S x =S y =0.5;等比例缩小2. 对称变换包括以x 轴对称、y 轴对称和原点O 对称三种。由于屏幕坐标只有第一象限,我们可以将原点平移到(500,240处。在第一象限画出一个三角形,然后分别求出三个对称图形。3. 旋转变换
2、将图形上的点(x ,y 旋转角度,得到新的坐标(x ,y 为:x =xcos -ysin , y =xsin +ycos ; x y 4.三、设计思路1. 通过二维几何变换的数学模型,编写缩放、旋转、对称变换;2. 以(500,240为原点建立图形变换的参考坐标系;3. 通过键盘按键控制图形的缩放、旋转、对称变换;4. 变换图形设定为以Pt0(540,220、Pt1(670,130、Pt2(560,120为顶点的三角形。步骤:1.建立Trans工程文件;2.利用Resource View设计菜单,如图所示; 3.在CTransView视图类中添加消息映射函数; 4.添加自定义的成员变量:CPo
3、int Pt3;/三角形定点数组float dAngle;/每一次旋转的角度在视图类CPP文件的构造函数中初始化成员变量Pt0.x = 540; Pt0.y = 220;Pt1.x = 670; Pt1.y = 130;Pt2.x = 560; Pt2.y = 120;dAngle = 0;5.在视图类的OnDraw(函数中加入下列代码,实现视图绘图。void CTransView:OnDraw(CDC* pDCCTransDoc* pDoc = GetDocument(;ASSERT_VALID(pDoc;/ TODO: add draw code for native data here/
4、绘出以以(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->TextOut(900,235,"x轴"pDC->TextOut(500,400,"y轴"/
5、控制信息pDC->TextOut(15,10,"对称变换:键盘方向键"pDC->TextOut(15,28,"缩放变换:Z键缩小;X键放大"pDC->TextOut(15,46,"旋转变换:键盘R键"6.添加预编译常量#define PI 3.14159267.分别编写步骤3中向视图类中添加消息映射函数,程序如下:void CTransView:OnTransformRotate(/ TODO: Add your command handler code herefloat dRadiusAngle = 30.0 *
6、 PI /180.0;for(int i=0; i<3; 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 herefloat dScaleX = 2.0;float dScaleY = 0.5;for(int i=
7、0; i<3; i+Pti.x *= dScaleX;Pti.y *= dScaleY;RedrawWindow(;/实现图形缩放void CTransView:OnTransformSymmetry(/ TODO: Add your command handler code herefor(int i=0; i<3; i+Pti.x += Pti.x;Pti.y += Pti.y;RedrawWindow(;/实现图形对称8.添加成员函数实现键盘交互式控制图形变换函数及代码如下:void CTransView:OnKeyDown(UINT nChar, UINT nRepCnt,
8、 UINT nFlags/ TODO: Add your message handler code here and/or call default int i=0;CPoint TmpPt = Pt0;switch (nCharcase VK_UP: /上for(i=0; i<3; i+Pti.y =240-(Pti.y-240;break;case VK_DOWN: /下for(i=0; i<3; i+Pti.y =240-(Pti.y-240;break;case VK_LEFT: /左for(i=0; i<3; i+Pti.x =500-(Pti.x-500;brea
9、k;case VK_RIGHT: /右for(i=0; i<3; 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; i<3; 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 = Pt0.y = 0
10、;for(i=1; i<3; 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; i<3; i+ /由于CPoint的x和y坐标值都为正值,所以如果计算出是负值来时,就直接赋0Pti.x = (floatPti.x * cos(dRadiusAngle - (floatPti.y * sin(dRadiusAngle;Pti.y = (floatPti.x * sin(dRadiusAngle + (floatPti.y * cos(dRadiusAngle;Pt0 = TmpPt;Pt1 = Pt1 + Pt0; Pt2 = Pt2 + P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州美术学院《环境科学概论》2024 - 2025 学年第一学期期末试卷
- 广西艺术学院《语言学概论》2024 - 2025 学年第一学期期末试卷
- 2025 八年级生物学下册蜜蜂群体生殖与发育特点课件
- 2025 八年级生物上册调查生活垃圾分类生物处理课件
- 政策研究报告:中国提振消费的战略选择与国际经验提振消费、扩大内需
- 2025 八年级生物上册涡虫眼点感光作用解析课件
- 百度财务笔试2025真题大全及答案
- 2025年儿科急救三基考试试题及高频考点
- 事业单位考试真题2025年联考含答案
- 2025年设计学博士面试真题库及答案详解
- 四川蒙顶山理真茶业有限公司公开招聘2名任务制员工笔试历年常考点试题专练附带答案详解2套试卷
- 2025-2026学年人教版(新教材)小学美术二年级下册教学计划及进度表
- 广东深圳市华睿欣能投资控股集团有限公司2026届校园招聘笔试备考题库及答案解析
- 2026浙江省创新投资集团有限公司招聘备考题库含答案详解(能力提升)
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 2026年部编版新教材道德与法治小学三年级下册教学计划(含进度表)
- 探秘黄河-中国的河流(第三课时)设计
- 【初中语文】九年级语文春季开学第一课(新教材统编版)
- 2026年ESG专项知识考试题目
- 项目工程调试管理流程规范
- 江西省水投集团招聘笔试题库2026
评论
0/150
提交评论