Исправление части рыскания одного кватерниона с помощью части рыскания другого

У меня следующая проблема: кватернион (q1) от устройства захвата движения должен быть с поправкой на угол рыскания (и только рыскание!) из другого кватерниона ориентации (q2), полученного вторым отслеживаемым объектом, так что тангаж и крен q1 такие же, как и раньше, но q1 имеет рыскание q2.

Рабочее решение - преобразование четвертичных в матрицы, затем я делаю вычисления, чтобы извлечь угол поворота, а затем корректирую курс. Но это приводит к "переворачиванию" когда прямо в направлении определенной оси (например, после 0 ° - 359 °). Также пробовал другие преобразования, которые не удобны.

Есть ли возможность производить вычисления непосредственно с кватернионами без преобразования в матрицы или углы Эйлера (т.е. чтобы я мог установить исправленный кватернион как кватернион для отслеживаемого объекта)?

Как сказано, исправление должно включать только вращение вокруг оси вверх (рыскание). У меня не так много возможностей программирования в отношении математических классов (VSL Script от Virtools, к сожалению, довольно ограничен в этом направлении). У кого-нибудь есть совет?

7
задан Raboon 30 May 2011 в 13:57
поделиться