C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 24 - Векторы, вершины и кватернионы / Справка по DirectX / Microsoft DirectX

Шаг 24 - Векторы, вершины и кватернионы

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

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

Применив композицию на кватернион, Вы тем самым объедините:

24_1.gif (166 b)

Композиция состоит из двух кватернионов, т.е. вращает геометрию вокруг оси 2 вращения 2 и затем вращает вокруг оси 1 вращение 1. Значение Q вращает вокруг одной общей оси, которая является результатом осей q2 и q1, применяемые к геометрии.

Если Вы воспользуетесь интерполяцией кватерниона, то сможете вычислить гладки переходящий путь от одной ориентированной оси к другой. Поэтому интерполяция между q1 и q2 обеспечивает простой способ оживления от одной оси к другой.

Когда Вы используете композицию и интерполяцию вместе, то они Вам обеспечать простой способ управления геометрией, которая покажется на вид сложной. Например, представьте себе, что у Вас есть некий объект, в состав которого входят два объекта и Вам их нужно повернуть вокруг одной оси. При этом Вы знаете, что радиус r2 будет поварачиваться вокруг оси 2, а радиус r1 вокруг своей оси 1. Для этого Вы просто объединяете эти две оси вращения, чтобы получить одну едиснственную. И затем применить интерполяцию от оригинала к кватерниону, чтобы достигнуть плавного перехода от одной оси к другой.

Сервисная библиотека Direct3DX содержит функции, которые помогут Вам работать с кватернионами. Например, функция D3DXQuaternionRotationAxis добавляет значение к вектору вращения, который содержит ось вращения, и возвращает результат в кватернион находящийся в структуре D3DXQUATERNION.

Используя Direct3D, можно использовать следующие функции, чтобы упростить себе задачу по работе с кватернионами:

  • D3DXQuaternionBaryCentric
  • D3DXQuaternionConjugate
  • D3DXQuaternionDot
  • D3DXQuaternionExp
  • D3DXQuaternionIdentity
  • D3DXQuaternionInverse
  • D3DXQuaternionIsIdentity
  • D3DXQuaternionLength
  • D3DXQuaternionLengthSq
  • D3DXQuaternionLn
  • D3DXQuaternionMultiply
  • D3DXQuaternionNormalize
  • D3DXQuaternionRotationAxis
  • D3DXQuaternionRotationMatrix
  • D3DXQuaternionRotationYawPitchRoll
  • D3DXQuaternionSlerp
  • D3DXQuaternionSquad
  • D3DXQuaternionToAxisAngle

Применяя Direct3D можно воспользоваться следующими функциями для упрощения работы с векторами состоящими из трех значений:

  • D3DXVec3Add
  • D3DXVec3BaryCentric
  • D3DXVec3CatmullRom
  • D3DXVec3Cross
  • D3DXVec3Dot
  • D3DXVec3Hermite
  • D3DXVec3Length
  • D3DXVec3LengthSq
  • D3DXVec3Lerp
  • D3DXVec3Maximize
  • D3DXVec3Minimize
  • D3DXVec3Normalize
  • D3DXVec3Project
  • D3DXVec3Scale
  • D3DXVec3Subtract
  • D3DXVec3Transform
  • D3DXVec3TransformCoord
  • D3DXVec3TransformNormal
  • D3DXVec3Unproject

Существует очень много дополнительных функций, которые упростят задачу используя векторы состоящие из двух, четыерх значений. Все они включены в раздел Математические Функции, которая входит в сервис библиотеки Direct3DX.


| |
Автор Хавов Евгений Валерьевич.
[AD]