改Sphere,Cone,Torus參數改變大小
旋轉圖形製作關節
#include <GL/glut.h>
void upper_arm()
{
glPushMatrix();
glScaled(1,0.3,0.3);///x不變,y,z都變1/3
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;///todo
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0.5,0.5,0);///todo3把下面轉動的手掛到右上角
glRotated(angle,0,0,1);///對z軸旋轉///todo
glTranslated(0.25,0,0);///todo2加這一行對正中心轉
upper_arm();///用函式呼叫
glPopMatrix();
angle++;///todo
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);///todo
glutDisplayFunc(display);
glutMainLoop();
}
有兩個關節的手
#include <GL/glut.h>
void arm()
{
glPushMatrix();
glScaled(1,0.3,0.3);///x不變,y,z都變1/3
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;///todo
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///右手
glTranslatef(0.2,0,0);///todo3把下面轉動的手掛到右上角
glRotatef(angle,0,0,1);///對z軸旋轉///todo
glTranslatef(0.25,0,0);///todo2
glColor3f(1,0,0);arm();///畫紅色的手(up)
glPushMatrix();///備份
glTranslatef(0.25,0,0);///todo3把下面轉動的手掛到右上角
glRotatef(angle,0,0,1);///對z軸旋轉///todo
glTranslatef(0.25,0,0);///todo2
glColor3f(1,1,0);arm();///畫黃色的手(down)
glPopMatrix();///還原
glPopMatrix();
glPushMatrix();///左手
glTranslatef(-0.2,0,0);///todo3把下面轉動的手掛到右上角
glRotatef(-angle,0,0,1);///對z軸旋轉///todo
glTranslatef(-0.25,0,0);///todo2
glColor3f(1,0,0);arm();///畫紅色的手(up)
glPushMatrix();///備份
glTranslatef(-0.25,0,0);///todo3把下面轉動的手掛到右上角
glRotatef(-angle,0,0,1);///對z軸旋轉///todo
glTranslatef(-0.25,0,0);///todo2
glColor3f(1,1,0);arm();///畫黃色的手(down)
glPopMatrix();///還原
glPopMatrix();
angle++;///todo
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);///todo
glutDisplayFunc(display);
glutMainLoop();
}



沒有留言:
張貼留言