2022年3月15日 星期二

WEEK04 筆記


1.主題:旋轉Rotate

旋轉角度、旋轉軸


軸心方向決定模型旋轉方向(國中理化的手)



step02-1 承接上週的程式碼,改用glRotatef(角度,x,y,z)來看茶壼轉動的狀況

#include <GL/glut.h>

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///畫圖前, 先清畫面
    glPushMatrix();
        glRotatef(90,0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();///畫好後,交換出來
}

int main(int argc, char** argv) ///main()主函式 進階版
{
    glutInit( &argc, argv); ///把參數,送給 glutInit 初始化
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); 
    glutCreateWindow("04!"); 

    glutDisplayFunc(display); 

    glutMainLoop(); 
}




step02-2 加入角度,點按滑鼠能使之轉動

#include <GL/glut.h>
float angle=0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///畫圖前, 先清畫面
    glPushMatrix();
        glRotatef(angle,0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();///畫好後,交換出來
}
void motion(int x, int y)
{
    angle =x;
    display();
}
int main(int argc, char** argv) ///main()主函式 進階版
{
    glutInit( &argc, argv); ///把參數,送給 glutInit 初始化
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); ///雙緩衡區 + 3D深度功能
    glutCreateWindow("04!"); ///開 GLUT 視窗

    glutDisplayFunc(display); ///用來顯示的函式
    glutMotionFunc(motion);
    glutMainLoop(); ///主要的程式迴圈
}



step03 原本只有angle的轉動很奇怪,加上一個old讓轉動變得連續









沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...