|
Поворот радиус-вектора на кватернион, что-то не сходится... |
|
|
|
Feb 15 2014, 21:14
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Всем добрый день.
Пытаюсь повернуть радиус-вектор единичной длины, совпадающий с одной из осей базовой СК на кватернион (и получить радиус-вектор единичной длины, совпадающий с осью повернутой СК):
1. Беру кватернион, соответствующий углам эйлера 45,0,30 (цифры везде округлю до сотых):
P1 = {0.89,0.37,0.24,0.1}
2. Беру радиус-вектор
{0,1,0}, представляю его кватернионом V = {0,0,1,0}
3. Нахожу обратный кватерниону Р1:
P2={0.89,-0.37,-0.24,-0.1}
4. Поворачиваю исходный радиус-вектор так:
P1*V*P2.
P1*V = {-0.24,-0.1,0.89,0.37}
(P1*V)*P2 = {0,0,0.7,0.7}
Что-то не так, т.к. P1 не имеет осей, лежащих в плоскости исходной СК, а результат (т.е. радиус-вектор) лежит в одной из плоскостей базовой СК (одна из координат =0).
Что делаю не так? Ни или так: как проверить достоверно результаты?
|
|
|
|
|
 |
Ответов
|
Feb 16 2014, 12:45
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(alexPec @ Feb 16 2014, 01:14)  1. Беру кватернион, соответствующий углам эйлера 45,0,30 (цифры везде округлю до сотых): То есть это эквивалентно углам 75,0,0 и 0,0,75? Тогда ничего удивительного в результате нет. Up: А судя по тому, что кватернион поворота не содержит при этом нулевой координаты, он вычислялся вовсе не по углам Эйлера, а как-то иначе.
Сообщение отредактировал Timmy - Feb 16 2014, 13:08
|
|
|
|
|
Feb 16 2014, 17:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(Timmy @ Feb 16 2014, 16:45)  Up: А судя по тому, что кватернион поворота не содержит при этом нулевой координаты, он вычислялся вовсе не по углам Эйлера, а как-то иначе. А с чего это он должен содержать нулевую координату??? Вы бы не вводили в заблуждение, поверните СК по ДВУМ углам Эйлера (рисунок). А теперь попробуйте представить ось вращения, лежащую в одной из плоскостей базовой СК, поворотом вокруг которой можно получить подвижную СК, повернутую на 2 угла Эйлера. У меня не получилось. Подскажите если знаете. Тему закрываю.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 17 2014, 10:37
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(alexPec @ Feb 16 2014, 21:57)  А с чего это он должен содержать нулевую координату??? Вы бы не вводили в заблуждение, поверните СК по ДВУМ углам Эйлера (рисунок). А теперь попробуйте представить ось вращения, лежащую в одной из плоскостей базовой СК, поворотом вокруг которой можно получить подвижную СК, повернутую на 2 угла Эйлера. У меня не получилось. Подскажите если знаете. Посмотрим на википедию: если второй угол, который бета, нулевой, то оси Z и z совпадают, поэтому первый и третий повороты выполняются вокруг общей оси и их углы просто складываются. В английской версии википедии так прямо и написано, кстати. Ещё: вы, очевидно, использовали альтернативную нотацию. В Математике легко проверить: Код <<Quaternions` aaq[axis_,angle_] := Quaternion[Cos[angle/2]*Norm[axis],Sin[angle/2]*axis[[1]], Sin[angle/2]*axis[[2]],Sin[angle/2]*axis[[3]]] aaq[{1,0,0},45/180*Pi]**aaq[{0,0,1},0]**aaq[{0,1,0},30/180*Pi]//N Quaternion[0.892399,0.369644,0.239118,0.0990458] Вот так получается ваш кватернион, первое вращение вокруг Y, так что ваш единичный вектор вращается на 30 вокруг себя, а потом ещё на 45 вокруг x, всё правильно считается.
Сообщение отредактировал Timmy - Feb 17 2014, 18:22
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|