计算机图形学实验5opengl二维几何变换
时间: 2025-04-01 07:17:30 浏览: 31
### 使用OpenGL实现计算机图形学中的二维几何变换
在计算机图形学领域,OpenGL 是一种广泛使用的工具库,用于绘制和操作三维以及二维图形。通过 OpenGL 的矩阵运算功能,可以轻松实现平移、旋转和缩放等基本的二维几何变换。
#### 平移变换
平移是一种简单的几何变换,它将对象沿某个方向移动特定的距离。可以通过设置模型视图矩阵来实现这一效果。以下是使用 OpenGL 进行平移的一个简单示例:
```cpp
#include <GL/glut.h>
void display() {
glClear(GL_COLOR_BUFFER_BIT);
// 设置颜色为红色
glColor3f(1.0, 0.0, 0.0);
// 开始定义多边形
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5); // 原始顶点位置
glVertex2f(0.5, -0.5);
glVertex2f(0.5, 0.5);
glVertex2f(-0.5, 0.5);
glEnd();
// 应用平移变换
glTranslatef(0.7, 0.7, 0.0);
// 绘制经过平移后的多边形
glColor3f(0.0, 1.0, 0.0); // 改变颜色以便区分原始形状和平移后的形状
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(0.5, -0.5);
glVertex2f(0.5, 0.5);
glVertex2f(-0.5, 0.5);
glEnd();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutCreateWindow("OpenGL Translation Example");
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
}
```
上述代码展示了如何利用 `glTranslatef` 函数进行物体的平移[^1]。
#### 缩放变换
缩放变换会改变对象的比例大小。同样地,在 OpenGL 中也可以通过调整模型视图矩阵来进行此操作。
```cpp
// 在显示函数中应用缩放变换
glScalef(1.5, 0.5, 1.0); // 对象将在X轴上放大1.5倍,Y轴缩小到一半
```
这段代码片段演示了如何调用 `glScalef` 来执行缩放操作[^2]。
#### 旋转变换
为了使对象围绕原点或其他指定点旋转一定角度,可采用如下方法:
```cpp
// 定义旋转角 (单位:度数)
float angle = 45;
// 执行旋转前先恢复初始状态以防累积影响
glPushMatrix();
{
glRotatef(angle, 0.0, 0.0, 1.0); // Z轴上的顺时针旋转
// 此处继续绘图逻辑...
}
glPopMatrix(); // 结束局部坐标系修改
```
这里介绍了如何运用 `glRotatef` 方法完成绕Z轴的旋转处理。
以上就是基于 OpenGL 实现常见二维几何变换的一些基础概念及其对应的 C++ 示例代码展示。
阅读全文
相关推荐

















