[Главная] [Новости] [Статьи] [Игры] [Проекты] | [Автор] | |||
Теоретические основы 3D-программирования: теоретические и практические основы программирования 3D-игр. | ||||
О кватернионах Что такое кватернион? |
||||
Кватернион - это четверка чисел (х, y, z, w) при помощи которой задается ориентация модели в 3-х мерном пространстве. x, y и z - задают ось вращения, w - угол вращения вокруг этой оси. |
||||
Единичный кватернион - вычисляется следующим образом: q.x
:= sin(theta/2) * axis.x; , где axis - нормированная ось вращения; theta - угол вращения вокруг этой оси (в радианах). Для справки - 90 градусов - это pi/2 радиан (или более оптимизированно в DirectX записывается как DX_PI*0,5). |
||||
Если использовать углы Эйлера (рысканье, тангаж, крен - yaw, pitch, roll), то кватернион можно вычислить следующим образом: qroll
:= D3DXQuaternion((sin(ay/2), 0, 0), cos (ay/2)); ,
где ay, ax и az - углы вращений вокруг основных координатных осей - ox,
oy, oz (в радианах). |
||||
Для чего ввели использование кватернионов? Кватернионы занимают меньший объем по сравнению с матрицами - матрица 3х3 - 9 чисел; кватернион - 4. К тому же в D3D используются матрицы 4х4 - т.е. 16 чисел! Для перехода от матрицы к кватерниону и обратно существуют специальные функции - D3DXMatrixRotationQuaternion, D3DXQuaternionRotationMatrix. Композиция - перемножение кватернионов дает результирующую ориентацию. Сама операция переменожения также более эффективна по сравнению с перемножением матриц. Кроме того, кватернионы используются для интерполяции промежуточных кадров анимированных моделей. | ||||
[Назад] | ||||
[Главная] [Новости] [Статьи] [Игры] | ||||
(c) Мега Информатик 2006-2007 |