У меня есть 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.