STEP01 複習考試內容
1.到CodeBlock建立新專案week06-1,複製上週week05-2的程式碼
2.把上週畫圖部分刪掉,畫一個大小0.3的固體茶壺
3.設定依Z軸旋轉,並將它移至正中心
4.利用glutSolidSphere(0.02,30,30);做小圓球,放正中心作為標記,第1個參數為半徑,第2個參數為橫切數,第3個參數為縱切數
結果如下:
5.最後把它掛到要放的地方,參考範例:1.再開啟一個新專案week06-2,把week06-1的程式碼貼過來
2.再做一個茶壺作為身體,修該要掛的位置,把轉動的茶壺掛到身體茶壺的嘴,如附圖:
3.複製上一個轉動包在上一個轉動的Push~Pop中,得到手肘,程式碼如下:
#include <GL/glut.h>
float angle = 0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glutSolidSphere(0.02,30,30);
glutSolidTeapot(0.3);
glPushMatrix();//手臂
glTranslatef(0.45,0.15,0);
glRotatef(angle,0,0,1);
glTranslatef(0.45,-0.05,0);
glutSolidTeapot(0.3);
glPushMatrix();//手肘
glTranslatef(0.45,0.15,0);
glRotatef(angle,0,0,1);
glTranslatef(0.45,-0.05,0);
glutSolidTeapot(0.3);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])//main()主函式 進階版
{
glutInit(&argc,argv);//把參數送給glutInit初始化
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);//雙緩衝區+3D深度功能
glutCreateWindow("week05");//開GLUT視窗
glutDisplayFunc(display);//顯示用的函式
glutIdleFunc(display);
glutMainLoop();
}
結果如圖:
STEP03
1.再度開啟新專案week06-3,複製week05-2的程式碼貼上
2.想要發明函式幫我們做手臂,於是利用程式碼:
void drawHand()
{
glPushMatrix();
glScalef(1,0.3,0.3);//調整方塊大小(不影響尺寸)
glutSolidCube(0.5);
glPopMatrix();
}
3.之後利用呼叫函式的方式,建立一個會轉的長方形如圖:
4.複製貼上得到下手肘,同時先註解掉所謂上臂的轉動部分,方便我們掛下手肘到正確位置
5.將下手肘掛到正確的位置後,還原上面註解掉的部分(STEP03-4),讓上臂也開始轉,如圖:
兩條旋轉揮舞的手臂





沒有留言:
張貼留言