2020年4月21日 星期二

Week08 黑糖珍珠撞奶

1.期中考試

2.Freeglut

①基礎形狀:
Sphere:球體 Cone:圓錐 Torus:甜甜圈形狀
(如圖所示~
***修改參數可以改變它的大小與粗細
②畫一個正方形:

PS程式碼:

#include <Gl/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidCube(0.5);
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutDisplayFunc(display);
    glutMainLoop();
}
③改變正方形的長寬

(稍微改下就有改變了~
PS程式碼:
#include <Gl/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z都變1/3
        glutSolidCube(0.5);
        glPopMatrix();///還原
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutDisplayFunc(display);
    glutMainLoop();
}
④讓長方形旋轉
(長方形以中心為軸在旋轉了~~)
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z都變1/3
        glutSolidCube(0.5);
    glPopMatrix();///還原
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glPushMatrix();///備份
        glRotatef(angle,0,0,1);///對z軸旋
        upper_arm();///用函式呼叫自己寫的程式
    glPopMatrix();///還原
    angle++;
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
}
⑤改變長方形旋轉的軸
(長方形以邊邊為軸在旋轉了~~只增加了一行程式碼哦٩꒰▽ ꒱۶⁼³₌₃
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z都變1/3
        glutSolidCube(0.5);
    glPopMatrix();///還原
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glPushMatrix();///備份
        glRotatef(angle,0,0,1);///對z軸旋
        glTranslatef(0.25,0,0);///此行為新增的
        upper_arm();///用函式呼叫自己寫的程式
    glPopMatrix();///還原
    angle++;
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
}
⑤-2改變長方形旋轉的軸
(長方形被掛到右上角了~~只有改變程式碼的位置哦d=====( ̄▽ ̄*)b 讚
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z都變1/3
        glutSolidCube(0.5);
    glPopMatrix();///還原
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glPushMatrix();///備份

        glTranslatef(0.5,0.5,0);///把下面正在以手肘為中心轉動的手掛到右上角
        glRotatef(angle,0,0,1);///對z軸旋
         glTranslatef(0.25,0,0);///把手肘(旋轉中心)放到畫面正中心
///這邊有改動哦
        upper_arm();///用函式呼叫自己寫的程式
    glPopMatrix();///還原
    angle++;
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
}
⑥旋轉的機器人手臂
(有兩隻手臂會旋轉誒~是不是很厲害~~
PS程式碼:
#include <Gl/glut.h>
void arm()
{
    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z都變1/3
        glutSolidCube(0.5);
    glPopMatrix();///還原
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glPushMatrix();///右手
        glTranslatef(0.2,0,0);///把下面正在以手肘為中心轉動的手掛到右上角
        glRotatef(angle,0,0,1);///對z軸旋
         glTranslatef(0.25,0,0);///把手肘(旋轉中心)放到畫面正中心
        glColor3f(1,0,0);arm();///畫紅色的手(上手臂)

    glPushMatrix();///備份
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        glColor3f(1,1,0);arm();///畫黃色的手(上手臂)
    glPopMatrix();///還原
    glPushMatrix();///左手
    glTranslatef(-0.2,0,0);///把下面正在以手肘為中心轉動的手掛到右上角
        glRotatef(-angle,0,0,1);///對z軸旋
         glTranslatef(-0.25,0,0);///把手肘(旋轉中心)放到畫面正中心
        glColor3f(1,0,0);arm();///畫紅色的手(下手臂)
    glPushMatrix();///備份
        glTranslatef(-0.25,0,0);
        glRotatef(-angle,0,0,1);
        glTranslatef(-0.25,0,0);
        glColor3f(1,1,0);arm();///畫黃色的手(下手臂)
    glPopMatrix();///還原
    angle++;
    glutSwapBuffers();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
}






沒有留言:

張貼留言