Week03
- 桌面安裝freeglut把lib的libfreeglut.a複製改名成libglut32.a
- File-NewProject,GLUT專案week03_mouse
- 貼上10行程式碼
- 在加3行
#include <stdio.h>
void mouse(int button, int state,int x,int y)
{
printf("Hello Mouse!\n");
}
變成#include <GL/glut.h>
#include <stdio.h>
void mouse(int button, int state,int x,int y)
{
printf("Hello Mouse!\n");
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc,char*argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03 mouse");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
- week03_mouse 印參數把第5行printf("Hello Mouse!\n");
更改成printf("%d %d %d %d\n",button,state,x,y); - 會變成點茶壺圖繪跳出座標點
- week03_mouse 滑鼠寫程式#include <GL/glut.h>
- 下載windows.zip和data.zip解壓縮後把data檔案放進windows
- 移動茶壺 在打開一個檔案
#include <stdio.h>
float teapotX=0,teapotY=0;
void mouse(int button, int state,int x,int y)
{
teapotX = (x-150)/150.0;
teapotY = -(y-150)/150.0;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc,char*argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03 mouse");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
- 試著了解glRotatef(角度,x,y,z)的參數
- 可以利用右手比讚來理解。
- 轉動軸,就是讚的拇指,轉動方向,就是其他手指的轉動方向
- 對y軸轉,簡單比個讚
- 對x軸轉,要把拇指向右,也可以轉
- 對-y軸轉,就是比個倒讚,也可以理解
- 最難的是z軸,向著哪裏呢?那個拇指向著你的鼻子
- 1#include <GL/glut.h>
- week03_mouse_translate_rotate

.png)
沒有留言:
張貼留言