计算机图形学实验:二维图形变换.docx

计算机图形学实验:二维图形变换.docx

ID:55040214

大小:82.99 KB

页数:9页

时间:2020-04-26

计算机图形学实验:二维图形变换.docx_第1页
计算机图形学实验:二维图形变换.docx_第2页
计算机图形学实验:二维图形变换.docx_第3页
计算机图形学实验:二维图形变换.docx_第4页
计算机图形学实验:二维图形变换.docx_第5页
资源描述:

《计算机图形学实验:二维图形变换.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验三二维图形变换一、实验任务1.通过二维几何变换的数学模型,编写缩放、旋转、对称变换;2.实现图形变换的交互式操作:缩放、旋转、对称变换等;二、实验内容1.放大缩小变换放大缩小变换公式为:x’=x..Sx,y’=y.Sy;其中Sx,Sy分别为x,y方向的放缩比例系数。变换矩阵表达式为:Sx000Sy0001[x’y’1]=[xy1]可通过下面不同的比例系数来显示程序运行结果。(1)Sx=Sy=1.5;等比例放大(2)Sx=Sy=0.5;等比例缩小2.对称变换包括以x轴对称、y轴对称和原点O对称三种。由于屏幕坐标只有第一象限,我们可以将原点平移到(500,240)处。在第一象限画

2、出一个三角形,然后分别求出三个对称图形。3.旋转变换将图形上的点(x,y)旋转θ角度,得到新的坐标(x’,y’)为:x’=xcosθ-ysinθ,y’=xsinθ+ycosθ;cosθsinθ0-sinθcosθ0001变换矩阵表示为:[x’y’1]=[xy1]4.三、设计思路1.通过二维几何变换的数学模型,编写缩放、旋转、对称变换;2.以(500,240)为原点建立图形变换的参考坐标系;3.通过键盘按键控制图形的缩放、旋转、对称变换;4.变换图形设定为以Pt[0](540,220)、Pt[1](670,130)、Pt[2](560,120)为顶点的三角形。步骤:1.建立Tran

3、s工程文件;81.利用ResourceView设计菜单,如图所示;菜单菜单项ID值图形变换(&T)缩放(&Z)ID_TRANSFORM_SCALE图形变换(&T)旋转(&R)ID_TRANSFORM_ROTATE图形变换(&T)对称(&S)ID_TRANSFORM_SYMMETRY2.在CTransView视图类中添加消息映射函数;对象消息函数ID_TRANSFORM_SCALECOMMANDOnFigureCirleID_TRANSFORM_ROTATECOMMANDOnFigureEllipseID_TRANSFORM_SYMMETRYCOMMANDOnTransformSy

4、mmetry3.添加自定义的成员变量:CPointPt[3];//三角形定点数组floatdAngle;//每一次旋转的角度在视图类CPP文件的构造函数中初始化成员变量Pt[0].x=540;Pt[0].y=220;Pt[1].x=670;Pt[1].y=130;Pt[2].x=560;Pt[2].y=120;dAngle=0;4.在视图类的OnDraw()函数中加入下列代码,实现视图绘图。voidCTransView::OnDraw(CDC*pDC){CTransDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);8//TODO:adddrawc

5、odefornativedatahere//绘出以以(540,220)、(670,130)、(560,120)为顶点的三角形。pDC->MoveTo(Pt[0]);pDC->LineTo(Pt[1]);pDC->LineTo(Pt[2]);pDC->LineTo(Pt[0]);//绘出以(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轴

6、");//控制信息pDC->TextOut(15,10,"对称变换:键盘方向键");pDC->TextOut(15,28,"缩放变换:Z键缩小;X键放大");pDC->TextOut(15,46,"旋转变换:键盘R键");}1.添加预编译常量#definePI3.2.分别编写步骤3中向视图类中添加消息映射函数,程序如下:voidCTransView::OnTransformRotate(){//TODO:AddyourcommandhandlercodeherefloatdRadiusAngle=30.0*PI/180.0;for(inti=0;i<3;i++){Pt[i].x=

7、Pt[i].x*cos(dRadiusAngle)-Pt[i].y*sin(dRadiusAngle);Pt[i].y=Pt[i].x*sin(dRadiusAngle)+Pt[i].y*cos(dRadiusAngle);}RedrawWindow();}//实现图形旋转voidCTransView::OnTransformScale(){//TODO:AddyourcommandhandlercodeherefloatdScaleX=2.0;floatdScaleY=0.5;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。