2018年3月26日 星期一

Week 05 X+7 的筆記(T-R-T特定軸轉 階層性旋轉 矩陣)

1.http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/

1.下載[data][win32]glut32.dll 
2.將[win32]解壓縮
3.將glut32.dll [data放入window資料夾       ........才不會閃退

1.複習上週的Translate
Translate上Rotate下 旋轉是正中心旋轉














Rotate上Translate下 旋轉是圓心選轉



2.讀程式碼的技巧
左邊的耳朵貼在左肩(((由下往上讀

Translate上Rotate下 ((((((((自轉
(小葉老師變成,胖胖的車子,在旋轉,之後再移動)











Rotate上Translate下 ((((((((公轉
(小葉老師變成,胖胖的車子,先移動,之後在旋轉)

3.使用Codeblack
記得下載freeglut>lib>glut32
改Translate及Rotate的順序(從自轉變公轉)


4.自制旋轉茶壺











進化成機器茶壺人

#include <stdio.h>
#include <GL/glut.h>
float angle=0;///旋轉角度
void motion(int x,int y)///mouse motion拖著移動時,會叫motion()
{
    angle=x;///老師用上週比較差的方法,直接把mouse座標,變轉動角度
    glutPostRedisplay();///讀畫面重畫
}
void display()///畫面要display時呼叫這個函式
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///先清畫面
    glPushMatrix();///備份矩陣(乾淨的矩陣)
        glutSolidTeapot(0.3);///中間的身體
        glPushMatrix();///上右手臂
                glTranslatef(0.5,0.15,0);
                glRotatef(angle,0,0,1);
                glTranslatef(0.45,-0.08,0);
                glutSolidTeapot(0.3);

            glPushMatrix();///下右手肘
                glTranslatef(0.5,0.15,0);
                glRotatef(angle,0,0,1);
                glTranslatef(0.45,-0.08,0);
                glutSolidTeapot(0.3);
            glPopMatrix();
        glPopMatrix();

        glPushMatrix();///上左手臂
                glTranslatef(-0.5,0.15,0);
                glRotatef(angle,0,0,1);
                glTranslatef(-0.45,-0.08,0);
                glutSolidTeapot(0.3);

            glPushMatrix();///下左手肘
                glTranslatef(-0.5,0.15,0);
                glRotatef(angle,0,0,1);
                glTranslatef(-0.45,-0.08,0);
                glutSolidTeapot(0.3);
            glPopMatrix();
        glPopMatrix();

    glPopMatrix();
    glutSwapBuffers();
    ///printf("%.1f\n",angle);
    ///angle++;
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("05160133_week05  T-R-T");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    ///glutIdleFunc(display);
    glutMainLoop();

}


















沒有留言:

張貼留言