2021年3月29日 星期一

Week-06

 第六周的主題:階層轉動

#include <GL/glut.h>

#include <stdio.h>

int N=0, vx[3000], vy[3000];

float angle=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 keyboard( unsigned char key, int x, int y)

{

    angle++;

    display();

}

int main(int argc, char **argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("08160695week06");


    glutIdleFunc(display);

    glutDisplayFunc(display);

    glutMainLoop();

}




glPopMartix();
加入旋轉angle
float angle=0;
在display有glRotatef


做出了會轉動的兩隻機械手臂

#include <GL/glut.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();
        glPushMatrix();
            glTranslatef(-0.25, 0, 0);
            glRotatef(angle, 0,0,1);
            glTranslatef(-0.25, 0,0);
            hand();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    angle++;
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160695week06");

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


讓方塊自轉




#include <GL/glut.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("mouse week06");

    glutIdleFunc(display);///idle很閒時 一直跑display
    glutDisplayFunc(display);
    glutMainLoop();
}

改變方塊旋轉中心



#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(-0.25,0,0);///改變旋轉中心位置
        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("mouse week06");

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


上下手臂的旋轉
#include <GL/glut.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();
        glPushMatrix();///下手臂
            glTranslatef(-0.25,0,0);
            glRotatef(angle++,0,0,1);
            glTranslatef(-0.25,0,0);
            hand();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    angle++;///移動
}
int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160695week06");

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

左右手臂的旋轉


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();
        glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            hand();
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///右手
        glTranslatef(0.25,0,0);
        glRotatef(-angle,0,0,1);///順時鐘旋轉
        glTranslatef(0.25,0,0);
        hand();
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(0.25,0,0);
            hand();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    angle++;
}

沒有留言:

張貼留言

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

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