2023年3月23日 星期四

Week06 UC

 step01-1

先開啟新專案然後複製上周最後一個程式 會跑出機器人



















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

    glPushMatrix();///簡化程式
        glScalef(0.5, 0.2, 0.2);
        glutSolidCube(1);
    glPopMatrix();

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

    glColor3f(1, 1, 1);
    glutSolidCube(1);

    glPushMatrix();
        glTranslatef(0.5, 0.5, 0);
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.25, 0, 0);
        glColor3f(0, 1, 0);
        myCube();
    glPopMatrix();

    glPushMatrix();
        glTranslatef(-0.5, 0.5, 0);
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.25, 0, 0);
        glColor3f(0, 1, 0);
        myCube();
    glPopMatrix();


glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week04");

glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
 step01-2
修改一下程式碼 變掛著旋轉的茶壺











step02-1
開啟新的專案,專案名稱week06-2_TRT_robot3_hierarchy
複製step01-2的程式碼,修改為一個小長方形方塊













加入旋轉













增加方塊,形成手臂















增加另一邊的手臂

















#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("week06");
  glutDisplayFunc(display);
  glutIdleFunc(display);
  glutMainLoop();

}
step03-1
新增一個新專案week06-4_TRT_robot5_mouse_motion_angle














#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();
}
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("week05");

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

  glutMainLoop();

}

step03-2 練習OpenGL圖學期中考-模擬練習





沒有留言:

張貼留言