1

我正在制作一个带有推式弹出矩阵和弹出菜单条目的方臂。我想让对象单独旋转,所以我在下面创建了代码,但一根手指与其他手指一起移动。为什么会一起移动?

void display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    draw_lines();

    glPushMatrix();

    glColor3f(1.0, 1.0, 1.0);
    glTranslatef(-1.0, 0.0, 0.0);
    glRotatef((GLfloat)shoulder, 0.0, 0.0, 1.0);
    glTranslatef(1.0, 0.0, 0.0);

    glPushMatrix();

    glScalef(2.0, 0.4, 1.5);
    glutWireCube(1.0); //First square(Shoulder)

    glPopMatrix();

    glTranslatef(1.0, 0.0, 0.0);
    glRotatef((GLfloat)elbow, 0.0, 0.0, 1.0);
    glTranslatef(1.0, 0.0, 0.0);

    glPushMatrix();

    glScalef(2.0, 0.4, 1.5);
    glutWireCube(1.0); //Second Square(Elbow)

    glPopMatrix();

    glTranslatef(1.0, 0.0, 0.0);
    glRotatef((GLfloat)finger_1, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, 0.7);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //First Finger

    glPopMatrix();

    glTranslatef(-0.3, 0.0, 0.0);
    glRotatef((GLfloat)finger_2, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, -0.4);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //Second Finger

    glPopMatrix();

    glTranslatef(-0.3, 0.0, 0.0);
    glRotatef((GLfloat)finger_3, 0.0, 0.0, 1.0);
    glTranslatef(0.25, 0.0, -0.5);

    glPushMatrix();

    glScalef(0.5, 0.2, 0.2);
    glutWireCube(1.0); //Third Finger

    glPopMatrix();

    glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();
}

对象旋转由单独的函数完成。

4

0 回答 0