C++实现计算机图形学二维平移与组合变换实验

需积分: 9 1 下载量 160 浏览量 更新于2024-07-24 收藏 86KB DOC 举报
本篇资源主要介绍了如何在C++和OpenGL环境下实现几何变换,特别是二维平移变换。实验5的目标是让学生理解和掌握基本的图形变换概念,包括平移、旋转和缩放,以及它们的组合应用。 首先,实验要求学生理解变换的原理,即在计算机图形学中,变换是为了改变物体在二维或三维空间中的位置、大小、方向等属性。平移变换是最基础的变换之一,它涉及在坐标系中移动对象。在这个例子中,定义了一个名为`wcPt2D`的结构体,用于存储二维点的坐标(x, y),如`(10, 10)`。 提供的代码片段展示了如何通过`translate2D`函数进行二维平移,该函数接收一个顶点数组`verts`,其包含`nVerts`个点,以及平移的两个参数`tx`和`ty`。函数通过遍历每个顶点,逐个更新它们的x和y坐标,实现整体的平移操作。例如,当`tx`和`ty`分别为20和20时,会将所有点在x轴和y轴上分别向右和向上移动20个单位。 接着,代码引入了`GLUT`库,这是一个用于创建图形用户界面的库,它包含了`init`和`myDraw`函数。`init`函数设置了窗口的基本设置,如背景颜色和视口范围,并初始化了三角形的顶点。三角形的五个顶点被赋值为(10, 10)、(100, 10)、(150, 50)、(100, 100)和(10, 100),形成一个五边形。 `myDraw`函数是图形绘制的核心部分,它在每次窗口刷新时被调用。在这里,先清除颜色缓冲区,然后绘制红色的三角形,平移功能是在`translate2D`函数中实现的,通过调用这个函数,三角形的位置可以根据鼠标操作实时变化,左键和右键分别控制在x和y方向上的平移。 通过这个实验,学习者不仅能掌握二维平移的具体实现,还能体验到如何结合鼠标交互在图形应用程序中动态调整图形变换。后续的实验可能会扩展到旋转和缩放变换,以及它们与平移的组合,进一步提升对计算机图形学几何变换的理解和实践能力。