OpenGL движение фигуры

Ребят объясните доходчиво каким образом понять из-за чего не двигается фигура? Глобальные переменные

GLfloat animationAngle = 0.0f;
GLfloat animationOffsetX = 0.0f;
GLfloat animationOffsetZ = 0.0f;        
GLfloat animationSpeed = 0.03f;        
GLfloat movementAmplitude = 3.0f;  

Функции

void display() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    gluLookAt(cameraMotionHelper.getDistance(),
        cameraMotionHelper.getDistance(),
        cameraMotionHelper.getDistance(),
        0.0f, 0.0f, 0.0f,
        0.0f, 1.0f, 0.0f);
   

    glRotatef(cameraMotionHelper.getRotationXZ(), 1.0f, 0.0f, -1.0f);
    glRotatef(cameraMotionHelper.getRotationY(), 0.0f, 1.0f, 0.0f);

    glPushMatrix();
    GLfloat lightPos[] = { 5.0f, 5.0f, 0.0f, 1.0f };
    glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
    glTranslatef(lightPos[0], lightPos[1], lightPos[2]);
    renderLamp();
  

    // Ось координат
    axis(15.0f);

   
    glPushMatrix();
    glTranslatef(animationOffsetX, 0.0f, animationOffsetZ);

    glRotatef(animationAngle, 1.0f, 0.0f, 0.0f);
    axis(3.0f);
    glScalef(1.5f, 1.5f, 1.5f);

  
    renderModel();

    
    glColor3f(1.0f, 1.0f, 1.0f);
   
    renderText("test", 0.1f, 0.2f, 0.3f);
    glPopMatrix();

    glutSwapBuffers();
}
void updateAnimation(int value) {
    // Получаем время для плавной анимации
    GLfloat time = glutGet(GLUT_ELAPSED_TIME) * 0.001f;

    // Вращение вокруг оси X (непрерывное)
    // Вращение вокруг оси X
    animationAngle += 2.0f;
    if (animationAngle > 360.0f) {
        animationAngle -= 360.0f;
    }

    // Смещение вдоль XZ с использованием синуса 
    
    animationOffsetX = sin(time * animationSpeed) * movementAmplitude;
    animationOffsetZ = sin(time * animationSpeed) * movementAmplitude;

    // Альтернатива: движение по отдельности по каждой оси
    // animationOffsetX = sin(time * animationSpeed) * movementAmplitude;
    // animationOffsetZ = sin(time * animationSpeed * 0.8f + 1.5f) * movementAmplitude;

    glutPostRedisplay();
    glutTimerFunc(16, updateAnimation, 0);
}

поставил точку для дебага в glTranslatef(animationOffsetX, 0.0f, animationOffsetZ);

  •   выдал такое значениеlightPos    0x0000000b1ed8ee78 {5.00000000, 5.00000000, 0.00000000, 1.00000000} float[4]
    

сама фигура находиться в заголовочном файле и построена с помощью треугольников которая имеет массив ВОТ КАК ЭТО ВЫГЛЯДИТ ВСЯ КОНСТРУКЦИЯ ДВИГАЕТСЯ НО НЕ САМА ФИГУРА


Ответы (0 шт):