(1)課堂複習,下載教材jsyeh.org/3dcg10 點及transformation

(2)點滑鼠右鍵,swap交換traslate Rotate的位置
(A)

(B)

兩圖差別 (A) 改變位置再旋轉時,汽車會自轉 (B)改變位置再旋轉時,汽車會跟著場景公轉
課堂作業二: 寫旋轉程式
將Week01寫的茶壺程式加入旋轉的程式碼 讓茶壺旋轉


程式碼:
#include <GL/glut.h>
float rotX=0;
void display()
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix(); //備份Matrix
glRotatef(rotX, 0,1,0);
glColor3f(1,0,0);
glutSolidTeapot(0.3);
glPopMatrix();//還原Matrix回到Push時的樣子
glutSwapBuffers();
}
旋轉↓↓↓
void motion(int x, int y)
{
rotX=x; //將rotX拿來旋轉
display();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("hello3D");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
Q1: glPushMatrix();意思是保存當前位置
glPopMatrix();意思是還原先前的位置
Q2: Buffers意思是緩衝
Double意思是兩倍
所以Double Buffers是利用兩倍記憶體緩衝的意思
課堂作業三:加入Y,讓茶壺可以上下左右旋轉

補充的程式碼:
glutInitWindowSize(300,300);glutInitWindowPosition(600,0);///改變開啟視窗大小跟開啟位置
glutInitWindowSize(300,300);glutInitWindowPosition(600,0);///改變開啟視窗大小跟開啟位置
沒有留言:
張貼留言