Мой первый ответ был неверным. Это мой отредактированный ответ.
Ваши единичные векторы X, Y, Z можно объединить в матрицу 3x3:
A = [[x1 y1 z1],
[x2 y2 z2],
[x3 y3 z3]]
Поскольку X, Y, Z изменяются со временем, A также изменяется со временем.
A - это матрица вращения!
В конце концов, если вы позволите i = (1,0,0) быть единичным вектором вдоль оси x, то
A i = X
, так что А поворачивает i в X. Аналогично, он поворачивает ось Y в Y и
Ось Z в Z.
A называется матрицей направляющих косинусов (DCM).
Таким образом, используя формулу оси DCM к Эйлеру
Вычислить
theta = arccos((A_11 + A_22 + A_33 - 1)/2)
тета - угол поворота Эйлера.
Величина угловой скорости, | w |, равна
w = d(theta)/dt ~= (theta(t+dt)-theta(t)) / dt
Ось вращения задается как e = (e1, e2, e3), где
e1 = (A_32 - A_23)/(2 sin(theta))
e2 = (A_13 - A_31)/(2 sin(theta))
e3 = (A_21 - A_12)/(2 sin(theta))