2019年4月25日 星期四

呼呼呼 電腦圖學的世界 Week-10 今天天氣熱爆惹 好想翹課



1.複習:移動、旋轉、縮放


http://www.cmlab.csie.ntu.edu.tw/~0/jsyeh/3dcg1網站下載source、data、win32、glut32.dll這四個檔案

開啟Texture.exe 

可以按右鍵點選S調整順序

順序會影響旋轉



glScalef(為改變大小)
glRotatef(可改變旋轉位子)

若將車子變胖及讓位子向右

那用glTranslatef("移動位置往右的胖車子")




























2.T-R-T旋轉(改變旋轉軸)

需先改變物件位子,讓旋轉軸在合適的地方,在旋轉到該去的 方向,在移動過去



glTranslatef(x,y,z);
glRoatef(x,y,z);
glTranslatef(x,y,z);



改變旋轉軸程式
#include <GL/glut.h>
float angle=0;///新修改
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslated(0, 0.5,0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glPushMatrix();
        glTranslatef(0.50,0.625,0);///(3)最後將cone擺到正確的位置
        glRotatef(angle,0,0,1);///(1)先有個轉動,但怪怪的
        glTranslatef(0.6, 0,0);///(2)先移動,使中心點在中間

        glRotatef(-90, 0,1,0);///(0)轉動90度的cone
        glutSolidCone(0.2, 0.6,30,30);
    glPopMatrix();
    glutSwapBuffers();

}
void motion(int x,int y)
{
   angle=x;
   display();
}

int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week10 rotate");

    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutIdleFunc(display);
    glutMainLoop();



}








沒有留言:

張貼留言