=encoding UTF-8 =head1 НАИМЕНОВАНИЕ BH_Quat - Кватернион =head1 СИНТАКСИС #include cc prog.c -o prog -lbh =head1 ОПИСАНИЕ Данный модуль предоставляет набор функций для работы с кватернионами. Кватернионы используются для представления вращений в трёхмерном пространстве и обладают преимуществами перед другими методами, такими как матрицы вращения или углы Эйлера, в части устойчивости к накоплению ошибок при многократных операциях вращения. =head1 API ВЫЗОВЫ =head2 BH_Quat4fAdd #define BH_Quat4fAdd(a, b, out) \ BH_Vec4fAdd(a, b, out) Вычисляет сумму двух кватернионов I и I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fSub #define BH_Quat4fSub(a, b, out) \ BH_Vec4fSub(a, b, out) Вычисляет разность двух кватернионов I и I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fScale #define BH_Quat4fScale(a, b, out) \ BH_Vec4fScale(a, b, out) Вычисляет результат умножения кватерниона I на значение I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fNegate #define BH_Quat4fNegate(in, out) \ BH_Vec4fNegate(in, out) Вычисляет противоположный кватернион от кватерниона I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fDot #define BH_Quat4fDot(a, b) \ BH_Vec4fDot(a, b) Вычисляет скалярное произведение кватернионов I и I. =head2 BH_Quat4fLength #define BH_Quat4fLength(in) \ BH_Vec4fLength(in) float BH_Vec4fLength(const float in[4]); Вычисляет длину кватерниона I. =head2 BH_Quat4fNormal #define BH_Quat4fNormal(in, out) \ BH_Vec4fNormal(in, out) Вычисляет нормализованную форму кватерниона I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fLerp #define BH_Quat4fLerp(a, b, t, out) \ BH_Vec4fLerp(a, b, t, out) Выполняет линейную интерполяцию между двумя кватернионами I и I с параметром I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fIdentity void BH_Quat4fIdentity(float out[4]); Записывает единичный кватернион в I. =head2 BH_Quat4fConjugate void BH_Quat4fConjugate(const float in[4], float out[4]); Вычисляет сопряжённый кватернион из I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fInverse void BH_Quat4fInverse(const float in[4], float out[4]); Вычисляет обратный кватернион из I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fMul void BH_Quat4fMul(const float a[4], const float b[4], float out[4]); Вычисляет результат перемножения двух кватернионов I и I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fSlerp void BH_Quat4fSlerp(const float a[4], const float b[4], float t, float out[4]); Выполняет сферическую линейную интерполяцию между двумя кватернионами I и I с параметром I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fFromEuler void BH_Quat4fFromEuler(float roll, float pitch, float yaw, float out[4]); Вычисляет кватернион из углов связанной системы координат I, I и I. Порядок применения вращения ZYX (yaw, pitch, roll). Параметр I описывает результирующий кватернион. =head2 BH_Quat4fFromAxis void BH_Quat4fFromAxis(const float axis[3], float angle, float out[4]); Вычисляет кватернион из вращения относительно оси I с заданным углом I. Параметр I описывает результирующий кватернион. =head2 BH_Quat4fToEuler void BH_Quat4fToEuler(const float in[4], float *roll, float *pitch, float *yaw); Вычисляет углы связанной системы координат I, I и I из кватерниона I. Порядок применения вращения ZYX (yaw, pitch, roll). =head2 BH_Quat4fToAxis void BH_Quat4fToAxis(const float in[4], float axis[3], float *angle); Вычисляет ось вращения I и угол I из кватерниона I. =head2 BH_Quat4fToMat4f void BH_Quat4fToMat4f(const float in[4], float out[16]); Вычисляет матрицу вращения из кватерниона I. Параметр I описывает результирующую матрицу. =head1 СМ. ТАКЖЕ L