OpenGL translation before and after a rotation

前端 未结 1 896
终归单人心
终归单人心 2020-11-28 00:03

The following is code (taken from http://www.glprogramming.com/red/chapter03.html) regarding how to draw a robot\'s arm and shoulder and rotating them by some user input:

相关标签:
1条回答
  • 2020-11-28 00:22

    Now, my question is for the elbow. Why is there a translation forward on the x-axis both before and after the rotate?

    If you want to imagine how the matrix operations change the model, then you need to "read" the operations in the reverse order. This is, because the current matrix of the matrix stack is multiplied by the matrix which is specified by the new operation and the matrices are stored in column-major order (fixed function pipeline).

    Start with the elbow cube

    glutWireCube(1.0f);
    

    Scale the elbow

    glPushMatrix();
    glScalef(2.0f, 0.4f, 1.0f);
    glutWireCube(1.0f);
    glPopMatrix();
    

    Move it to the right

    glTranslatef(1.0f, 0.0f, 0.0f);
    

    Rotate the elbow

    glRotatef(45.0f, 0.0f, 0.0f, 1.0f);
    

    Move the rotated elbow to the right

    glTranslatef(1.0f, 0.0f, 0.0f);
    

    Draw the shoulder cube

    glutWireCube(1.0f);
    

    Scale the shoulder

    glPushMatrix();
    glScalef(2.0f, 0.4f, 1.0f);
    glutWireCube(1.0f);
    glPopMatrix();
    

    Move the arm (elbow and shoulder) to the right

    glTranslatef(1.0f, 0.0f, 0.0f);
    

    Rotate the arm

    glRotatef(-15.0f, 0.0f, 0.0f, 1.0f);
    

    Move the arm to its final position (to the left)

    glTranslatef(-1.0f, 0.0f, 0.0f);
    

    0 讨论(0)
提交回复
热议问题