Week03
week03-1
step01-1
到https://jsyeh.org/3dcg10/ 下載window.zip和data.zip壓縮檔
並把兩個壓縮檔解壓縮
把data資料夾解壓縮在windows資料夾裡
用鼠標去試著上下拉動視窗裡的綠色數字
去觀察程式裡模型的變化
開啟CodeBlocks 並開啟GLUT專案 並下載把freeglut解壓縮
且把libfreeglut.a 複製改成libglut32.a
複製之前說的GLUT 10行程式碼並貼上在main
並執行程式 就會跑出一個茶壺
step01-2
利用 github gist功能 ,把你要打的程式,檔名(我是.cpp)打好
依照你打的檔案名稱 內容的程式碼文法會跟著變色
接著到部落格點選用HTML模式
接著把複製下來的script貼在最後一行
接著切回來原本的部落格更新後去預覽
HTML有沒有成功插入
延續剛剛的程式碼 修改為
glPushMatrix(); 備份矩陣
glTranslatef(0.5, 0.5, 0); 改變矩陣
glutSolidTeapot(0.3);
glPopMatrix(); 還原矩陣
並執行程式就會出現以下畫面
茶壺會跟你給的數值而移動它的位置
複製剛剛的程式碼 並新增一個新的GLUT專案
並將程式碼修改為以下程式
#include <GL/glut.h>
float X=0, Y=0, Z=0; 使用global變數 (要大寫的X Y Z
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef( X, Y, Z ); (大寫的X Y Z)
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button,int state, int x, int y) (小寫x y z的參數
{
X = (x-150)/150.0; (前面大寫後面小寫)
Y = (y-150)/150.0;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week02");
glutMouseFunc(mouse); (mouse函式)
glutDisplayFunc(display);
glutMainLoop();
}
修改完成後執行程式
用左鍵點擊空白的地方就會發現
茶壺會移動到滑鼠左鍵點擊的地方
#include <GL/glut.h>
#include <stdio.h> printf()
float X=0, Y=0, Z=0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
把中間這段程式碼刪掉
glutSwapBuffers();
}
void mouse(int button,int state, int x, int y)
{
X = (x-150)/150.0;
Y = -(y-150)/150.0;
if(state==GLUT_DOWN) printf( " glVertex2f(%.2f, %.2f);\n",X,Y); 新增的程式碼
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week02");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
修改後執行程式碼
並點擊黑色區域空白處
小黑視窗就會顯示出你滑鼠點的座標X Y是在哪裡
沒有留言:
張貼留言