2018年3月26日 星期一

八隻八哥八筆記 week05

Week-5

Step1 上週複習
(畫茶壺)

code:
#include <GL/glut.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05step");
    glutDisplayFunc(display);
    glutMainLoop();
}

(茶壺手動自轉)

code:
#include <GL/glut.h>///開啟GL外掛
#include <stdio.h>
float angle=0;
void motion(int x, int y)
{
    angle=x;///改變angle值
    glutPostRedisplay();///重畫
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();
        glRotatef(angle,0,0,1);///轉動
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();///秀出東西

}
int main(int argc, char**argv)///主函式
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("05160400Week5");
   glutMotionFunc(motion);
   glutDisplayFunc(display);
   glutMainLoop();

}


Step2 改變位置

部分code:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();
        glRotatef(angle,0,0,1);///轉動
        glTranslatef(0.5,-0.1,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();///秀出東西

}

Step3 茶壺關節

code:
#include <GL/glut.h>///開啟GL外掛
#include <stdio.h>
float angle=0;
void motion(int x, int y)
{
    angle=x;///改變angle值
    glutPostRedisplay();///重畫
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();
    glutSolidTeapot(0.3);

    glTranslatef(0.5,0.15,0);
        glRotatef(angle,0,0,1);///轉動
        glTranslatef(0.45,-0.08,0);
        glutSolidTeapot(0.3);

    glPopMatrix();///還原矩陣
    glutSwapBuffers();///秀出東西

}
int main(int argc, char**argv)///主函式
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("05160400Week5");
   glutMotionFunc(motion);
   glutDisplayFunc(display);
   glutMainLoop();

}

Step4 多茶壺關節


code:
#include <GL/glut.h>///開啟GL外掛
#include <stdio.h>
float angle=0;
void motion(int x, int y)
{
    angle=x;///改變angle值
    glutPostRedisplay();///重畫
}
void 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();///還原矩陣
    glutSwapBuffers();///秀出東西

}
int main(int argc, char**argv)///主函式
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("05160400Week5");
   glutMotionFunc(motion);
   glutDisplayFunc(display);
   glutMainLoop();

}








沒有留言:

張貼留言