1.開啟後,進入程式碼分別找到第53行、第60行、第67行,依序為
glutSolidSphere(1,slices,stacks); *(1)Solid為實心,換成Wire為空心
glutSolidCone(1,1,slices,stacks); (2)Sphere是圓,Cone是圓錐,Torus是甜甜圈
glutSolidTorus(0.2,0.8,slices,stacks) (3)Slices是直切,Stacks是橫切
2.試著做出旋轉的手臂
#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();
glTranslatef(0.5,0.5,0);///step3.(***圖三與圖二的差別:把圖二的手移動到右上方)
glRotatef(angle,0,0,1);///造成z軸旋轉
glTranslatef(0.25,0,0);///step2.(***圖二與圖一的差別:改變旋轉的軸心)
upper_arm();///step1.執行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();
}
圖一(上)、圖二(中),圖三(下)

3.左右手、上下臂
float angle=0; ///宣告等等要使用的旋轉角度
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
///右手
glPushMatrix();
///上手臂
glTranslatef(0.2,0,0);///step3.把手移動到右上方
glRotatef(angle,0,0,1);///造成z軸旋轉
glTranslatef(0.25,0,0);///step2.改變旋轉的軸心
upper_arm();///step1.執行upper_arm
///下手臂
glPushMatrix();
glTranslatef(0.25,0,0);///step3.把手移動到右上方
glRotatef(angle,0,0,1);///造成z軸旋轉
glTranslatef(0.25,0,0);///step2.改變旋轉的軸心
upper_arm();///step1.執行upper_arm
glPopMatrix();
glPopMatrix();
///左手
glPushMatrix();
///上手臂
glTranslatef(-0.2,0,0);///step3.把手移動到右上方
glRotatef(-angle,0,0,1);///造成z軸旋轉
glTranslatef(-0.25,0,0);///step2.改變旋轉的軸心
upper_arm();///step1.執行upper_arm
///下手臂
glPushMatrix();
glTranslatef(-0.25,0,0);///step3.把手移動到右上方
glRotatef(-angle,0,0,1);///造成z軸旋轉
glTranslatef(-0.25,0,0);///step2.改變旋轉的軸心
upper_arm();///step1.執行upper_arm
glPopMatrix();
glPopMatrix();
angle++;///增加旋轉角度,讓他一直轉
glutSwapBuffers();
}
***左手的trans、rotate都要是負的,才能跟右手同步





沒有留言:
張貼留言