![]() |
|
![]() ![]() ![]() |
|
GreyBeholder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 28.11.2011 Репутация: нет Всего: нет |
Мыслительный процесс зашел в тупик
![]() - Повернуть вектор (x,y,z) - > (5,10,15) вокруг оси Х на 29 градусов. Первое что сделал - повернул с помощью матрицы поворота с углами Эйлера - Получилось!!! |1 0 0 | [5, 10, 15] X |0 cos(a) -sin(a) | = [5, 16.0183, 8.2712] |0 sin(a) cos(a) | Построил в Solidworks - Все верно. Дальше пришло время сделать это используя кватернион, т.к. в дальнейшем будет задача поворачивать по 3-м углам Эйлера, а там всякие неприятности... Для перехода от углов Эйлера к кватернионам использую: Q.x = X*sin(a/2) Q.y = Y*sin(a/2) Q.z = Z*sin(a/2) Q.w = cos(a/2) Для своего случая получил кватернион [sin(29/2), sin(0/2), sin(0/2), cos(29/2)]=[0.25, 0, 0, 0.968] Как мне пристроить "ЭТО" к моему вектору [5, 10, 15] ???? ![]() В дальнейшем (когда прояснится ситуация) планирую умножать 3 кватерниона с углами поворота вокруг осей XYZ чтобы получить кротчайший путь поворота. Но пока незнаю КАК ЭТО сделать. Пожалуйста направте на нужный путь. Спасибо. |
|||
|
||||
maxdiver |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Чтобы по кватерниону поворота q и данной точке p узнать, в какую точку p' перейдёт эта точка p, надо посчитать:
(где звездочкой обозначено кватернионное произведение; точку p мы приводим к кватерниону, просто полагая w у неё нулю; тильдой обозначен сопряжённый кватернион - т.е. когда знаки компонент x,y,z изменены на противоположные; справа в итоге получится кватернион, но у него будет нулевая компонента w). Это называется формулой Родрига, если не ошибаюсь. Правда, чтобы получить такой же ответ, как у вас, надо использовать угол -29. Вероятно, где-то у нас расхождение в том, по или против часовой стрелки отсчитывается угол. Чтобы "скомбинировать" три поворота, надо перемножить соответствующие кватернионы. В каком порядке перемножать кватернионы, и как ставить скобки в этом кватернионном произведении - понять не так просто, потому что всё зависит от того, что вы подразумеваете под разными поворотами: каждый следующий поворот задан в текущей системе координат, или задан в начальной/конечной системе координат. В общем, обычно проще экспериментальным путём подобрать правильный порядок произведения для конкретной задачи, чем ломать голову. |
|||
|
||||
GreyBeholder |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 28.11.2011 Репутация: нет Всего: нет |
Огромное спасибо. Все получилось. Сделал как написано. Вот и недостающее звено... !!! ![]() И угол действительно меняет знак. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |