计算机图形学opengl实验图形变换,要求在同一个窗口中显示原 图以及平移、旋转、缩放变换之后的图。以正方形为例
时间: 2024-12-20 08:17:42 浏览: 13
在计算机图形学中,OpenGL是一个常用的三维图形库,用于创建渲染场景。为了在同一个窗口中展示原始图形及其经过平移、旋转和缩放的变换,你需要理解基本的图形变换矩阵。
1. **初始化并设置窗口**:
首先,创建一个OpenGL窗口,并设置好视口和投影矩阵。
2. **绘制原图**:
使用顶点数组或者其他OpenGL数据结构,将正方形的几何信息传入,如顶点坐标、颜色等。通过`glDrawArrays()`或`glDrawElements()`函数绘制。
3. **平移变换**:
对图形应用平移变换时,需要构建一个4x4的平移矩阵,它的前3行表示平移向量,第4行是常数(0, 0, 0, 1)。比如,如果你想要向右移动5单位,向上移动3单位,矩阵会是:
```
[1, 0, 0, 5]
[0, 1, 0, 3]
[0, 0, 1, 0]
[0, 0, 0, 1]
```
然后乘以模型视图矩阵来应用到当前的图形上。
4. **旋转变换**:
创建一个旋转矩阵,围绕特定轴旋转一定的角度。例如,绕X轴顺时针90度,矩阵会是:
```
[cosθ, -sinθ, 0, 0]
[sinθ, cosθ, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
```
替换对应的元素,其中θ是旋转的角度。
5. **缩放变换**:
缩放矩阵也是一样的,只需替换对应位置的值。例如,沿X轴放大2倍,Y轴不变,Z轴不变:
```
[s, 0, 0, 0]
[0, s, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
```
其中s是缩放因子。
6. **组合变换**:
将这三个变换矩阵相乘(从右到左),形成复合变换矩阵。这一步是关键,因为图形处理管线是逆序的,所以我们需要从后往前推导。
7. **模型视图变换**:
将复合变换矩阵作为新的模型视图矩阵传递给OpenGL,它会被自动应用于当前的模型。
8. **多次循环更新变换**:
在渲染循环中,每次可以改变其中一个或多个变换参数,然后重新计算变换矩阵,以实时看到变换效果。
完成以上步骤后,你应该能在同一个窗口中看到正方形经过平移、旋转和缩放后的变化。
阅读全文