`
tiankefeng0520
  • 浏览: 143526 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

OpenGL学习五:矢量图形旋转

阅读更多

 

glRotatef(quard,x,y,z);   旋转函数
quard 旋转角度
x,y,z 绕着(x,y,z)轴旋转

glRotatef(rtri,0.0f,1.0f,0.0f);
 glBegin(GL_TRIANGLES);
  glColor3f(1.0f,0.0f,0.0f);
  glVertex3f( 0.0f, 1.0f, 0.0f);
  glColor3f(0.0f,1.0f,0.0f);
  glVertex3f(-1.0f,-1.0f, 0.0f);
  glColor3f(0.0f,0.0f,1.0f);
  glVertex3f( 1.0f,-1.0f, 0.0f);
 glEnd();
 glLoadIdentity();
 glTranslatef(1.5f,0.0f,-6.0f);
 glRotatef(rquad,1.0f,0.0f,0.0f);
 glColor3f(0.5f,0.5f,1.0f);
 glBegin(GL_QUADS);
  glVertex3f(-1.0f, 1.0f, 0.0f);
  glVertex3f( 1.0f, 1.0f, 0.0f);
  glVertex3f( 1.0f,-1.0f, 0.0f);
  glVertex3f(-1.0f,-1.0f, 0.0f);
 glEnd();

 

#include "header.h"

GLfloat	rtri;				
GLfloat	rquad;		

void ReSizeGLScene(GLsizei width, GLsizei height)		
{
	if (height==0)								
	{
		height=1;									
	}

	glViewport(0,0,width,height);					

	glMatrixMode(GL_PROJECTION);				
	glLoadIdentity();								


	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);

	glMatrixMode(GL_MODELVIEW);						
	glLoadIdentity();									
}

int InitGL(void)									
{
	glShadeModel(GL_SMOOTH);							
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);			
	glClearDepth(1.0f);									
	glEnable(GL_DEPTH_TEST);							
	glDepthFunc(GL_LEQUAL);								
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	
	return TRUE;										
}

void DrawGLScene(void)									
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
	glLoadIdentity();									
	glTranslatef(-1.5f,0.0f,-6.0f);						
	glRotatef(rtri,0.0f,1.0f,0.0f);					
	glBegin(GL_TRIANGLES);							
		glColor3f(1.0f,0.0f,0.0f);					
		glVertex3f( 0.0f, 1.0f, 0.0f);					
		glColor3f(0.0f,1.0f,0.0f);						
		glVertex3f(-1.0f,-1.0f, 0.0f);			
		glColor3f(0.0f,0.0f,1.0f);					
		glVertex3f( 1.0f,-1.0f, 0.0f);					
	glEnd();											
	glLoadIdentity();									
	glTranslatef(1.5f,0.0f,-6.0f);						
	glRotatef(rquad,1.0f,0.0f,0.0f);					
	glColor3f(0.5f,0.5f,1.0f);							
	glBegin(GL_QUADS);									
		glVertex3f(-1.0f, 1.0f, 0.0f);					
		glVertex3f( 1.0f, 1.0f, 0.0f);					
		glVertex3f( 1.0f,-1.0f, 0.0f);					
		glVertex3f(-1.0f,-1.0f, 0.0f);					
	glEnd();																				
	glFlush();									
}

void rotate()
{
	rtri+=0.2f;											
	rquad-=0.15f;
	glutPostRedisplay();
}
void mouse(int button,int state,int x,int y)
{ 
	switch(button)
	{
	case GLUT_LEFT_BUTTON:
		if(GLUT_DOWN==state)
		{
			glutIdleFunc(rotate);
		}
		break;
	case GLUT_RIGHT_BUTTON:
		if(GLUT_DOWN==state)
		{
			//glutIdleFunc(0);
		}
		break;
	}
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
	glutInitWindowSize(640,480);
	glutCreateWindow("矢量图形旋转");
	glutReshapeFunc(ReSizeGLScene);
	glutDisplayFunc(DrawGLScene);
	glutMouseFunc(mouse);
	InitGL();
	glutMainLoop();
	return 0;
}

 

  • 大小: 7.3 KB
0
5
分享到:
评论

相关推荐

    OpenGL图形变换时的矩阵和向量计算数学库GLM

    在使用OpenGL做图形加载后,根据实际需求往往需要进行平移、旋转、缩放等操作,在三维坐标中,通过矩阵和向量之间的各种数学运算完成以上过程。glm包含了丰富的矩阵、向量计算数学库。在用此数学库之前,需要有一定...

    计算机图形学基础-pdf.zip

    2.6OpenGL图形软件包 2.6.1OpenGL的主要功能 2.6.2OpenGL的绘制流程 2.6.3OpenGL的基本语法 2.6.4一个完整的OpenGL程序 第3章用户接口与交互式技术 3.1用户接口设计 3.1.1用户模型 3.1.2显示屏幕...

    计算机图形学作业题.doc

    熟练掌握二维图形的齐次坐标表示、平移、比例、旋转、对称变换以及复合变换的方 法和原则。 16. 图形的几何变换包括 、 、 、 、 ;图形连续作一次以上的几何变换称 变换。 17. 试写出图示多边形绕点A(xo,yo)旋转的...

    Qt鼠标拖动绘制基本几何图形(直线、矩形、圆形、椭圆)

    本示例使用QGraphics体系来实现,因为要移动对象,所以生成的图形必须是一个单独的对象,鼠标拖动绘制的过程是在临时层中完成,release后生成一个矢量的图形item并添加到场景中。 博客地址:...

    论文研究-基于VC6.0和OpenGL的三维试衣系统研究.pdf

    然后通过三维网格模型的曲率特征在人体模型与服装模型之间建立映射关系来完成匹配,这个过程是一种刚体变换即获取旋转矩阵和平移矢量两部分;最后在VC 6.0的开发环境下,利用OpenGL强大的三维建模功能实现了三维试衣...

    QT 绘图函数

    通过连接基本图形元素,直线,椭圆,多段线,圆弧,二次和三次贝塞尔曲线等,QPainterPath类能确定任何矢量图形。因此,绘图路径(Painter paths)是最基本的绘制元素,任何图形和图形的组合都可以同路径(path)...

    WebGL编程指南压缩包

    学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件...

    WebGL编程指南

    学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件...

    webgl编程指南及源码1/2

    学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件...

    webgl编程指南及源码2/2

    学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件...

    开源分享!基于stm32f4的三维旋转显示平台设计-电路方案

    系统方案如图1所示,整个系统由四个模块组成,其中数据获取单元主要由在PC上的上位机完成,利用3D-Max,OpenCV,OpenGL,将三维建模数据转化成三维矢量表述文件,传给由STM32F4Discovery开发板构成的控制单元,利用...

    draw2d:不同输出的2D渲染(光栅,pdf,svg)

    软件包draw2d是 2D矢量图形库,支持多种输出,例如(draw2d),pdf文档(draw2dpdf),opengl(draw2dgl)和svg(draw2dsvg)。 还有一个使用draw2d的。 draw2d是在BSD许可下发布的。 有关更多详细信息,请参见。 ...

    新版Android开发教程.rar

    ----------------------------...• 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    精通ANDROID 3(中文版)1/2

    第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另一种Java ME 3D图形标准  20.2 OpenGL的基本原理  20.2.1 使用OpenGL ...

    精通Android 3 (中文版)2/2

    第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另一种Java ME 3D图形标准  20.2 OpenGL的基本原理  20.2.1 使用OpenGL ...

    精通qt4编程(源代码)

    \ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...

    精通Qt4编程(第二版)源代码

    \16.1.3 3D和旋转 411 \16.1.4 纹理贴图 414 \16.2 SVG 417 \16.2.1 绘制SVG图形 418 \16.2.2 生成SVG文件 419 \16.3 小结 420 \第17章 进程与进程间通信 421 \17.1 使用QProcess 421 \17.2 Linux进程间通信...

Global site tag (gtag.js) - Google Analytics