Вы ищете одноосное вращение от кадра S1 до кадра S0 (или наоборот). Ось вращения здесь не так важна. Вы хотите угол поворота.
Пусть R0 и R1 - верхние левые матрицы вращения 3x3 из ваших матриц 4x4 S0 и S1. Теперь вычислите E = R0 * transpose (R1) (или transpose (R0) * R1; на самом деле не имеет значения, какой.)
Теперь посчитайте
d(0) = E(1,2) - E(2,1)
d(1) = E(2,0) - E(0,2)
d(2) = E(0,1) - E(1,0)
dmag = sqrt(d(0)*d(0) + d(1)*d(1) + d(2)*d(2))
phi = asin (dmag/2)
Я пропустил некоторые волосатые детали (и эти детали могут вас укусить). В частности, вышеупомянутое недопустимо для очень больших углов ошибок (ошибка> 90 градусов) и неточно для больших углов ошибок (угол> 45 градусов).
Если у вас есть функция общего назначения, которая извлекает вращение одной оси из матрицы, используйте ее. Или, если у вас есть функция общего назначения, которая извлекает кватернион из матрицы, используйте ее. (Вращение одной оси и кватернионы очень тесно связаны друг с другом).