2015年5月28日 星期四

week14 廖彥豪

今天真的是天氣超級好
好到真的是一直冒汗超級熱的=  =
可能是天氣轉變太快肚子一直痛
所以上課時間耽誤了10分鐘
我的零遲到紀錄就這樣被破了 嗚嗚

第一節課
這個厲害的來了
之前我們教的都是靜止不動的茶壺
或是一堆不會亂動的東西
但是現在老師教的是一個厲害的 嘿嘿
自己旋轉
你們以為很難麻?
不 跟你們說 輕輕鬆鬆
Piece of cake 一片蛋糕ㄎㄎ
他就是會一直轉一直轉一直轉
厲害吧 為了證明我的不豪洨
所以我決定 ........
沒看過茶壺在這個方向對吧嘿嘿
告訴你 他是自己轉的
程式碼如下如下
#include <GL/glut.h>
float angle=0;
void display()
{
    {
        GLfloat pos[] = {0, 0, -1, 0};
        glLightfv(GL_LIGHT0, GL_POSITION, pos);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
    }
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0,0,1);
        glTranslatef(0.5, 0, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glFlush();
}
void timer(int t)
{
    glutTimerFunc(20, timer, 0);
    angle++;
    glutPostRedisplay();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("TRT 3D");
    glutDisplayFunc(display);
    glutTimerFunc(20, timer, 0);
    glutMainLoop();
}
嘿嘿 是不是輕鬆簡單明白呢 ㄎㄎ

第二節課

再來就是自己移動了
我知道讓他自己轉絕對是不厲害的東西
所以我們就來用滑鼠控制吧ㄎㄎ
有沒有看到!!!!!
他又不一樣ㄖㄖㄖㄖ
沒錯 我就是用滑鼠來控制的ㄎㄎ
想要學麻 嘿嘿
告訴你
讓你輕鬆簡單又可以自學的方式
就是 ...程式碼如下 ...哈哈

#include <GL/glut.h>
float angle=0, oldX=0, oldY=0;
void display()
{
    {
        GLfloat pos[] = {0, 0, -1, 0};
        glLightfv(GL_LIGHT0,GL_POSITION, pos);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
        }
        glEnable(GL_DEPTH_TEST);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glPushMatrix();
            glRotatef(angle,0,0,1);
            glTranslatef(0.5 , 0, 0);
            glutSolidTeapot(0.3);
        glPopMatrix();
        glFlush();
}
void timer(int t)
{
    glutTimerFunc(20, timer,0);
    ///angle++;
    glutPostRedisplay();
}
void mouse (int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) { oldX=x; oldY=y; }
}

void motion(int x, int y)
{
    angle += (x -oldX);
    oldX= x;
}
int main (int argc, char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("TRT 3D");
    glutDisplayFunc(display);
    glutTimerFunc(20,timer,0);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

嘿嘿 是不是很容易阿
趕快用滑鼠試試看移動我們的茶壺吧 ~~~

再來就是雙茶壺然後掛上去ㄎㄎ
廢話不多說 直接看圖
有沒有看到掛上去ㄖ阿ㄎㄎ
有沒有很厲害呢 ㄎㄎㄎ
直接看程式碼 不掉大家胃口了

#include <GL/glut.h>
float angle=0, oldX=0, oldY=0;
void display()
{
    {
        GLfloat pos[] = {0, 0, -1, 0};
        glLightfv(GL_LIGHT0,GL_POSITION, pos);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
        }
        glEnable(GL_DEPTH_TEST);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glPushMatrix();
            glTranslatef(0.45,0.14,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.45 , -0.1, 0);
            glutSolidTeapot(0.3);
        glPopMatrix();
        glutSolidTeapot(0.3);
        glFlush();
}
void timer(int t)
{
    glutTimerFunc(20, timer,0);
    ///angle++;
    glutPostRedisplay();
}
void mouse (int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) { oldX=x; oldY=y; }
}

void motion(int x, int y)
{
    angle += (x -oldX);
    oldX= x;
}
int main (int argc, char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("hw");
    glutDisplayFunc(display);
    glutTimerFunc(20,timer,0);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

快點去試試看吧 ㄎㄎ

第三節課
一上課就考試
但是我一下課就開始睡覺 ...
評鑑真的太累了 整夜沒睡 嗚嗚
累死了 不過還好的是 我還是有聽到 ㄎㄎ
其實不會很難 只是麻煩而已 哀哀

最後來個做體操

#include <GL/glut.h>
float angle=0,oldX=0,oldY=0;
void drawArm()
{
    glPushMatrix();
        glScalef(0.5,0.25,0.25);
        glutSolidCube(1);
    glPopMatrix();
}
void drawBody()
{
    glPushMatrix();
        glTranslatef(0,-0.5,0);
        glRotatef(-90,1,0,0);
        glutSolidCone(0.3,0.8,30,30);
    glPopMatrix();
}

void display()
{
    {
        GLfloat pos[]={0,0,-1,0};
        glLightfv(GL_LIGHT0,GL_POSITION,pos);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
    }
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(0.15,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        //glutSolidTeapot(0.3);
        drawArm();
    glPushMatrix();
    glTranslatef(0.25,0,0);
    glRotatef(angle,0,0,1);
    glTranslatef(0.25,0,0);
    drawArm();
    glPopMatrix();
    glPopMatrix();
//以上是右手,以下是左手(程式碼是一樣,只有正負號不一樣)這樣就可以做出兩隻手啦.

glPushMatrix();
        glTranslatef(-0.15,0,0);
        glRotatef(angle,0,0,-1);
        glTranslatef(-0.25,0,0);
        //glutSolidTeapot(0.3);
        drawArm();
    glPushMatrix();
    glTranslatef(-0.25,0,0);
    glRotatef(angle,0,0,-1);
    glTranslatef(-0.25,0,0);
    drawArm();
    glPopMatrix();
    glPopMatrix();
    drawBody();
    glFlush();

}
void timer(int t)
{
    glutTimerFunc(20,timer,0);
    //angle++;
    glutPostRedisplay();
}


void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN){ oldX=x; oldY=y; }
}

void motion(int x, int y)
{
    angle+=(x-oldX);
    oldX=x;
}

int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("TRT 3D");
    glutDisplayFunc(display);
    glutTimerFunc(20,timer,0);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

OK 今天課程就到這邊囉~~~

沒有留言:

張貼留言