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 13: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);