Векторы, вершины и кватернионы

В Direct3D вершины описывают положение и ориентацию. Каждая вершина в примитиве описывается вектором, который сообщает ее положение, цвет, координаты текстуры, и вектором нормали, который позволяет узнать ее ориентацию.

Кватернионы добавляют четвертый элемент к значениям [x, y, z], которые определяют трехкомпонентный вектор. Кватернионы представляют собой альтернативу матричным методам, обычно используемым для 3D-вращения. Кватернион представляет ось в 3D-пространстве и поворот вокруг этой оси. Например, кватернион может представлять ось (1,1,2) и поворот на 1 радиан. Кватернионы содержат полезную информацию, однако их истинная ценность заключается в двух операциях, которые можно выполнять над ними: композиции и интерполяции.

Выполнение композиции над кватернионами аналогично их объединению. Записывается композиция двух кватернионов так, как показано на следующем рисунке.

illustration of quaternion notation

Композиция двух кватернионов, примененных к геометрии, означает "повернуть геометрию вокруг оси ₁, а затем повернуть вокруг оси₁ поворотом₁". В этом случае Q представляет поворот вокруг одной оси, которая является результатом применения qfx, а затем q₁ к геометрии.

С помощью интерполяции кватернионов приложение может рассчитать плавный и рациональный путь от одной оси и ориентации к другой. Таким образом, интерполяция между q₁ и q₂ — это простой способ анимировать движение от одной ориентации к другой.

При совместном использовании композиция и интерполяция дают возможность без труда манипулировать геометрией так, что манипуляции будут казаться сложными. Например, предположим, что у вас есть геометрия, которую вы хотите повернуть для придания ей определенной ориентации. Вам известно, что нужно повернуть ее на r₂ градусов вокруг оси₂, а затем на r₁ градусов вокруг оси₁, однако окончательный кватернион вам не известен. Используя композицию, вы можете объединить два поворота применительно к геометрии и получить один кватернион, который будет представлять собой результат. Затем можно выполнить интерполяцию из исходного кватерниона в составной для получения плавного перехода от одного к другому.

Системы координат и геометрия