文档详情

计算机图形学实验报告几何变换.doc

发布:2017-06-06约2.5千字共6页下载文档
文本预览下载声明
计算机图形学实验报告 计算机图形学实验报告 姓 名 徐沛华 班级 1011 学号成绩 实验名称 二维图形的几何变换 实验目的 对平面图形进行平移、缩放、旋转、对称 实验步骤 算法分析: 图形变换是指对图形的几何信息经过几何变换后产生新的图形。图形变换既可以看作坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化;也可以看作图形不动而坐标系变动,变动后,该图形在新的坐标系下具有新的坐标值。 设(x,y)为图形原坐标值,经几何变换后坐标值变为()。以下为四种常用的几何变换公式。 (a) 平移变换: 平移变换在前面的任务中已经用到过,它的变换公式为: (b) 旋转变换: 绕原点旋转的变换公式为: (c) 放缩变换: 几种变换可以组合在一起形成复合变换。例如平移变换与旋转变换组合得到: (d) 相对点的旋转变换: ii、算法程序: void CZhouView::pingyi() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo(m_nPoint1.x+100,m_nPoint1.y+100); dc.LineTo(m_nPoint2.x+100,m_nPoint2.y+100); } void CZhouView::xuanzhuan() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo((m_nPoint1.x*cos(0.5))-(m_nPoint1.y*sin(0.5)),(m_nPoint1.x*sin(0.5))+(m_nPoint1.y*cos(0.5))); dc.LineTo((m_nPoint2.x*cos(0.5))-(m_nPoint2.y*sin(0.5)),(m_nPoint2.x*sin(0.5))+(m_nPoint2.y*cos(0.5))); } void CZhouView::bili() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo(m_nPoint1.x*2,m_nPoint1.y*2); dc.LineTo(m_nPoint2.x*2,m_nPoint2.y*2); } void CZhouView::XCQ() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x+100,m_nPoint2.y); } void CZhouView::DC() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo(m_nPoint1.y,m_nPoint1.x); dc.LineTo(m_nPoint2.y,m_nPoint2.x); } void CZhouView::YCQ() { CClientDC dc(this); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y); dc.MoveTo(m_nPoint1.x,m_nPoint1.y); dc.LineTo(m_nPoint2.x,m_nPoint2.y+100); } //OnLButtonUp(UINT nFlags, CPoint point) case 8: pingyi(); break; case 9: xuanzhuan(); break; case 10: bili(); break; case 11: XCQ(); break; case 12: YCQ(); break; case 13: DC(); break; dc.MoveTo(m_nPo
显示全部
相似文档