Доброго времени суток, уважаемые формучане.
Столкнулся со следующей задачей: имеется датчик абсолютной ориентации, который умеет возвращать готовое значение в углах Эйлера

или в виде кватерниона

. С подобной задачей ранее сталкиваться не приходилось, либо матан успешно выветрился за прошедшие годы. Собственно, есть условно плоская прямоугольная поверхность, а требуется получить углы наклона. Пошерстив интернет, пришел к следующему решению:
Отложим на осях

(

) и

(

) единичные векторы, то бишь с координатами

и

соответственно. Теперь, при помощи кватерниона вращаем эти векторы, чтоб получить координаты точек концов векторов после поворота, но в исходной системе координат. Нашел вот такое решение:
На примере

. Сперва получаем промежуточный вектор.

Затем вычисляем результирующий ветор (

)

Далее, благодаря формуле

, находим косинус угла между вектором

и осью

. Ну а угол между

и

будет его дополнением, то есть

.
С вектором

ситуация аналогичная.
Собственно, полученные результаты меня смущают. Либо криво закодил, либо решение ошибочное, так что прошу подтвердить или исправить меня. Если с векторами и матрицами могли быть разве что глупые ошибки вроде опечаток, то с кватернионами все плохо - вроде бы, понимаю геометрический смысл, но вот как были выведены формулы выше - для меня темный лес. Везде написано - как складывать, умножать и так далее кватернионы, а вот как получить координаты точки после поворота, зная кватернион - нигде не нашел, хотя, это, вроде бы, очевидный кейс.
Заранее благодарен всем неравнодушным.