У меня есть несколько математических классов (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