茶壺滑鼠縮放:week04_mouse_glScalef
1. moodle下載 freeglut 拖到桌面
2. 把桌面\freglut\lib\libfreeglut.a 複製成 libglut32.a
3. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week04_mouse_glScalef
5. 打第一週的10行程式
glClearColor(1.0,1.0,0.9,1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
float angle = 0;
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glutSolidTeapot( 0.3 );
glPopMatrix();
void motion(int x, int y)
{
angle = x;
display();
}
glutMotionFunc(motion);
6. 再修改三行程式碼, 讓茶壺可以放大縮小
float s = 1;
glScalef(s, s, s);
s = 1 + (x-150)/150.0;
鍵盤旋轉縮放:week04_keyboard_mouse_motion
1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week04_keyboard_mouse_motion
3. 複製第一週的10行程式
4. 再加4行程式碼, 讓視窗顯示鍵盤上按的按鍵(滑鼠要在茶壺視窗上)
#include <stdio.h>
void keyboard(unsigned char key,int x,int y){
printf("key:%c x:%d y:%d\n",key,x,y);
}
glutKeyboardFunc(keyboard);
5. 再加4行程式碼, 讓視窗顯示鍵盤上按的按鍵(滑鼠要在茶壺視窗上)
float angle = 0, oldX = 0;
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glutSolidTeapot( 0.3 );
glPopMatrix();
void mouse(int button,int state,int x,int y){
oldX = x;
}
void motion(int x, int y){
angle += (x-oldX);
oldX = x;
display();
}
觀察課本範例Translate & Rotate
1. 下載課本的範例 https://jsyeh.org/3dcg10 windows.zip(win32) 及 data.zip(data)
2. windows.zip 先解壓縮, data.zip 直接點開拉到windows資料夾3. 執行 Transformation.exe
4. 先把 translate 移到右方,再rotate看看
5.在下方程式按右鍵,可以交換translate&rotate
6. translate是公轉 rotate是自轉
7. 理解的技巧:
(1)把左耳 "靠著" 左肩看程式碼(從下往上看)
(2)把 "旋轉中,高瘦的藍色的車子" 移到右邊去
自轉:week04_translate_rotate_scale
2. 複製上一個程式碼, 再刪掉幾行
3. 加上幾行程式碼, 讓茶壺自己旋轉
glRotatef(angle++, 0, 0, 1);
glutIdleFunc(display); ///有空就重畫畫面
4. 加上幾行程式碼, 把茶壺縮小換顏色放到右邊自己旋轉
glTranslatef(0.8, 0, 0); ///放到右邊
glScalef(0.3, 0.3, 0.3); ///小小的
glColor3f(0, 1, 0); ///綠色
glutSolidTeapot( 0.3 ); ///茶壺
沒有留言:
張貼留言