先看範例
glTranslatef( 0.9 , 0.0 , 0.0 ); => 代表移動
glRotatef( 角度, 0, 1, 0); => 代表旋轉
開始做
第一個程式:
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef( angle, 0, 0, 1);
glutSolidTeapot( 0.2 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main( int argc, char** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );
glutCreateWindow("week12 TRT");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
(茶壺會一直旋轉)
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidTeapot( 0.3 );
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main( int argc, char** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );
glutCreateWindow("week12 T-R-T");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
(白色的茶壺增加了兩個紅色的茶壺當手臂,且紅色的茶壺會轉動)
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidTeapot( 0.3 );
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPushMatrix();
glTranslatef(0.2, 0, 0);
glRotatef( angle, 0, 0, 1);
glTranslatef(0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2, 0, 0);
glRotatef( -angle, 0, 0, 1);
glTranslatef(-0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPushMatrix();
glTranslatef(-0.2, 0, 0);
glRotatef( -angle, 0, 0, 1);
glTranslatef(-0.2, 0, 0);
glColor3f(1,0,0);
glutSolidTeapot( 0.2 );
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main( int argc, char** argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );
glutCreateWindow("week12 T-R-T");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
(另一邊也增加手臂)




沒有留言:
張貼留言