Пытаюсь восстановить код функции:
QAngles = vecDir.ToEulerAngles ( &vecUp );
https://developer.valvesoftware.com/wiki/QAngle
vecDir
и vecUp
векторы.
vecUp
может быть 0
QAngles = vecDir.ToEulerAngles ( );
Можете что подсказать?
В интернете нашел, но не знаю откуда взять w
или r
.
void Quaternion::ToEulerAngles(Vector3D & v) const
{
float sqw = w * w;
float sqx = x * x;
float sqy = y * y;
float sqz = z * z;
float unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
float test = x * y + z * w;
if (test > 0.499f * unit) // singularity at north pole
{
v.y = 2.0f * atan2f(x, w);
v.z = FLOAT_PI / 2.0f;
v.x = 0.0f;
return;
}
if (test < -0.499f * unit) // singularity at south pole
{
v.y = -2.0f * atan2f(x, w);
v.z = -FLOAT_PI / 2.0f;
v.x = 0;
return;
}
v.y = atan2f(2.0f * y * w - 2.0f * x * z, sqx - sqy - sqz + sqw);
v.z = asinf(2.0f * test / unit);
v.x = atan2f(2.0f * x * w - 2.0f * y * z, -sqx + sqy - sqz + sqw);
return;
}
Vector3
Quaternion::toEulerAngles() const
{
float sqw = r * r;
float sqx = x * x;
float sqy = y * y;
float sqz = z * z;
Vector3 euler(
atan2( 2.0f * (x * y + z * r), sqx - sqy - sqz + sqw),
asin( -2.0f * (x * z - y * r)),
atan2( 2.0f * (y * z + x * r), -sqx - sqy + sqz + sqw));
return euler;
}
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Создаю дескриптор текстового файла HANDLE file = CreateFile(
у меня так получилось
Можно ли в C++ объявить несколько переменных и сразу присвоить одинаковое значение? Пример:
Здравствуйте! У меня проблема с функцией для вывода объекта в SDL