三维图形几何变换和投影变换实验报告
三维图形几何变换和投影变换实验报告 本实验报告旨在实现三维图形几何变换和投影变换,具体来说是掌握 4*4 矩阵乘法运算的编程实现、平移、比例、旋转三种基本三维几何变换矩阵生成、正交投影图的生成和绘制方法。 在实验中,我们设计了三维坐标系,原点位于屏幕中心,X 轴水平向右,Y 轴垂直向上,Z 轴垂直于坐标屏幕,指向屏幕外。然后,我们设计了三维图形变换类,具有平移、比例、旋转三维几何变换功能,以及正交投影变换功能。 在实验中,我们使用实验二的直线类绘制正四面体的三维线框模型,要求体心位于坐标原点,使正四面体同时绕 Y 轴匀速旋转,并相对于体心点来回缩放。然后,我们使用双缓冲机制,绘制正四面体三维线框模型的二维正交投影图,要求投影到 XOY 平面。 在核心算法设计中,我们介绍了三维物体的几何变换是在二维方法基础上增加了对 z 坐标的考虑得到的。同二维变换一样,三维基本变换都是相对于坐标原点和坐标轴进行的几何变换:有平移、比例、旋转、对称和错切等。我们引入齐次坐标表示,即:三维空间中某点的变换可以表示成点的齐次坐标与四阶的三维变换矩阵相乘。 在类型设计中,我们设计了直线扫描转换类 Line.h 及 Line.cpp;几何变换类 CTrans3D.h 及 CTrans3D.cpp;三维坐标类 CP3Edge.h 及 CP3Edge.cpp。 在程序设计实现中,我们基于实验二直线扫描转换算法进行实现。我们建立三维齐次坐标顶点类和边表类,创建头文件和源文件,在三维坐标类 CP3Edge 添加坐标;新建三维图形几何变换类 CTrans3D 头文件,成员函数应包括 4*4 矩阵算法运算函数,变换矩阵重置函数,平移、比例、旋转三维变换函数,以及相对于任意参考点的三维复合变换函数;新建三维几何变换类 CTrans3D 源文件。 在流程图中,我们展示了程序的流程图,包括设置绘图坐标系、添加双缓冲机制、绘制坐标轴、旋转、缩放、正交投影变换、绘制动态旋转和缩放的四面体三位线框图的二维正交投影图、将内存位图拷贝到屏幕。 在实验结果中,我们展示了实验的结果,包括三维图形几何变换和投影变换的实现。但是,在实验过程中,我们也遇到了问题,我们发现少一条线段,通过反复地对比代码,发现是 Line 类文件中缺少了 z 轴的定义。在与同学的交流分析后终于发现了自己的错误之处,然后最终成功得到了本次实验结果。 本实验报告展示了三维图形几何变换和投影变换的实现,包括四阶矩阵的乘法运算、平移、比例、旋转三种基本三维几何变换矩阵生成、正交投影图的生成和绘制方法。实验结果证明了我们的设计和实现是正确的,并且我们也学到了许多有用的经验和知识。
- 粉丝: 603
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助