Преобразование локальных (= повернутых) координат в глобальные координаты - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть QVector3D, который определяет скорость объекта в локальной системе координат (= положительное Z означает движение вперед, ...), и QVector3D с шагом 10-й степени (0..3600), определяющий вращение объект в глобальной системе координат.

Теперь, чтобы смоделировать мою сцену, мне нужна скорость объекта QVector3D в глобальной системе координат.

что я нашел, так это матрицы вращения (от http://en.wikipedia.org/wiki/Rotation_matrix#Rotations_in_three_dimensions):

qreal angle(qreal in){ //helper function
    return in/1800.0f*M_PI;
}

    qreal xptr[9]={
        1,0,0,
        0,cos(angle(rotation.x())),-sin(angle(rotation.x())),
        0,sin(angle(rotation.x())),cos(angle(rotation.x()))
    };
    qreal yptr[9]={
        cos(angle(rotation.y())),0,sin(angle(rotation.y())),
        0,1,0,
        -sin(angle(rotation.y())),0,cos(angle(rotation.y()))
    };
    qreal zptr[9]={
        cos(angle(rotation.z())),-sin(angle(rotation.z())),0,
        sin(angle(rotation.z())),cos(angle(rotation.z())),0,
        0,0,1
    };

но я понятия не имею, как правильно их использовать.

РЕДАКТИРОВАТЬ: если это уместно: единицы измерения, направление вращения, ... следуйте стандарту OpenGL.

1 Ответ

0 голосов
/ 23 апреля 2011

Использовать матричные продукты: transfomration_matrix x original_vector = transformed_vector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...