




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验性三维图形变换一.实验任务1.通过二维几何变换的数学模型编写缩放、旋转和对称变换;2.图形变换的交互操作:缩放、旋转、对称变换等。二、实验内容1.放大和缩小放大和缩小变换公式为:x=x.Sx,y=y.Sy。其中sx Sx、Sy分别是x和y方向的比例系数。变换矩阵表达式为:Sx 0 00 Sy 00 0 1x y 1=x y 1程序运行结果可以通过以下不同的比例因子显示。(1)Sx=Sy=1.5;等比例放大(2)Sx=Sy=0.5;按比例减低2.对称变换它包括三种对称:X轴对称、Y轴对称和原点对称。由于屏幕坐标只有第一个象限,我们可以将原点移动到(500,240)。在第一个象限画一个三角形,然后分别找到三个对称的图形。3.旋转变换将图形上的点(x,y)旋转角,获得新的坐标(x,y),如下所示:x=xcos-ysin,y =xsinycos;cos sin 0-sin cos 00 0 1转换矩阵表示为:x y 1=x y 14.第三,设计理念1.通过二维几何变换的数学模型编写缩放、旋转和对称变换;2.建立以(500,240)为原点的图形转换参考坐标系;3.通过键盘按键控制图形的缩放、旋转和对称变换;4.变换图被设置为三角形,以pt0(540,220)、pt1(670,130)、pt2(560,120)作为顶点。步骤:1.建立跨工程文件;2.使用资源视图设计菜单,如图所示;菜单菜单项标识值图形变换缩放(z)ID_TRANSFORM_SCALE图形变换辐状的ID _变换_旋转图形变换对称身份变换对称3.向CTransView视图类添加消息映射函数;目标消息功能ID_TRANSFORM_SCALE命令配置文件ID _变换_旋转命令配置列表身份变换对称命令变形对称4.添加自定义成员变量:3;/三角形定点数组浮动悬挂;/每次旋转的角度初始化视图类CPP文件的构造函数中的成员变量0。x=5400。y=220Pt1。x=670Pt1。y=130Pt2。x=560Pt2。y=120悬挂=0;5.在视图类的OnDraw()函数中添加以下代码,实现视图绘制。void ctransview : ondraw(CDC * PDc)CTransDoc * PDoc=GetDocument();ASSERT _ VALID(PDoc);/在这里为本地数据添加绘图代码/绘制以(540,220)、(670,130)、(560,120)为顶点的三角形。pDC-移动到(时间0):pDC-line to(Pt1);pDC-line to(Pt2);pDC-line to(Pt0);/以(500,240)为原点绘制坐标轴pDC-移动到(100,240);pDC-LineTo(900,240);pDC-移动到(500,5);pDC-LineTo(500,400);PDC-文本输出(900,235, x轴);PDC-文本输出(500,400,“y轴”);/控制信息PDC-文本输出(15,10,“对称变换:键盘方向键”);PDC-文本输出(15,28,缩放转换:z键缩小;“x键放大”);文本输出(15,46,“旋转变换:键盘r键”);6.添加预编译常数#定义PI 3。7.分别编写在步骤3中添加到视图类的消息映射函数。程序如下:void ctransview : ontransformrotate()/在这里添加您的命令处理程序代码浮子流量=30.0 */180.0;对于(int I=0;i3;(I)一世。x=Pti。x * cos(DradiusgLe)-PtI。y * sin(Dradiusingle);一世。y=Pti。一世。y * cos(Dradiusingle);重绘窗口();/实现图形旋转void ctransview : ontransformscale()/在这里添加您的命令处理程序代码浮点dScaleX=2.0浮点dScaleY=0.5对于(int I=0;i3;(I)一世。x *=dScaleX。一世。y *=dScaleY。重绘窗口();/实现图形缩放void ctransview :ontransform对称()/在这里添加您的命令处理程序代码对于(int I=0;i3;(I)一世。x=Pti。x;一世。y=Pti。y;重绘窗口();/实现图形对称8.添加成员函数实现键盘交互控制图形转换功能和代码如下:void ctrl ansview : OnKeyDown(UINT NChar,UINT nRepCnt,UINT nFlags)/在此添加您的消息处理程序代码和/或调用默认值整数1=0;0;开关(nChar)VK_UP:/上对于(1=0;i3;一世.y=240-(一区).y-240);休息;VK _唐:/下对于(1=0;i3;一世.y=240-(一区).y-240);休息;VK_LEFT:/左对于(1=0;i3;一世.x=500-(1号铂).x-500);休息;VK_RIGHT:/右对于(1=0;i3;一世.x=500-(1号铂).x-500);休息;案例0X5A:/Z的美国信息交换标准码码1=1-0;2=2-0;0 .x=0 .y=0;对于(I=1;i3;一世.x *=0.5一世.y *=0.5pt0=TMPPt;1=10;2=20;休息;案例0X58:/X的美国信息交换标准码码1=1-0;2=2-0;0 .x=0 .y=0;对于(I=1;i3;一世.x *=2.0一世.y *=2.0pt0=TMPPt;1=10;2=20;休息;案例0X52 : /R的美国信息交换标准码码悬挂=-1.0;/每一次逆时针旋转一度浮动dRadiusAngle=悬空*/180.0;1=1-0;2=2-0;0 .x=0 .y=0;对于(整数1=1;i3;i )/由于CPoint的x和y坐标值都为正值,所以如果计算出是负值来时,就直接赋0一世.x=(浮动一世.x * cos(dradiunine)-(float)Pt1y * sin(Dradiunine);一世.y=(浮动一世.x * sin(Dradiuonune)(float)Pt1号).y * cos(Dradiunion);pt0=TMPPt;1=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级会计实务考试规律探讨试题及答案
- 未来社会学的任务与挑战考察试题及答案
- 2025至2030年中国不锈钢桌市场分析及竞争策略研究报告
- 2025年音乐流媒体平台版权运营与版权纠纷处理报告
- 教师一日工作流程标准化培训
- 2025年财务管理考试的特殊技巧试题及答案
- 海南省省直辖县级行政单位本年度(2025)小学一年级数学统编版期末考试(上学期)试卷及答案
- 员工旅游家属协议书
- 合作代建合同协议书
- 医院股权典当协议书
- 2023年智慧树知到《大学生安全文化》答案全
- 《CMOS反相器的设计》课件
- 《中学生入学协议书》
- 头晕课件完整版本
- 2024年5月26日河南省事业单位联考《职业能力测试》试题
- 2025年高考作文专练(25道真题+审题立意+范文)- 2025年高考语文作文备考总复习
- 大学生创新创业基础学习通超星期末考试答案章节答案2024年
- 2023年山东省日照市生物中考真题(解析版)
- 人教版PEP英语六年级下册Unit2单元教学设计
- 安徽省宿州市泗县2025届初三一模试题(物理试题文)试题含解析
- 拖拉机买卖合同协议书(2024版)
评论
0/150
提交评论