Программирование графики с использованием Direct3D

         

D3DRMQUATERNION


Кватернионы описывают вращение. В главе2 для описания вращения мы применяли вектор и значение вращения. Вектор определял ось вращения, а значение — угол поворота. Кватернионы инкапсулируют вектор и значение в одной структуре:

typedef struct _D3DRMQUATERNION { D3DVALUE s; D3DVECTOR v; } D3DRMQUATERNION; typedef D3DRMQUATERNION *LPD3DRMQUATERNION;

Для инициализации кватернионов применяется функция D3DRMQuaternionFromRotation(). Функция получает вектор и значение вращения и создает кватернион.

Кватернионы удобны для вычисления промежуточных значений вращения. Например, функция D3DRMQuaternionSlerp() принимает в качестве аргументов два кватерниона и число. Функция вычисляет промежуточный кватернион между двумя векторами. Передаваемое в качестве параметра число определяет, в каком месте между двумя указанными кватернионами будет расположен новый. Например, если указать значение 0.5, новый кватернион будет создан точно между двумя исходными.



Содержание раздела