Различия для поворота с правосторонней и левосторонней системами координат с использованием векторов, матриц и кватернионов - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть несколько математических классов (Vector3, Vector4, Matrix3, Quaternion), которые предназначены для следующей системы координат:

X=(+)FWD,(-)BKW / Y=(+)LFT,(-)RGT / Z=(+)UP,(-)DN

Если я прав, это должно быть "right-handed / z-up".

Я пытаюсь сделать поворот для некоторых векторов в направлении вектора вперед (и вектора вверх). Шаги, чтобы создать matrix3 из этих двух векторов. Создание кватерниона из матрицы, а затем «преобразовать» мои векторы с кватернионом.

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

X=(-)LFT,(+)RGT / Y=(+)UP,(-)DN / Z=(+)FWD,(-)BKW

Если я прав, это должно быть "левша / у-вверх".

При исследовании я обнаружил, что возможно это как-то связано с рассчитанным перекрестным произведением (которое рассчитывается для правой системы). Это используется для создания матрицы3 из двух входных векторов (вперед / вверх).

Было бы замечательно, если бы кто-то, кто мог бы объяснить мне, в какой момент вычисления испорчены и что я нужно сделать, чтобы предотвратить это. Какие части имеют решающее значение для модифицированной системы координат? Является ли это просто вычислением перекрестного произведения или есть еще факторы, которые необходимо учитывать.

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

С уважением Pix

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