Углы связанной системы координат
QAngle 'это C++ класс в Source представляющий трёхмерные углы вращения в неподвижной системе координат в соотствестии с правилом правой руки от основной оси Z. Каждый QAngle содержит три значения векторного вращения:
Оси
X
X тангаж +вниз/-вверх (наклон)
Y
Y рысканье +влево/-вправо (поворот)
Z
Z крен +направо/-налево (отклонение)
(-45,10,0)
означает 45° вверх, 10° влево и 0° крена.


Объявление
QAngle angMyAngle = QAngle(-45,10,0);
- Можно задавать значения X, Y и Z отдельно.
- Префикс
ang
(или простоa
) определяет переменную как угол.
Направление в пространстве
Чтобы понять, как работает QAngle([X], [Y], [Z])
, представьте вид от первого лица:
- Взгляд вниз или вверх соответствует положительному или отрицательному значению [X] соотвественно
- Взгляд влево или вправо соответствует положительному или отрицательному значению [Y] соотвественно
- Наклон головы так, чтобы правое или левое ухо было ближе земле, соответствует положительному или отрицательному значению [Z] соотвественно
Чтобы соотнести это с векторами и координатами: значения [X], [Y] и [Z] соответствуют вращению по часовой стрелке (в градусах) вокруг осей y, z и x неподвижной системы координат[подтвердить] соотвественно.
Под "вращением по часовой стрелке" вокруг оси подразумевается, что наблюдатель находится в начале координат и смотрит в положительном направлении указанной оси.
Соглашения об именовании
В разных областях деятельности используются разные наименования для описания этих углов. Чтобы прояснить противоречивые термины, ниже приведены краткие пояснения. Похоже, что терминология для платформы Source заимствована из аэрокосмической техники.
Авиация
Если представить самолет, то при тангаже носовая часть движется вверх и вниз, при рыскание - влево и вправо, а при крене одно крыло поднимается, а другое опускается.
|
Математика
Строго говоря, QAngles можно было бы определить как внешние вращения Тейта-Брайана, в соответствии с правилом правой руки. Однако термины "углы Тейта-Брайана" и "углы Эйлера" иногда используются как взаимозаменяемые. Рассмотрим эти термины в более понятных составляющих:
![]() |
Преобразование из Вектора
Так как для углов не определён специальный ключ-параметр описания данных , созданные в Hammer данные будут считываться как вектор . Его ординаты будут представлять градусы поворота, а не координаты, поэтому их необходимо конвертировать перед использованием:
QAngle angMyAngle = QAngle(vecFromHammer.x, vecFromHammer.y, vecFromHammer.z);
// Conversion back to a vector, if required
AngleVectors(angMyAngle, &vecFromHammer);