Ru/QAngle: Difference between revisions
(Russian page) |
mNo edit summary |
||
Line 25: | Line 25: | ||
* Префикс <code>ang</code> (или просто <code>a</code>) определяет переменную как угол. | * Префикс <code>ang</code> (или просто <code>a</code>) определяет переменную как угол. | ||
== | == Направление в пространстве == | ||
Чтобы понять, как работает <code>QAngle([X], [Y], [Z])</code>, представьте вид от первого лица: | Чтобы понять, как работает <code>QAngle([X], [Y], [Z])</code>, представьте вид от первого лица: | ||
Line 58: | Line 58: | ||
== Преобразование из Вектора == | == Преобразование из Вектора == | ||
Так как для углов не определён специальный {{L|Data Descriptions#DEFINE FIELD|ключ-параметр описания данных}}, созданные в Hammer данные будут считываться как {{L|vector|вектор}}. Его ординаты будут представлять градусы поворота, а не координаты, поэтому их необходимо конвертировать перед использованием: | |||
<source lang=cpp> | <source lang=cpp> |
Latest revision as of 14:17, 27 May 2025
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);