2022年5月10日 星期二

(OwO)電腦圖學week12_5/10

去老師的網站:http://jsyeh.org/3dcg10

下載:windows.zip & data.zip

T移動R轉動(按右鍵可SwapTR) glTranslatef( 0.9 , 0.0 , 0.0 ) ; glRotatef( 角度, 0, 1, 0)


可進入老師做的網站練習: https://120.125.80.50/GL/opengl_TRT_demo.html

Ctrl-R 可清空(還原到初始)

按住旁邊的字可拖曳並改寫程式的順序


區別

TR:轉動軸在物件的中心

TRT:改軸心->轉角度->改位置

(1) 最下面的T:把旋轉中心放到正中心

(2) 轉到我們要的角度

(3) 最上面的T:把東西放在對的位置

RT:轉動軸在座標的中心


2-2下周考試

glPushMatrix();

glTranslatef(-0.5,-0.9,0);
glRotatef(angle,0,0,1);   //angle=45
glTranslatef(-0.8,0.9,0);

myDrawObject();///物件(手)

glPopMatrix();

2-3寫程式

file->new->project->GLUT專案,week12_TRT

把10行程式碼放上去(之前的)

把TRT的6行放上去(今天的)

讓他自動轉(float angle=0)配上glRotatef(angle,0,0,1)再加上angle++

glutIdleFunc(display);(上週筆記)


#include <GL/glut.h>

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        ///glTranslatef(0, 0, 0);

        glRotatef( angle, 0, 0, 1);

        ///glTransaltef(0, 0, 0);

        glutSolidTeapot( 0.2 );///想像它是手臂

    glPopMatrix();

    glutSwapBuffers();

    angle++;

}

int main( int argc, char** argv )

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );

    glutCreateWindow("week12 TRT");


    glutIdleFunc(display);

    glutDisplayFunc(display);

    glutMainLoop();

}


茶壺超人

#include <GL/glut.h>

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,1,1);///白色

    glutSolidTeapot( 0.3 );///身體

    glPushMatrix();

        glColor3f(1,0,0);///紅色

        glTranslatef(0.2, 0, 0);///(3)把整個往右移動

        glRotatef( angle, 0, 0, 1);///(2)旋轉

        glTranslatef(0.2, 0, 0); ///(1)把旋轉中心放到中心

        glutSolidTeapot( 0.2 ); ///做個小茶壼然後想像是手臂~

    glPopMatrix();

    glutSwapBuffers();

    angle++;

}

int main( int argc, char** argv )

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );

    glutCreateWindow("week12 TRT");


    glutIdleFunc(display);

    glutDisplayFunc(display);

    glutMainLoop();

}


茶壺超人(整隻手)

#include <GL/glut.h>

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glColor3f(1,1,1);///白

    glutSolidTeapot( 0.3 );///身體

    glPushMatrix(); 

        glColor3f(1,0,0);///紅

        glTranslatef(0.5, 0.2, 0);///(3)把整個往右移動

        glRotatef( angle, 0, 0, 1);///(2)旋轉

        glTranslatef(0.2, 0, 0); ///(1)把旋轉中心,放到中心

        glutSolidTeapot( 0.2 );///上臂

        glPushMatrix();

            glColor3f(1,0,0);///紅

            glTranslatef(0.4, 0.1, 0);

            glRotatef( angle, 0, 0, 1);

            glTranslatef(0.2, 0, 0); 

            glutSolidTeapot( 0.2 );///下臂

        glPopMatrix();

    glPopMatrix();

     glutSwapBuffers();

     angle++;

}

int main( int argc, char** argv )

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE|GLUT_DEPTH );

    glutCreateWindow("week12 TRT");


    glutIdleFunc(display);

    glutDisplayFunc(display);

    glutMainLoop();

}


作業:雙手模型



沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

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