Воскресенье, 19.05.2024, 19:44
Приветствую Вас Гость | RSS

Форум 1000 задач

Сложение 2х поворотов в один - Форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Помогите решить задачу » Стереометрия » Сложение 2х поворотов в один
Сложение 2х поворотов в один
rurikДата: Воскресенье, 16.02.2014, 19:45 | Сообщение # 1
Группа: Пользователи
Сообщений: 2
Статус: Offline
Постановка задачи:
1)есть поворот  вокруг оси {x1,y1,z1} на угол a 
2)и есть поворот вокруг оси {x2,y2,z2} на угол b

Вопрос:  как получить результирующий поворот { x,y,z} и результирующий угол c ?

Подскажите пожалуйста формулу или где посмотреть, заранее благодарен.
 
AdminДата: Воскресенье, 16.02.2014, 22:27 | Сообщение # 2
Группа: Администраторы
Сообщений: 375
Статус: Offline
Судя по стилю сообщения, формулы для отдельного поворота вам известны. Если нет то посмотреть можно, например, тут или погуглить.

Сложение двух преобразований, очевидно, сведется к умножению матриц этих преобразований.

Насчет результирующего угла. Есть у меня нехорошее подозрение, что два последовательных поворота вокруг различных осей в большинстве случаев нельзя представить в виде одного поворота.
 
rurikДата: Понедельник, 17.02.2014, 13:25 | Сообщение # 3
Группа: Пользователи
Сообщений: 2
Статус: Offline
Я использую матрицы поворота. Я как то слишком абстрактно вопрос задал, давайте я Вам лучше конкретнее опишу ситуацию smile

Предыстория:
Я пишу 3D игру и там соответственно нужно производить поворот тела в пространстве. нужно делать 2 поворота по горизонтали и по вертикали.  Вот так должно быть, а сейчас у меня  происходит вот так  т.е. вращение происходит по углам Эйлера, а не так как я хочу.
Это происходит потому что я произвожу 2 поворота


Код
Matrix.rotateM(mMVPMatrix, 0, yAngle, 0, 1, 0);  
Matrix.rotateM(mMVPMatrix, 0, xAngle, 1, 0, 0);
Это код на java opengl.но это не суть на чем написано суть в том что я сначала поворачиваю на угол yAngle вокруг оси {0 1 0}  а потом вокруг на угол xAngle вокруг оси { 1 0 0} 

Решение:
Как выход надо найти ОДИН поворот(   угол=NEW_ANGLE а ось  {X, Y, Z} )  заменяющий эти два и произвести всего одну операцию 

Код
Matrix.rotateM(mMVPMatrix, 0, NEW_ANGLE, X, Y, Z);

Добавлено (17.02.2014, 13:25)
---------------------------------------------
Для матрицы поворота я нашел вот такую вот формулу  из википедии
,
и,беру только x и y, потому как они мне и нужны.

И меня мучает вопрос не будет ли умножение этих матриц опять поворотом на эйлеровы координаты а не то что мне нужно ?

 
AdminДата: Среда, 19.02.2014, 22:24 | Сообщение # 4
Группа: Администраторы
Сообщений: 375
Статус: Offline
Если говорить о матрице результирующего преобразования, то после умножения получим:


Как-то не очень похоже на матрицу поворота...
 
AdminДата: Среда, 19.02.2014, 22:28 | Сообщение # 5
Группа: Администраторы
Сообщений: 375
Статус: Offline
Суть проблемы я не совсем понял, но по рисункам мне показалось, что вы хотели получить поворот относительно осей, проходящих через центр куба, а получили относительно ребер куба проходящих через одну из его вершин. Правильно?
 
Форум » Помогите решить задачу » Стереометрия » Сложение 2х поворотов в один
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024