版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术合同签订与管理规定介绍
- 2026广西贺州富川瑶族自治县市场监督管理局招聘工作人员1名备考题库含答案详解(模拟题)
- 2026浙江省人民医院助理类劳务用工人员招聘32人备考题库及完整答案详解1套
- 2026黑龙江牡丹江市穆棱市特聘农技员招募8人备考题库及参考答案详解一套
- 2026安徽合肥物流控股集团有限公司猎聘3人备考题库含答案详解(能力提升)
- 2026湖南长沙中职学校教师招聘48人备考题库附答案详解(培优b卷)
- 2026湖南长沙市雨花区统计局招聘工作人员1人备考题库及参考答案详解
- 2026新疆天宜养老有限责任公司招聘6人备考题库附答案详解(达标题)
- 2026山东师范大学附属小学第二批招聘14人备考题库含答案详解(培优b卷)
- 2026春季中国南水北调集团新能源投资有限公司校园招聘备考题库含答案详解(满分必刷)
- 2026青海交通控股集团校招面试题及答案
- GB/T 46692.2-2025工作场所环境用气体探测器第2部分:有毒气体探测器的选型、安装、使用和维护
- 精准护理实践儿童康复护理课件
- TCBDA63-2022建筑装饰室内石材及瓷板干挂技术规程
- 公猪站培训课件
- 2025年特色美食街区开发可行性研究报告
- 7793-2025中小学校教室采光和照明卫生标准
- 自动喷水灭火系统
- 荆门市中石油2025秋招写作申论万能模板直接套用
- 沥青薄层罩面技术
- 2025年2月计算机维修工五级考试题(含答案)
评论
0/150
提交评论