OpenGL движение Android с заданной скоростью

1

Это очень простая проблема, но я просто не могу найти полный ответ нигде.

Рассмотрим, что объект движется вдоль оси z с заданной СКОРОСТЬЮ. (Пример: -0.2 opengl units) Теперь я поворачиваю объект вокруг своей локальной оси с углами поворота X, Y и Z.

Вопрос: какова следующая позиция моего объекта?

Я использую следующие уравнения (которые, как я знаю, ошибаются, но я просто не могу сделать их правильно)

    positionX += -SPEED * Math.sin(rotationY * Utils.DEG)* Math.cos(rotationX * Utils.DEG);
    positionY += SPEED * Math.sin(rotationX * Utils.DEG);       
    positionZ += -SPEED * Math.cos(rotationX * Utils.DEG)* Math.cos(rotationY * Utils.DEG);

Где моя ошибка?

Теги:
opengl-es

1 ответ

0

Я бы сохранил вектор, представляющий ориентацию объекта.

При вращении поверните вектор ориентации.

Когда вы двигаетесь,

positionX += SPEED * orientation.X
positionY += SPEED * orientation.Y
etc.
  • 0
    Я тоже пробовал с векторами, но я в той же ситуации. У меня проблемы при умножении с матрицами вращения. Так что я думаю, что любое из этих решений будет вполне приемлемым, если вы объясните более подробно.
  • 0
    @Mihaisiatat - Пожалуйста, опубликуйте свой код для поворота вектора и объясните, какие у вас проблемы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню