先到 點我辣!這個網站
然後下載data、win32、glut32.dll
將windows解壓縮,glut32.dll跟data的資料放進去
點擊Transformation開啟檔案
根據X、Y、Z軸做轉動
幫助你對角度ㄉ轉動更熟悉
安捏,ㄙㄨㄚˋ( • ̀ω•́ )
開始正題
開啟之前開過的六個形狀的檔案
我們要讓他停止自轉,跟著我們的滑鼠轉!
先加入motion函式
讓我ㄉ角度變成他ㄉx值
宣告變數然後塞進x值
我們只有多打6ㄍ程式碼哦哦!
就醬(*ˇωˇ*人)
接下來要來旋轉茶壺辣!
針對他ㄉZ軸旋轉ㄜ
總之就是像上面釀,OK?
順便附上程式碼辣!
之前都沒在放,然後都找別人ㄉ複製欸嘿✧*。٩(ˊᗜˋ*)و✧*。
----------------------------------------
#include <GL/glut.h>
float myAngle=0;///變數宣告
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
glPushMatrix();
glRotatef(myAngle,0,0,1);///對Z軸旋轉
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y){
myAngle=x;///角度拿下來用
display();///每次做動作就重畫
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("weeeeeeeeeeeeeeeek04!");
glutDisplayFunc(display);
glutMotionFunc(motion);///加入函式
glutMainLoop();
}
----------------------------------------
由於上面那個程式碼在每次轉動時都會從特定位置開始轉
所以我們要做一ㄍ會根據上次旋轉的位置繼續轉動的茶壺!
嗯,對,就上面釀ㄎ¯\_(ツ)_/¯
附上程式碼辣!
加深ㄉ部分是有改過或是增加ㄉ程式碼
----------------------------------------#include <GL/glut.h>float myAngle=0;///變數宣告
static void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
glPushMatrix();
glRotatef(myAngle,0,0,1);///對Z軸旋轉
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int oldx=0;
void mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN) oldx=x;///紀錄上次按下的位置
}
void motion(int x,int y){
myAngle+=(x-oldx);///加ㄌ幾度
oldx=x;
display();///每次做動作就重畫
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("weeeeeeeeeeeeeeeek04!");
glutDisplayFunc(display);
glutMotionFunc(motion);///加入函式
glutMouseFunc(mouse);
glutMainLoop();
}








沒有留言:
張貼留言