4.OpenGL学习之几何变换
来源:互联网 发布:上海云计算公司 编辑:程序博客网 时间:2024/06/05 16:34
几何变换
应用于对象几何描述并改变它的位置、方向或大小的操作成为几何变换(geometric transformation)。一个三维位置在齐次坐标中表示为四元列向量。因此,每一次几何变换操作表示成一个从左边去乘坐标向量的4*4矩阵。
在三维齐次坐标表示中,任意点P=(x,y,z)经过几何变换到位置P‘
其中:
几何变换函数
在OpenGL的核心库中,每一种基本的几何变换都有一个独立的函数。由于OpenGL是作为三维图形应用编程接口来设计的,所有的变换都在三维空间中定义。在内部,所有坐标均使用4元素列向量表示,而所有变换均使用4*4矩阵来表示。基本的OpenGL几何变换函数
- glTranslate*(tx, ty, tz); //平移参数tx、ty和tz可以为任意的实数值。
- glRoate*(theta, vx, vy, vz) //参数theta表示旋转角度数,向量v = (vx, vy, vz)用于定义通过坐标原点的旋转轴的方向。
- glScale*(sx, sy, sz); //缩放参数可以为任意实数值。
备注:*或者是f(浮点)或者d(双倍长浮点)
旋转三角形
首先在myQGLWidget.h头文件中,添加一个控制三角形旋转角度的私有变量。
#ifndef MY_QGLWIDGET_H#define MY_QGLWIDGET_H#include <QGLWidget>class MyQGLWidget : public QGLWidget{ Q_OBJECTpublic: MyQGLWidget(QWidget *parent = 0);protected: void initializeGL(); void resizeGL(int width, int height); void paintGL();private: void drawTriangles(); GLfloat rotateAngle_;};#endif
在drawTriangles函数中使用glRotatef函数,让三角形对象绕着某个某个轴旋转
void MyQGLWidget::drawTriangles(){ glRotatef(rotateAngle_, 0.0f, 0.0f, 1.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); //设置当前色为红色 glVertex3f(0.0f, 1.0f, -6.0f); glColor3f(0.0f, 1.0f, 0.0f); //设置当前色为绿色 glVertex3f(-1.0f,-1.0f, -6.0f); glColor3f(0.0f, 0.0f, 1.0f); //设置当前色为蓝色 glVertex3f(1.0f,-1.0f, -6.0f); glEnd(); rotateAngle_ += 0.5f;}
为了使三角形旋转起来,我们使用定时器,每隔10ms调用updateGL()函数。
MyQGLWidget::MyQGLWidget(QWidget *parent) : QGLWidget(parent),rotateAngle_(0.0f){ setFormat(QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer)); QTimer *timer = new QTimer(this); //创建一个定时器 connect(timer, SIGNAL(timeout()), this, SLOT(updateGL())); //将定时器的计时信号与updateGL()绑定 timer->start(10); //以10ms为一个计时周期}
运行结果:
代码下载
OpenGL学习系列导航
阅读全文
0 0
- 4.OpenGL学习之几何变换
- OpenGL-学习之路-简单二维几何变换及应用
- OpenGL学习——二维几何变换
- OpenGL学习08_几何变换
- OpenGL学习08_几何变换
- openGL之几何变换(绘制球体)---openGL学习笔记(六)
- OpenGL(三)图形变换之几何变换
- OpenGL几何变换
- OpenGL三角形几何变换
- OpenGL几何变换详解
- OpenGL的几何变换
- 《高效学习OpenGL》之 openGL变换
- OpenGL开发 几何变换:管线
- perl-opengl几何变换函数
- perl-opengl几何变换函数
- OpenGL: 用户自定义几何变换
- 实验3 OpenGL几何变换
- OpenGL ES几何变换和坐标变换
- 简单题之勾股定理
- 乌镇大会前两天,互联网大佬演讲干货汇总
- 【XML】元素
- 计算机视觉大神
- idea 2017.2 安装及部署相关资料
- 4.OpenGL学习之几何变换
- mongodb启动显示Unclean shutdown detected.解决方法
- C语言——三子棋
- mybatis传入数组并且遍历
- Node.js--使用MongoDB存储数据
- Android之MVC设计模式在Android中的使用
- 开箱即用的网站可访问性提升指南
- 前端神器--promise
- JS常用日期操作