glTranslated(x,y,z);//位置
glRotated(60,1,0,0);//位置傾斜
glRotated(a,0,0,1);//旋轉動畫
+?????
用下面的程式可以做出實心物體
glutSolidSphere(1,slices,stacks); //圓球
glutSolidCone(1,1,slices,stacks); //椎型
glutSolidTorus(0.2,0.8,slices,stacks); //環狀
glutSolidCube(0.5);//方塊
用下面的程式可以做出空心物體
glutWireSphere(1,slices,stacks);
glutWireCone(1,1,slices,stacks);
glutWireTorus(0.2,0.8,slices,stacks); //前面兩個為內圈及外圈的厚度

#include <GL/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
upper_arm();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE| GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
#include <GL/glut.h>
void arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.2,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0);
arm();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0);
arm();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2,0,0); //位置為負
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,0,0);
arm();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,1,0);
arm();
glPopMatrix();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE| GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}

沒有留言:
張貼留言