OpenGL-学习之路-简单二维几何变换及应用

本文介绍了OpenGL中的二维几何变换,包括gluOrtho和glViewport的使用,以及简单二维图形的平移、旋转和缩放。通过示例展示了如何绘制太阳、地球、月球的动态旋转和自行车动画,深入理解OpenGL图形变换的应用。
摘要由CSDN通过智能技术生成

简单二维几何变换


1. 回顾gluOrtho和glViewport


在OpenGL中,gluOtho和glViewport 为两个比较重要的投影变换函数。

-gluOrtho 是创建一个正交平行的视影体的矩阵,并把它与当前矩阵相乘,裁剪出要显示的部分。例如你画出了一个半径为1,中心点在圆点的二维图形圆形,gluOrtho2D作用在了 (0,1,0,1)。则最终显示了个1/4圆形。

-glViewport 则是定义了像素矩阵,最终图像将映射到该矩阵。例如,上面那个1/4圆形原本是显示在左下角,如果我们将glViewport  定义在(0,1,1,1),则该1/4圆形显示在了窗口的左上角。

简单来说: gluOrtho定义了显示的内容,glVieport则设置了显示的位置。

更详细内容:

http://www.cnblogs.com/yxnchinahlj/archive/2010/10/30/1865298.html

http://blog.csdn.net/lingedeng/article/details/7302204


2. 简单二维几何变换


简单二维几何的变换,可以通过 坐标变换 或 矩阵变换。两个方法各有长处,具体使用看实际情况。

下面是平移,旋转,缩放的简单二维图形变换。


#include <gl\glut.h>
#include <iostream>
using namespace std;

//transilate时,x,y上的增量
float i = 0,j=0;
//rotate时的角度增量
GLint angle=0;
//scale时,x,y上的增量
float s1 = 1, s2 = 1;

void init()
{
	glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
	glMatrixMode(GL_PROJECTION);
	gluOrtho2D(0.0, 600.0, 0.0, 600.0);
}

void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	glTranslatef(300+i, 300+j, 0);
	glRotatef(angle % 360, 0, 0, 1);
	glScalef(s1, s2, 0);

	glColor3f(0, 0.6, 0.5);
	glRectf(-100, 100, 100, -100);

	glFlush();
	glutSwapBuffers();
}

void keyboard(uns
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值