2023年3月23日 星期四

week06__Shen TRT機器人練習

 先建置glut的環境,記得改lib內容 glut32.a

#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);





glPushMatrix();

//glTranslatef(0.5,0.5,0);

//glRotatef(angle,0,0,1);

//glTranslatef(0.45,0,0);

//glutSolidTeapot(0.3);

         glRotatef(angle,0,0,1);

         glTranslatef(0.25,0,0);

         myCube();

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();

    }



呼叫myCube函式,並且會顯示出長方形,



加兩行 glRotatef(angle,0,0,1);
         glTranslatef(0.25,0,0);
讓他可以旋轉。


兩層Push TRT Pop
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();


利用上一個程式碼延伸出左右手臂的概念
正負值來調整位置
兩隻手臂都是兩層Push TRT Pop
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++;
}

angle角度改負值
void motion(int x,int y)
{
    angle = x;
}

 glutMotionFunc(motion);
利用滑鼠移動手臂






沒有留言:

張貼留言