Объединение векторов оси вращения

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

  • В отличие от кватернионов или матриц вращения, я действительно могу видеть числа и визуализировать вращение в уме
  • Они занимают немного меньше памяти, чем кватернионы или матрицы.
  • Я могу представлять значения вне диапазона от -Pi до Pi (это важно, если я сохраняю угловую скорость)

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

8
задан Dwayne 30 November 2010 в 17:42
поделиться