Получение гладкого кватерниона из матрицы направляющых косинусов?
Пап, а с кем это ты разговаривал? :)
вдруг поможет
avs.chat.ru/sphere3d.htm

мне кажется что проблема в шаге 3 
Если я ничего не путаю, то преобразование A[Матрица Вращения] -> [Кватернион] -> B[Матрица Вращения]: A !=B

Ещё, если где нибудь используется вычисление обратной матрицы, то необходимо проверить правильность этой функции.
Например в DirectX D3DX вычисление обратной матрицы работает корректно не для всех значений. Я брал реализацию из nVidia SDK