Ru/Angle: Difference between revisions
Thunder4ik (talk | contribs) m (→top: clean up) |
m (Removed categories from subpage) |
||
Line 46: | Line 46: | ||
* [[Vector]] | * [[Vector]] | ||
* [[AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>]] | * [[AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>]] | ||
Revision as of 04:23, 6 January 2024
QAngle это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной Z axis. Каждый QAngle содержит три значения поворота vec_t:
- X движение +вниз/-вверх
- Y движение +влево/-вправо
- Z поворот +вправо/-влево
(-45,10,0)
означает 45° вверх, 10° влево and 0° поворота.


Объявление
QAngle angMyAngle = QAngle(-45,10,0);
- Вы также можете назначить переменные-члены X, Y и Z отдельно.
- Префикс
ang
(иногдаa
) определяет переменную как угол.
Направление
Как ни странно, ни одна из осей вращения источника не совпадает с их position axes сверстниками.
Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как rX rY rZ.
Помните, что эффективное направление угла определяется его системой отсчета. Как правило, он будет либо привязан к миру, либо к сущности.
Преобразование из векторов
Поскольку нет никаких конкретных datadesc keyfield для углов, один, выбранный в Hammer, прибудет как vector. Его координаты будут представлять градусы поворота, а не координаты, поэтому перед использованием его необходимо зафиксировать:
QAngle angMyAngle = QAngle(vecFromHammer.x, vecFromHammer.y, vecFromHammer.z);
// Conversion back to a vector, if required
AngleVectors(angMyAngle, &vecFromHammer);