|
Поворот радиус-вектора на кватернион, что-то не сходится... |
|
|
|
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, 07:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

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

|
Цитата(alexPec @ Feb 16 2014, 11:40)  Думал раз уж есть кватернион, повернуть на него вектор проще чем строить матрицу поворота, а потом поворачивать.
Вообще надо подвижную систему координат, заданную кватернионом, повернуть вокруг одной из осей. Для этого нахожу этот радиус-вектор, совпадающий с осью подвижной СК, строю по нему кватернион поворота, и умножаю на него кватернион подвижной СК. Может я все делаю через сложно ? Да, можно и прямо по кватерниону поворачивать с двумя умножениями. Судя по тому, что вы приводите цифры вместо кода(которого тут должно быть всего три строчки), вы так и не сделали библиотеку стандартных операций с кватернионами и матрицами, поэтому запросто можете допустить какую-нибудь ошибку в кодировании.
|
|
|
|
|
Feb 16 2014, 10:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(Timmy @ Feb 16 2014, 14:16)  Да, можно и прямо по кватерниону поворачивать с двумя умножениями. Судя по тому, что вы приводите цифры вместо кода(которого тут должно быть всего три строчки), вы так и не сделали библиотеку стандартных операций с кватернионами и матрицами, поэтому запросто можете допустить какую-нибудь ошибку в кодировании. Ну выводы преждевременные, кода нет потому что написано (а точнее нарисовано) все в LabView. Привожу "код": операция создания кватерниона из радиус-вектора и угла, нормирование, умножение получение кватерниона в степени -1. Остальное все как описано: создаем исходный кватернион с углами P=45,0,30; создаем вектор v={0,1,0}, ну и вычисляем P*v*P^-1 Умножение в символьном виде: {a1,a2,a3,a4}*{b1,b2,b3,b4} = {a1b1-a2b2-a3b3-a4b4, a1b2+a2b1+a3b4-a4b3, a1b3+a3b1+a4b2-a2b4, a1b4+a4b1+a2b3-a3b2}. Остальное вроде на рисунках понятно.
Эскизы прикрепленных изображений
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|