2023年3月23日 星期四

10160756廖云瑄week06

week06-1

[week06-1]

打開CodeBlocks,File,New,Project,OpenGL

選擇OpenGL Project

打標題後選擇桌面


開啟5-2的程式碼
加上一個小圓點讓茶壺的手把變成中心點在轉動
 glutSolidSphere(0.01,30,30);

     glPushMatrix();
     glRotatef(angle,0,0,1);
     glTranslatef(0.45,0,0);
     glutSolidTeapot(0.3);
    glPopMatrix();
新增 glTranslatef(0.5,0.5,0);
讓茶壺的手把掛在右上方


[week06-2]

貼上前一個作業的程式碼註解掉rotate translate
在放上小方塊
再加入rotate translate

複製
 glPushMatrix();
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        myCube();
    glPopMatrix();
再貼上一次

分成右邊上下手臂 左邊上下手臂
#include <GL/glut.h>
float angle = 0;
void myCube()

{
    glPushMatrix();
        glScalef(1,0.3,0.3);
        glutSolidCube(0.5);
    glPopMatrix();

}
void display()
{
     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glutSolidSphere(0.01,30,30);

    glPushMatrix();///右
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            myCube();///上手臂
    glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            myCube();///下手臂
    glPopMatrix();
glPopMatrix();

 glPushMatrix();///左
            glTranslatef(-0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            myCube();///上手臂
    glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            myCube();///下手臂
    glPopMatrix();
glPopMatrix();
     glutSwapBuffers();
     angle++;
}
int main(int argc, char *argv[])

{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05");

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

新增giutMotionFunc讓滑鼠可以控制手臂

#include <GL/glut.h>
float angle = 0;
void myCube()

{
    glPushMatrix();
        glScalef(1,0.3,0.3);
        glutSolidCube(0.5);
    glPopMatrix();

}
void display()
{
     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glutSolidSphere(0.01,30,30);

    glPushMatrix();///右
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            myCube();///上手臂
    glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            myCube();///下手臂
    glPopMatrix();
glPopMatrix();

 glPushMatrix();///左
            glTranslatef(-0.25,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(-0.25,0,0);
            myCube();///上手臂
    glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(-0.25,0,0);
            myCube();///下手臂
    glPopMatrix();
glPopMatrix();
     glutSwapBuffers();
    /// angle++;
}
void motion(int x,int y)
{
    angle=x;
}
int main(int argc, char *argv[])

{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week06");

    glutMotionFunc(motion);
    glutDisplayFunc(display);
    glutIdleFunc(display);\

glutMainLoop();
}
這裡













沒有留言:

張貼留言