Компоненты вектора направления (прямого вектора):
x = 2 * (q1*q3 + q0*q2)
y = 2 * (q2*q3 - q0*q1)
z = 1 - 2 * (q1*q1 + q2*q2)
Эта формула рассчитывается из матрицы Quaternion-to-Matrix (ниже) с умножением на вектор (0,0,1)
.
Нормализовать D=(x,y,z)
, если он не является единицей, и вычислить P_New.x= P0.x + S * D.x
и другие компоненты.
Чтобы получить вектор ориентации вверх и влево (возможно, ваша ориентация относится к другая ориентация базового кадра - OX или OY (вперед), используйте другие столбцы матрицы, указанной ниже:
Ссылка: Умножение кватернионов и умножение ортогональных матриц могут использоваться для представления поворота. Если кватернион представлен qw + i qx + j qy + k qz
, то эквивалентная матрица для представления того же вращения:
1 - 2*qy2 - 2*qz2 2*qx*qy - 2*qz*qw 2*qx*qz + 2*qy*qw
2*qx*qy + 2*qz*qw 1 - 2*qx2 - 2*qz2 2*qy*qz - 2*qx*qw
2*qx*qz - 2*qy*qw 2*qy*qz + 2*qx*qw 1 - 2*qx2 - 2*qy2