Естественные науки

Линейная алгебра кватернион.

Изучая кватернион, я понял что между кватернионом и векторным умножением есть большая связь. Результатом векторного умножения двух векторов будет вектор, перпендикулярный плоскости этих двух векторов, если по простому если вектор а поменял свое положение в пространстве, то векторное произведение начального и конечного положения вектора - даст ось вращения. В кватернион кроме вектора (оси вращения) заложена величина поворота в радианах и направление, за это отвечает длина вектора и 4 параметр. Мне не понятно - глядя на кватернион как понять на сколько радиан он повернется и в какую сторону по часовой или против часовой - если смотреть на вектор кватерниона как на штопор, где ручка штопора это начало координат. Спасибо за ваши ответы
сам заметил? тогда молодец.

исторически сначала Гамильтон придумал кватернионы, потом уже играясь с ними придумал и скалярное и векторное умножение обычных 3-мерных векторов.

поворот делается не просто умножением, а парой умножений. Тогда первая компонента будет косинусом половинного угла поворота, а 3 следующие - осью.

я когда-то писал это для коллег, сейчас скопирую сюда:
---------------------

Любой поворот 3-мерного пространства всегда можно представить как поворот вокруг какой-то оси (Эйлер).

Мы описываем поворот кватернионом длины 1. Любой поворот (включая и нулевой) - длина 1.

Как получить кватернион для поворота:
поворот вокруг оси (x, y, z) на угол a описывается кватернионом q = cos(a/2) + (i*x + j*y + k*z) * (sin(a/2) / корень (x^2 + y^2 + z^2)).
То есть, первая (действительная) компонента - косинус половинного угла, остальные (мнимые) компоненты - тот самый вектор, вокруг которого поворачиваем. Сомножитель с синусом и корнем - просто подгонка длины кватерниона под единицу.

Как повернуть:
чтобы повернуть какой-то 3-мерный вектор v (a, b, c) на кватернион q, надо посчитать q^(-1)*v*q. Представляем поворачиваемый вектор как кватернион a*i + b*j + c*k (действительная часть - ноль) и перемножаем.

Найти q^(-1) - просто, для единичных кватернионов надо просто взять ту же действительную часть, а у всей мнимой поменять знак.

И еще: нетрудно заметить, что q и -q описывают один и тот же поворот. Все естественно: поворот глобуса вокруг вектора, идущего из центра к сев. полюсу на +90 - то же самое, что поворот вокруг вектора, идущего из центра к южному, но на -90. Обычно нам это никак не мешает.
НП
Наталья Попруга
73 002
Лучший ответ
Улукбек Муслим исследуя дальше эту тему, я понял что кватернион может показать вращение на 180 градусов, дальнейшее количество оборотов задается длинной вектора оси. Например если нам нужно повернуть пространство координат на 180 градусов по оси х, т. е повернуть (1,0,0)
->(x,y,z) - у нас будет кватернион (0,(1,0,0)) сделать полный оборот - (0,(2,0,0)), чтобы вращение было в обратную сторону, необходимо поменять направление вектора оси на противоположное (умножение 4D вектора на -1) Получим (0,(-1,0,0)) - это на 180 в обратном направлении и (0,(-2,0,0)) - соответственно на полный оборот в обратном направлении. Итак как же по кватерниону определить куда вращается объект в контексте штопора, где ручка штопора это начало координат?