С прошлого года мучаюсь вопросом, ибо своего воображения не хватает.
Дано:
Координаты x, y, z объекта в пространстве - абсолютные;
Углы поворота объекта по всем трём осям в градусах - повороты относительно абсолютного вектора, так сказать.
Задача:
Вычислить смещения по всем осям в абсолютных координатах для смещения в локальных для объекта дельтах: dX, dY, dZ.
Как я понимаю решить сие можно с помощью элементарных познаний в тригонометрии, школьными синусами и косинусами. Но это было давно, воображение у меня не держит три оси одновременно и т.д.
Чувствую матрицы бы решили все проблемы, да и так удобнее хранить данные о координатах и векторе... Но важно решить задачу на таком уровне абстракции: вещественные координаты и углы поворота в градусах.
Нужен метод объекта:
объект->передвинься(на 2 вправо, на 1.5 вверх, на 15 назад)
Может быть что-то из библиотеки Qt уже умеет решать такие задачи? (QTransform увы только для 2D и матриц QMatrix3x3).
public void moveRelativeBy(float deltaX, float deltaY, float deltaZ)
{
this->position.x += // ???
this->position.y += // ???
this->position.z += // ???
}