Преобразование кадра в ориентированную точку (XYZ + рыскание / тангаж / крен) - PullRequest
0 голосов
/ 31 января 2019

У меня 3D ориентированная точка (XYZ + Yaw / Pitch / Roll).Допустим, эта точка основана на «пользовательском фрейме 1» (UF1) (фрейм определен относительно мирового фрейма (WF)).

У меня также есть еще один «пользовательский фрейм», давайте его назовем «кадр пользователя 2 "(UF2), который также определен со ссылкой на кадр мира.

Как бы я перенес свою трехмерную ориентированную точку (6 координат; 3 местоположения + 3 вращения) из одного кадра в другой?

Например;Поскольку все пользовательские кадры связаны с мировым кадром, как рассчитать (преобразовать) мою трехмерную ориентированную точку из UF1 в WF?Или наоборот или из любой комбинации?(UF1-> WF, WF-> UF2 и т. Д.)

Результирующая точка должна иметь 6 координат (3 местоположения + 3 поворота) относительно кадра назначения.

PS:Я в основном работаю в C #, поэтому, если это возможно, пример кода или псевдокод для достижения этой цели будет принят.

1 Ответ

0 голосов
/ 31 января 2019

Что вам нужно, так это матрица перехода из одной системы координат в другую.

Это матрица 4x4, полностью определяемая 3 параметрами перемещения и шестью углами поворота между двумя системами координат..

9 коэффициентов зависят от углов поворота (углы Эйлера или кватернионы в зависимости от того, что вы используете).Помните, что если вы используете углы Эйлера, важен порядок : вектор вращения (rx, ry, rz) не описывает тот же поворот, если вы сначала поворачиваетесь вокруг оси X, затем Y, затем Z илиесли вы сначала повернетесь вокруг Z, затем Y, а затем, например, X.

enter image description here

Я предлагаю вам прочитать это, это поможет вам вычислить матрицу: http://brainvoyager.com/bv/doc/UsersGuide/CoordsAndTransforms/SpatialTransformationMatrices.html

Обратите внимание, что все это использует однородную координату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...