2018年3月26日 星期一

Week05 來福的汪汪圖學週記

本日目標
複習移動旋轉
TRT特定軸轉
階層性旋轉
矩陣(整合)


觀察結果:
TR >> 原地旋轉
鏡頭跟車子保持一定距離


RT >> 繞圈旋轉
鏡頭旋轉的時候 跟車子有近有遠


小葉老師說明:
TR
 
  
圖片1-1 1-2
簡而言之  把移動的車車放到旁邊

RT
 
 圖片2-1
簡而言之  把車車放到旁邊轉底盤


寫寫看程式
 
 圖片3-1

解釋程式
#include <GL/glut.h>
#include <stdlib.h>


float an=0;///角度一開始設0
void display()///畫圖函式
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();///記住乾淨的樣子
        ///下列三行程式由下往上看
        glRotatef(an,0,0,1);///3.把在0.3,-0.07,0位置的茶壺以Z軸旋轉an角度
        glTranslated(0.3,-0.07,0);///2.把茶壺放在0.3,-0.07,0的位置
        glutSolidTeapot(0.3);///1.有個茶壺
    glPopMatrix();///恢復乾淨
    glutSwapBuffers();
}
void mousement(int x,int y)
{
    an=x;
    glutPostRedisplay();///畫面重製
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05 TRT測試");
    glutDisplayFunc(display);
    glutMotionFunc(mousement);
    glutMainLoop();
}


畫個茶壺機器人戰士
圖片4-1

#include <GL/glut.h>
#include <stdlib.h>


float an=0;///角度一開始設0
void display()///畫圖函式
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();///記住乾淨的樣子
        ///中心茶壺
        glutSolidTeapot(0.3);///1.有個茶壺

        ///下列程式由下往上看
        glPushMatrix();///右邊手臂的陣列組
                ///A手臂的四行程式
                glTranslated(0.08,0.07,0);///把會旋轉的茶壺放到這裡
                glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
                glTranslated(0.67,0.01,0);///2. 把茶壺放在這裡
                glutSolidTeapot(0.3);///1. 有個茶壺

            glPushMatrix();///開新手臂的小陣列組
                glTranslated(0.08,0.07,0);///把會旋轉的茶壺放到這裡
                glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
                glTranslated(0.67,0.01,0);///2. 把茶壺放在這裡
                glutSolidTeapot(0.3);///1. 有個茶壺
            glPopMatrix();///小陣列組結束
            
        glPopMatrix();///右邊手臂陣列組結束

        glPushMatrix();
                glTranslated(-0.08,0.07,0);///把會旋轉的茶壺放到這裡
                glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
                glTranslated(-0.67,0.01,0);///2. 把茶壺放在這裡
                glutSolidTeapot(0.3);///1. 有個茶壺

            glPushMatrix();
                glTranslated(-0.08,0.07,0);///把會旋轉的茶壺放到這裡
                glRotatef(an,0,0,1);///3. 讓茶壺可以旋轉
                glTranslated(-0.67,0.01,0);///2. 把茶壺放在這裡
                glutSolidTeapot(0.3);///1. 有個茶壺
            glPopMatrix();
        glPopMatrix();

    glPopMatrix();///恢復乾淨
    glutSwapBuffers();
}
void mousement(int x,int y)
{
    an=x;
    glutPostRedisplay();///畫面重製
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05 TRT測試");
    glutDisplayFunc(display);
    glutMotionFunc(mousement);
    glutMainLoop();
}

沒有留言:

張貼留言