2022年二维图形的几何变换 .pdf
实验报告学院:计信学院专业:计算机科学与技术(软件工程方向)班级: 07 软件 2班姓名学号实验组实验时间2010.5.24指导教师成绩实验项目名称二维图形的几何变换实验目的掌握二维图形的基本几何变换:位置改变(平移、旋转)和变形(缩放、错切,反射、投影等)以及复合变换。实验要求实现二维图形的集合变换实验原理1平移变换平移变换将一点P沿直线路径从一个坐标集团移动到另一个坐标位置的一个重定位过程。如果点 p1(x1,y1.z1 )是由点 p(x,y,z)在 x 轴,y 轴和 z 轴分别移动tx,ty,tz距离得到的,则这两点坐标间的关系为X1=x+tx, y1=y+ty,z1=z+tz该式的矢量形式为:p1=p+T其中, p1,p,T分别定义为发下向量:P1=x1,y1,z1 p=x,y,z T=tx,ty,tz 2 二维图形变换主要是基于齐次坐标方程, 通过一些简单的矩阵运算来实现:二维齐次坐标变换的矩阵形式是: ihgfedcba矩阵的每个元素都有特殊含义. 基中可以对图形进行缩放, 旋转 , 对称 ,错切等edba变换 ;是对图形进行平移变换;的对图形作投影变换;则是对图形整体进行缩放fchgi名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 变换 .例如 : 将一个图形在X方向中平移tx 个单位 , 在 Y方向平移ty 个单位 . 其实现过程如下:1),(111001001111yxtytxTtyytxxyxtytxyx其中 :x1,y1是变换后的坐标,x,y是变换前的坐标, 通过上述变换 ,(x,y)被平移了P(tx,ty).在二维平面上任何复杂的变换都可以通过上述基本变换的组合来实现. 级合方式在计算机上主要体现在矩阵的乘法运算, 即将各个简单变换的矩阵逆序相乘, 就可以得到一个总的变换矩阵 . 利用这个总的变换矩阵就可以对图形进行复合变换.实验环境硬件平台: PC运行环境: Windows平台, Visual C+实验步骤1编写程序完成实验内容的要求2实验总结。实验内容1. 设有一三角形ABC,其中三个顶点为A(5,10),B(1,2),C(8,5),如三角形的顶点A不变,将 AB和 AC边缩小一倍后,求缩小后的三角形对于直线-2x+4y+3=0的对称变换后的结果图。2将一四边形以原点为中心,以15为间隔旋转。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 实验结果class CMyDlg : public CDialogpublic: double xy42;void Point();/图形顶点 void duichen();对称变换BOOL CMyDlg:OnInitDialog()/ TODO: Add extra initialization here/ 顶点 Axy00=60;xy01=100; /顶点 Bxy10=10;xy11=20; /顶点 Cxy20=80;xy21=50;/ 顶点 Dxy30=120;xy31=100;void CMyDlg:OnPaint() CWnd* pWnd=GetDlgItem(IDC_STATIC);CDC* pDC=pWnd-GetDC(); pDC-SetViewportOrg(200,160); pDC-MoveTo(0,-150);/控制纵向坐标 pDC-LineTo(0,200);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - pDC-MoveTo(-200,0);/控制横向坐标pDC-LineTo(180,0);void CMyDlg:OnRadio1() / TODO: Add your control notification handler code herestep=1;void CMyDlg:OnRadio2() / TODO: Add your control notification handler code herestep=2;void CMyDlg:OnCreate() / TODO: Add your control notification handler code hereCMyDlg:Point();void CMyDlg:OnPrint() / TODO: Add your control notification handler code herexy10=xy10-(xy10-xy00)/2.0;xy11=xy11-(xy11-xy01)/2.0;xy20=xy20-(xy20-xy00)/2.0;xy21=xy21-(xy21-xy01)/2.0;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - CMyDlg:Point();void CMyDlg:OnOK() /旋转函数/ TODO: Add extra validation heredouble r;/旋转 15 度r=15/180.0*3.1415926;for(int i=0;iGetDC();/ 画图形边界if(step=1)for(int i=0;iMoveTo(xyi0+200,xyi1+160);pDC-LineTo(xyi+10+200,xyi+11+160);pDC-MoveTo(xyi0+200,xyi1+160);pDC-LineTo(xy00+200,xy01+160);if(step=2)for(int i=0;iMoveTo(xyi0+200,xyi1+160);pDC-LineTo(xyi+10+200,xyi+11+160);pDC-MoveTo(xyi0+200,xyi1+160);pDC-LineTo(xy00+200,xy01+160);void CMyDlg:duichen()/对称变换函数/ 求缩小后的三角形对于直线-2x+4y+3=0 的对称变换后的结果图。double xy122,x1,y1;xy101=-80;xy110=100;/ 如果 x=100 时xy111=(-3+2*100)/4.0;/ 如果 y=-80 时xy100=(3+(-80)*4)/2.0;CWnd* pWnd=GetDlgItem(IDC_STATIC);CDC* pDC=pWnd-GetDC();名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - pDC-MoveTo(xy100+200,xy101+160);/画对称轴 pDC-LineTo(xy110+200,xy111+160); /对称变换 , 利用斜率特性,若两直线垂直,则k1=-1/k2/ 只针对三角形 for(int i=0;i3;i+)x1=(xyi1+2*xyi0+0.75)/2.5;y1=(xyi1+2*xyi0-3)/5.0;xyi0=x1+(x1-xyi0); xyi1=y1-(xyi1-y1);CMyDlg:Point();截图如下图所示:画三角形以 A为顶点,各边缩小一半名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 关于 X轴对称名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 画四边形以原点为中心旋转15 度名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 实验总结1、 通过本次试验,我基本掌握了二维几何变换的方法。2、 从基本的几何问题入手,根据实际的变换过程编写程序。其中遇到了不少问题,比如,在求关于直线的对称时,最开始由于对称变换的变换矩阵出现了错误,使得最后出现了非预期的结果。最后通过检查,才发现了这个问题。3、 二维几何变换有着广泛的应用,使得数学的基本知识在计算机上得到了实现。指导教师意见签名:年月日注:可根据教学需要对以上栏目进行增减。表格内容可根据内容扩充。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -