2021年3月29日 星期一

吉親摳ㄎㄎ-Week06

電腦圖學 

WEEK06
今天上課就是一個悲劇,早上上課沒朋友,MAYA也還沒做QQ,程式碼又亂掉,好難過
希望趕快連假

那首先今天先畫出一個藍色的長方形,然後讓它旋轉,簡單吧呵呵(*°°*)

               前提要緊:程式碼從後面看上來比較好喔

程式碼:
#include <GL/glut.h>
#include <stdio.h>
float vx[2000],vy[2000];
float angle=0;
int N=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();  ///備分矩陣
        glRotatef(angle,0,0,1);  ///選轉矩陣
        glScalef(0.5,0.1,0.1);  ///調成細長的
        glColor3f(0.3,0.3,1.0);  ///藍藍的
        glutSolidCube(1);  ///方塊
    glPopMatrix();  ///還原矩陣
    glutSwapBuffers();
}
void motion(int x,int y)   ///mouse
{
    angle++; ///增加角度
    display();  ///增加後重畫畫面
}

那因為進度亂掉了,所以從新來過,開始!!
做出會轉的正方形

程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix(); ///備分矩陣
        glRotatef(angle++,0,0,1); ///選轉矩陣
        glutSolidCube(1); ///方塊
    glPopMatrix(); ///還原矩陣
    glutSwapBuffers();
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("Week06 08160971");

    glutIdleFunc(display); ///很閒的時候重複畫面,display()
    glutDisplayFunc(display);
    glutMainLoop();
}

把正方形拉皮做出長方形,然後逆時針旋轉

程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix(); ///備分矩陣
        Translatef(0,0,0);///(3)把正確的手臂掛在肩上
        glRotatef(angle++,0,0,1); ///(2)轉動
        glTranslatef(-0.25,0,0); ///(1)將旋轉中心

        glScalef(0.5,0.1,0.1);///細細長長的
        glutSolidCube(1); ///方塊
    glPopMatrix(); ///還原矩陣
    glutSwapBuffers();
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("Week06 08160971");

    glutIdleFunc(display); ///很閒的時候重複畫面,display()
    glutDisplayFunc(display);
    glutMainLoop();
}

再做出像指針一樣的轉

程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1); ///細細長長的
        glutSolidCube(1); ///方塊
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix(); 
        glTranslatef(-0.25,0,0);///把正確的手臂掛在肩上
        glRotatef(angle++,0,0,1); ///轉動
        glTranslatef(-0.25,0,0); ///旋轉中心
        hand();
    glPopMatrix(); 
    hand();
    glutSwapBuffers();
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("Week06 08160971");

    glutIdleFunc(display); 
    glutDisplayFunc(display);
    glutMainLoop();
}

做出像機器人的手臂,逆時鐘大風吹!!

程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩關節
        glRotatef(angle,0,0,1); ///(2)轉動
        glTranslatef(-0.25,0,0); ///(1)旋轉中心
        hand();///上手臂
        glPushMatrix();
            glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩上
            glRotatef(angle,0,0,1); ///(2)轉動
            glTranslatef(-0.25,0,0); ///(1)旋轉中心
            hand();///下手肘
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();
    angle++;
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("Week06 08160971");

    glutIdleFunc(display); 
    glutDisplayFunc(display);
    glutMainLoop();
}
那因為人有兩隻手,所以做出另一半才完整,好可憐我的另一半呢,我完整嗎?
程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix(); ///左半邊
        glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩關節
        glRotatef(angle,0,0,1); ///(2)轉動
        glTranslatef(-0.25,0,0); ///(1)旋轉中心
        hand();///上手臂
        glPushMatrix();
            glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩上
            glRotatef(angle,0,0,1); ///(2)轉動
            glTranslatef(-0.25,0,0); ///(1)旋轉中心
            hand();///下手肘
        glPopMatrix();
    glPopMatrix();

     glPushMatrix(); ///右半邊
        glTranslatef(+0.25,0,0);///(3)把正確的手臂掛在肩關節
        glRotatef(-angle,0,0,1); ///(2)轉動
        glTranslatef(+0.25,0,0); ///(1)旋轉中心
        hand();///上手臂
        glPushMatrix();
            glTranslatef(+0.25,0,0);///(3)把正確的手臂掛在肩上
            glRotatef(-angle,0,0,1); ///(2)轉動
            glTranslatef(+0.25,0,0); ///(1)旋轉中心
            hand();///下手肘
        glPopMatrix();
    glPopMatrix();


    glutSwapBuffers();
    angle++;
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("Week06 08160971");

    glutIdleFunc(display); 
    glutDisplayFunc(display);
    glutMainLoop();
}
記得今天有作業3喔,別混了:))))) 但我還是想放假
接下來是加課的開始 再痛苦50分鐘吧

回家作業:製作機器人 

給大家看看我可愛的機器人吧
程式碼:

沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...