forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Относительный поворот. (http://forum.boolean.name/showthread.php?t=19435)

DStalk 25.09.2014 14:00

Относительный поворот.
 
Поясните, кому не лень: известны углы поворота объекта по трем осям, как можно его "довернуть", относительно новых осей и получить в итоге глобальные углы поворота (или вектор)?
Догадываюсь что это относится к линейной алгебре, но, к моему стыду, то что я изучал было давно и неправда. Нагуглил про матрицы поворота и т.п., но как-то не очень понятно расписывают.

Samodelkin 25.09.2014 17:03

Ответ: Относительный поворот.
 
Когда ты поворачиваешь объект задавая три угла Yaw Pitch Roll это называется углы Эйлера.
Углы Эйлера не ассоциативны, то есть например если у нас есть углы Y P R то если их применить в таком порядке Y P R результат будет отличаться от результата если применить в таком порядке P Y R -- поэтому доворачивать и складывать подобные углы нельзя (ну или это очень сложно).
YawPitchRoll применяется на объект один раз.
Поэтому обычно используют кватернионы -- их можно складывать, комбинировать, интерполировать, и они могут представлять повороты больше чем на 360 градусов (например в случае быстро вращающегося колеса, когда за кадр оно делает больше одного оборота) и т. п.

DStalk 25.09.2014 17:28

Ответ: Относительный поворот.
 
Некоторые товарищи здесь реализуют собственные 3d-движки. Как просчитывается итоговый поворот, кватернионами? Например если задали сначала вращение RotateEntity(x,y,z), а дальше TurnEntity(x1,y1,z1).

impersonalis 25.09.2014 17:39

Ответ: Относительный поворот.
 
http://habrahabr.ru/post/183116/
http://habrahabr.ru/post/183908/

moka 25.09.2014 17:53

Ответ: Относительный поворот.
 
Матрицы вращения либо кватернионы да. Это математика.
У тебя есть кватернион вращения твоего объекта, далее при вызове Turn, ты создаешь кватернион вращения на каждую ось, и перемножаешь кватернион объекта на эти три кватерниона по осям, так он будет поворачиваться.

Тебе нужна мат. библиотека которая эту математику реализует, для большинства языков такие есть.

Samodelkin 25.09.2014 17:58

Ответ: Относительный поворот.
 
Например к составе DX SDK есть математическая библиотека, оптимизирована с SSE2.


Часовой пояс GMT +4, время: 22:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot