Линейная алгебра кватернион.
Изучая кватернион, я понял что между кватернионом и векторным умножением есть большая связь. Результатом векторного умножения двух векторов будет вектор, перпендикулярный плоскости этих двух векторов, если по простому если вектор а поменял свое положение в пространстве, то векторное произведение начального и конечного положения вектора - даст ось вращения. В кватернион кроме вектора (оси вращения) заложена величина поворота в радианах и направление, за это отвечает длина вектора и 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. Обычно нам это никак не мешает.