旋转:glRotatef(angle,x,y,z)
(x,y,z)为轴
平移:glTranslatef(x,y,z)
(x,y,z)为平移向量
在z轴上平移有缩放的味道
缩放:glScalef(x,y,z)
(x,y,z)为各方向上放大倍数
#include <GL/glut.h>
#include <windows.h>
#include <stdlib.h>
#include <math.h>
#define GLUT_DISABLE_ATEXIT_HACK
GLfloat AngleX;
GLfloat AngleY;
GLfloat sca[3] = {
1,1,1};
GLfloat tra[3] = {
0,0,0};
void display1(){ //sphere,cone
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
{
glRotatef(AngleX, 1.0f, 0.0f, 0.0f);
glRotated(AngleY, 0.0f, 1.0f, 0.0f);
glScalef(sca[0], sca[1], sca[2]);
glTranslatef(tra[0], tra[1], tra[2]);
glutWireSphere(36, 25, 25);
glutWireCone(25, 20, 30, 30);
}
glPopMatrix();
glutSwapBuffers();
}
void display2(){ //cube
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
{
glRotatef(AngleX, 1.0f, 0.0f, 0.0f);
glRotated(AngleY, 0.0f, 1.0f, 0.0f);
glScalef(sca[0], sca[1], sca[2]);
glTranslatef(tra[0], tra[1], tra[2]);
glBegin(GL_POLYGON);//FRONT
glColor3ub((GLuby