2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Вращение в пространстве
Сообщение08.06.2011, 02:39 


13/12/08
58
Задачу нужно решить в общем виде, но об этом после. Для наглядности простой пример.

Есть диагональ куба - нижняя точка A(x1, y1, z1) и верхняя точка B(x2, y2, z1).

В точку С, являющейся центром этой диагонали помещаем отрезок L, который произвольно ориентирован.

Задача состоит в том, чтобы набором поворотов (двумя ? ) так повернуть этот отрезок, что он совпал с диагональю куба.

Основная проблема на какие углы поворачивать, сколько раз относительно какой оси, и в какой последовательности.

Вначале думал, что нужно найти угол между векторами - http://mathserfer.com/math/task.php?tname=vect_angle

но кажется это не то, что нужно ...

О! тут - post221452.html?hilit=%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B5#p221452

обсуждали что-то близкое, только ужасно сложно :) мне бы разжевать ...

<цитату пришлось удалить, иначе не мог отредактировать сообщение по просьбе модераторов>

Но как в моем случае найти угол $\psi$ ?

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 04:44 


02/11/08
1180
Цитата:
В точку С помещаем отрезок
расшифруйте.

А так в принципе ни чего страшного - можно и одним поворотом два вектора совместить (куб вроде и ни причем тут) - вопрос разрешено ли вращение вокруг оси перпендикулярной плоскости этих двух векторов?

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 04:51 


13/12/08
58
"В точку С помещаем отрезок"

отрезок имеет центр в точке D, точку С совмещаем с точкой D

Да куб не причем, просто казалось что так проще думать ...

Вращать можно как угодно, только выразить это желательно матрицей поворотов.

Но как это сделать ?

Хотя, желательно разложить на вращения вокруг осей Ox, Oy или Oz. Иначе нужно как-то выражать перпендикулярную плоскость через матрицу поворотов.

-- Ср июн 08, 2011 06:11:53 --

Переформулируем задачу точнее.

Есть два вектора один произвольный, второй лежит на оси Ox. Они совмещены центрами. Задача найти матрицу поворотов, которая совмещала бы эти два вектора.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 07:10 


02/11/08
1180
Правильно Вы начали рассуждение - осталось немного довести до конца формулы - и потом протестировать их на конкретных примерах. Вспомните про переход к сферической системе координат - как там углы вычисляются?

Но я бы так задачу ставил - есть два единичных вектора в пространстве с координатами $(x_1,y_1,z_1)(x_2,y_2,z_2)$, выходящие из начала координат - подобрать комбинацию поворотов вокруг координатных осей, обеспечивающую перевод второго вектора в первый.

Несколько ссылок - может понадобятся
http://mathworld.wolfram.com/RotationFormula.html
http://mathworld.wolfram.com/RotationMatrix.html
http://mathworld.wolfram.com/EulerAngles.html
http://mathworld.wolfram.com/RodriguesR ... rmula.html

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 08:07 
Заслуженный участник
Аватара пользователя


18/05/06
13246
с Территории
Ось поворота даётся векторным произведением наших векторов, угол - скалярным. Матрицу поворота на произвольный угол вокруг произвольной оси надо один раз сесть и выписать. Или вон по четвёртой ссылке есть. Всё.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 09:33 
Заблокирован по собственному желанию
Аватара пользователя


18/05/09
3612
tac в сообщении #455499 писал(а):
Но как в моем случае найти угол psi ?

Здесь рассказано: $\text{psi}=\psi$.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 15:54 


13/12/08
58
Ну, что то не клеится. Где ошибка ?

Первый вектор - это ось Ox - т.е. А(1, 0, 0).
второй вектор задается двумя точками b1(0, 0, 0) и b2 (2, 2, 2), итого сам вектор вроде B(2,2,2)

Угол между векторами 54.73 градусов (в радианах 0.955) согласно http://www.reshalki.ru/index.php/reshalki/141

Векторное произведение w(0, -2, 2) согласно http://www.reshalki.ru/index.php/reshalki/138

Подставляем это в матрицу поворотов http://mathworld.wolfram.com/RodriguesR ... rmula.html

И мимо ... а я ожидаю, что первый вектор (ось Ox) повернется так, чтобы пройти через две точки b1(0, 0, 0) и b2 (2, 2, 2)

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 16:01 
Заслуженный участник
Аватара пользователя


18/05/06
13246
с Территории
В какую сторону крутили? Попробуйте в другую.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 16:04 


13/12/08
58
ИСН в сообщении #455697 писал(а):
В какую сторону крутили? Попробуйте в другую.


Правильно я понимаю, что для этого нужно угол в радианах умножить на -1 ? тогда пробовал, тоже плохо.

Может векторное произведении нужно как-то нормализовать ?


В тоже время другим способом, подобрал углы и вроде что-то похожее получилось

neM3 rotY; rotY = Y_rot_rad((PI/5)*-1); // поворот на PI/5 вокруг y
neM3 rotZ; rotZ = Z_rot_rad(PI/4); // и поворот PI/4 вокруг z

Bones[i].Body->SetRotation(rotZ*rotY);

хотя углы странные (мне казалось, что диагональ куба по отношению к оси Х, находится поворотом дважды по 45 градусов), да и в общем виде эти углы найти не знаю как ...

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 17:30 


13/12/08
58
"Первый вектор - это ось Ox - т.е. А(1, 0, 0)."

Точнее задается тоже двумя точками a1(0,1,1) и a2(1,1,1) (центр диагонали)

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 17:34 
Заслуженный участник
Аватара пользователя


18/05/06
13246
с Территории
tac в сообщении #455699 писал(а):
Может векторное произведении нужно как-то нормализовать ?

Вообще-то да, нужно. К единичной длине.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 19:54 


13/12/08
58
ИСН в сообщении #455741 писал(а):
tac в сообщении #455699 писал(а):
Может векторное произведении нужно как-то нормализовать ?

Вообще-то да, нужно. К единичной длине.


И как это делается ? Я так понимаю, нужно найти длину вектора, а дальше что ?

а вроде нашел http://www.gamedev.ru/code/terms/Normalization

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 19:56 
Заслуженный участник
Аватара пользователя


18/05/06
13246
с Территории
А дальше поделить вектор на неё.

 Профиль  
                  
 
 Re: Вращение в пространстве
Сообщение08.06.2011, 20:15 


13/12/08
58
Большое спасибо всем, после нормализации все сошлось и получилось !! Ура :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group