1.主題:旋轉Rotation
2.實作: glRotatef()
3.滑鼠轉,自動轉
4.先跟上禮拜一樣打開http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下在以下三個框起來的網址
5.把window解壓縮至window
6.再把data移到window的資料夾裡
7.再把glut32拉到window的資料夾裡
8.打開一個名叫Transformation的資料
7.再把glut32拉到window的資料夾裡
8.打開一個名叫Transformation的資料
9.在裡面可以改一些數值可以改變方向或形狀
10.glRotate(角度,X軸,Y軸,Z軸)
11.之後要讓茶壺可以旋轉要打開跟上周一樣的程式碼
12.跟上周的步驟一樣上網下載freeglut
13.CodeBlocks也一樣打開GLUT的程式碼然後改成下面的程式
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0,1,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle+=3;
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("06160396-week5");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
14.這個就會讓茶壺旋轉
15.圖片如下
16.現在要讓茶壺可以轉動然後可以用滑鼠知道滑鼠所點的位置,程式碼如下
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0,1,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
void motion(int x,int y)
{
angle=x;
display();
}
#include <stdio.h>
void mouse(int button, int state, int x,int y)
{
printf("%d %d %d %d\n", button, state,x,y);
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("06160396-week5");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);
glutMouseFunc(mouse);
glutMainLoop();
}
17.照片如下
出現的第一個數字有0,1,2 分別是滑鼠的左鍵,中鍵,右鍵
第二個數字是0,1
第三個數字是0-300是從左到右的位置
第四個數字是0-300是從上到下的位置
沒有留言:
張貼留言