![计算机图形学上机实验实现二维图形的各种转换_第1页](http://file4.renrendoc.com/view/e30e099a26a61de58d0042626dc7a3c0/e30e099a26a61de58d0042626dc7a3c01.gif)
![计算机图形学上机实验实现二维图形的各种转换_第2页](http://file4.renrendoc.com/view/e30e099a26a61de58d0042626dc7a3c0/e30e099a26a61de58d0042626dc7a3c02.gif)
![计算机图形学上机实验实现二维图形的各种转换_第3页](http://file4.renrendoc.com/view/e30e099a26a61de58d0042626dc7a3c0/e30e099a26a61de58d0042626dc7a3c03.gif)
![计算机图形学上机实验实现二维图形的各种转换_第4页](http://file4.renrendoc.com/view/e30e099a26a61de58d0042626dc7a3c0/e30e099a26a61de58d0042626dc7a3c04.gif)
![计算机图形学上机实验实现二维图形的各种转换_第5页](http://file4.renrendoc.com/view/e30e099a26a61de58d0042626dc7a3c0/e30e099a26a61de58d0042626dc7a3c05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机图形学上机实验实现二维图形的各种转换部门:xxx时问:xxx整理范文,仅供参考,可下载自行编辑昆明理工大学理学院信息与计算科学专业操作性实验报告年级:10级 姓名:刘陈学号:201811101128指导教师:胡杰实验课程名称:计算机图形学程序设计开课实验室:理学院机房216实验成绩:学风(5观察能力(15操作能力(30调试能力(50其它总分实验内容:.实验/作业题目:用计算机高级语言VC+6.0实现计算机的基本图元绘制.实验/作业课时:2学时.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能:实验环境:1)硬件:每人一台PC机2)软件:windows OS, VC+6.0
2、或以上版本。实验内容及步骤:1)在VC+环境下创建MFCS用程序工程 单文档)2)编辑菜单资源3)添加菜单命令消息处理函数4)添加成员函数实现绘画添加二维图形 各个变换的矩 阵源码添加消实现绘画添加二维图形 各个变换的矩 阵源码息处理实现对二维图形的.算法描述、流程图或操作步骤:在lab3View.h文件中的public 内添加变量:void ClearMatrix(double A33。 / 清除变换矩阵void GetMaxY( 。 /获得屏幕的最大y值void GetMaxX( 。 / 获得屏幕的最大x 值void Draw(double D3,int。 / 绘制图形void Calcu
3、late(double P03,double T3。 / 矩阵相乘 b5E2RGbCAPvoidKeepMatrix(doubleOrig3,doubleDest43 。 / 保留矩阵值p1EanqFDPwvoid Tmove(double Tx,double Ty 。 / 平移变换计算void Tscale(double Sx,double Sy 。 / 比例变换计算void Trotate(double thta 。 / 旋转变换计算void Treflect(double Fx,double Fy 。 / 对称变换计算void Treform(double b,double c 。 /
4、错切变换计算在 lab3View.h 文件中的protected 内添加变量:int MaxX,MaxY。/屏幕x和y的最大坐标double P43 。 / 变换点double TM33 。 / 平移变换矩阵double TS33 。 / 比例变换矩阵double TR33 。 / 旋转变换矩阵double TF33 。 / 对称变换矩阵double TC33 。 / 错切变换矩阵double OSquare43/ 矩形坐标double OSquare43/ 矩形坐标double OTriangle43/ double OTriangle43/ 正三角形坐标double OLine43。 /
5、直线坐标int p3 。在 lab3View.cpp 文件中添加如下头文件:#define ROUND(a int(a+0.5/ 四舍五入#define PI 3.1415926/ 圆周率#include math.h/ 数学头文件在 lab3View.cpp 文件中的函数CLab3View:OnDraw(CDC* pDC下添加如下代码:DXDiTa9E3dGetMaxX(。GetMaxY(。pDC-MoveTo(MaxX/2,0。 / 绘制坐标轴pDC-LineTo(MaxX/2,MaxY。pDC-MoveTo(0,MaxY/2。pDC-LineTo(MaxX,MaxY/2。在 lab3Vi
6、ew.cpp 文件中添加如下的各个消息处理函数及代码:void CLab3View:GetMaxX(/ 获得屏幕宽度CRect Rect 。GetClientRect(&RectMaxX=Rect.rightvoid CLab3View:GetMaxY(/ 获得屏幕高度CRect Rect 。GetClientRect(&Rect 。MaxY=Rect.bottom。void CLab3View:ClearMatrix(double A33/ 清除变换矩阵RTCrpUDGiTfor(int i=0。 ifor(int j=0。 jAij=0。 void CLab3View:OnTriangle
7、( / 菜单函数P00=-100/2。 P01=0 。 P02=1 。 / 绘制等边三角形5PCzVD7HxAP10=100/2 。 P11=0 。 P12=1 。P20=0 。 P21=100/2*tan(60*PI/180。P22=1 。P30=0 。 P31=0 。 P32=1 。p3=3。KeepMatrix(P,OTriangle 。Draw(P,p3。 InvalidateRect(NULL,FALSE 。 / 重画窗口void CLab3View:OnSquare(/ 菜单函数P02=1 。 / 绘制矩形P02=1 。 / 绘制矩形P11=100/2 。 P12=1P21=-10
8、0/2 。 P22=1。P31=-100/2P10=100/2P20=100/2P30=-100/2P32=1 。p3=4。KeepMatrix(P,OSquare 。Draw(P,p3。 InvalidateRect(NULL,FALSE 。 / 重画窗口void CLab3View:OnLine(/ 菜单函数P00=-150/2。 P01=0 。 P02=1 。 / 绘制直线P10=150/2 。 P11=0 。 P12=1 。P20=0 。 P21=0 。 P22=1 。P30=0 。 P31=0 。 P32=1 。p3=2。KeepMatrix(P,OLine 。Draw(P,p3。
9、InvalidateRect(NULL,FALSE 。 / 重画窗口void CLab3View:Draw(double D3,int n/ 绘制图形 RedrawWindow(。CClientDC dc(this 。CPen pen,*pOldpen 。pen.CreatePen(PS_SOLID,2,RGB(0,0,0 。pOldpen=dc.SelectObject(&pen 。for(int i=0。 iif(i=0Di1dc.MoveTo(ROUND(MaxX/2+Di0,ROUND(MaxY/2- jLBHrnAILgDi1elsedc.LineTo(ROUND(MaxX/2+Di
10、0,ROUND(MaxY/2-Di1 。 xHAQX74J0Xdc.LineTo(ROUND(MaxX/2+D00,ROUND(MaxY/2-D01 。 LDAYtRyKfEdc.SelectObject(pOldpen 。pen.DeleteObject( 。void CLab3View:Calculate(double P03,double T3/两个矩阵相乘Zzz6ZB2Ltkdouble Ptemp43。KeepMatrix(P,Ptemp 。for(int i=0。 ifor(int j=0。 jPij=Ptempi0*T0j+Ptempi1*T1j+Ptempi2*T2j。dvzf
11、vkwMI1void CLab3View:OnMENUleft(/ 向左平移Tmove(-10,0 。 void CLab3View:OnMENUright(/ 向右平移Tmove(10,0。 void CLab3View:OnMENUup( / 向上平移Tmove(0,10。 void CLab3View二OnMENUdown( 向下平移Tmove(0,-10。 void CLab3View:OnMENUClockwise(/ 顺时针旋转Trotate(30 。 void CLab3View:OnMENUAnticlockwise(/ 逆时针旋转Trotate(-30 。 void CLab
12、3View:OnMENUIncrease(/ 放大比例Tscale(2,2 。 void CLab3View:OnMENUDecrease(/ 缩小比例Tscale(0.5,0.5 。 void CLab3View:OnMENUXaxis(/X 轴对称 TOC o 1-5 h z Treflect(1,-1。void CLab3View:OnMENUYaxis(/Y 轴对称Treflect(-1,1。void CLab3View:OnMENUorg( / 原点对称Treflect(-1,-1。void CLab3View:OnMENUXdirectionplus(/X 正向错切 Treform
13、(0,1 。 void CLab3View:OnMENUXdirectionneg(/X 负向错切Treform(0,-1 。 void CLab3View:OnMENUITYdirectionplus(/Y 正向错切Treform(1,0 。 void CLab3View:OnMENUYdirectionneg(/Y 负向错切Treform(-1,0 。 void CLab3View:OnMENUReset( / 复位if(p3=4 TOC o 1-5 h z KeepMatrix(OSquare,P 。if(p3=3KeepMatrix(OTriangle,P 。if(p3=2KeepMa
14、trix(OLine,P 。Draw(P,p3。void CLab3View:Tmove(double Tx,double Ty/ 平移变换矩阵ClearMatrix(TMRedrawWindow(。TM00=1 。 TM11=1 。 TM20=Tx 。 TM21=Ty 。TM22=1 。 rqyn14ZNXICalculate(P,TM 。AfxGetMainWnd(-SetWindowText( 二维几何变换平移变换 。Draw(P,p3。void CLab3View:Tscale(double Sx,double Sy/ 比例变换矩阵EmxvxOtOcoClearMatrix(TS 。R
15、edrawWindow(。TS00=Sx 。 TS11=Sy 。 TS22=1 。Calculate(P,TS 。AfxGetMainWnd(-SetWindowText( 二维几何变换比例变换 。Draw(P,p3。void CLab3View:Trotate(double thta/ 旋转变换矩阵ClearMatrix(TR 。RedrawWindow(。void CLab3View:Treform(double b,double c/void CLab3View:Treform(double b,double c/错切变换矩阵TR00=cos(thta*PI/180TR01=sin(th
16、ta*PI/180。 SixE2yXPq5TR10=-sin(thta*PI/180。TR11=cos(thta*PI/180。TR22=1 。 6ewMyirQFLCalculate(P,TR 。AfxGetMainWnd(-SetWindowText( 二维几何变换旋转变换 。Draw(P,p3。void CLab3View:Treflect(double Fx,double Fy/ 反射变换矩阵 kavU42VRUsClearMatrix(TF 。RedrawWindow(。TF00=Fx 。 TF11=Fy 。 TF22=1 。Calculate(P,TF 。AfxGetMainWnd
17、(-SetWindowText( 二维几何变换反射变换 。Draw(P,p3。ClearMatrix(TCRedrawWindow(。TC00=1 。 TC01=b 。TC10=c 。 TC11=1 。TC22=1 。 y6v3ALoS89Calculate(P,TC 。AfxGetMainWnd(-SetWindowText( 二维几何变换错切变换 。Draw(P,p3。void CLab3View:KeepMatrix(double Orig3,doubleDest3 M2ub6vSTnPint i,j 。for(i=0 。 ifor(j=0 。 jDestij=Origij 。6实验数据和实验结果用屏幕图形表示,可另加附页):打开Dubug内lab3.exe点击菜单栏“绘画”,在工作区绘画,画好后单击各个功能选项。结果如下: 初始图1.平移 左移)平移 上移
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024卷烟营销工作计划范文
- 2024年文综组教研工作计划
- 幼儿园春季学期卫生工作计划
- 2024年上学期中学班主任工作计划样本
- 社区健康教育促进计划社区健康教育计划
- 九年级班主任个人工作计划范文
- 家装业务员每日工作计划
- 2024商业营业厅租赁标准协议版A版
- 乡镇环保工计划
- 社区戒毒与社区康复工作计划
- GB 3149-2004食品添加剂磷酸
- 中医拔罐技术试题及答案
- 2023年苏教版小学数学全套教材内容安排表
- 灭火器验收表
- 课件:尊重他人
- 俄罗斯教育课件
- 公开课《卡门序曲》优秀精选课件
- 第二单元写作《学写传记》课件-部编版语文八年级上册
- 矿区关键任务作业指导书
- 人教版 小学数学 三年级上册 易错题集锦及答案
- 股骨干骨折的护理查房课件
评论
0/150
提交评论