QAngle: Difference between revisions
Kestrelguy (talk | contribs) m (updated language bar.) |
No edit summary |
||
Line 2: | Line 2: | ||
{{toc-right}} | {{toc-right}} | ||
'''QAngle''' | '''QAngle''' это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной [[Coordinates|Z axis]]. Каждый QAngle содержит три значения поворота [[vec_t]]: | ||
* '''X''' | * '''X''' движение +вниз/-вверх | ||
* '''Y''' | * '''Y''' движение +влево/-вправо | ||
* '''Z''' | * '''Z''' поворот +вправо/-влево | ||
<code>(-45,10,0)</code> | <code>(-45,10,0)</code> означает 45° вверх, 10° влево and 0° поворота. | ||
{{ | {{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов [[vector]] .}} | ||
{{ | {{Note|Z фиксируются +/-50 для игрока viewangles.}} | ||
== | == Объявление == | ||
QAngle angMyAngle = QAngle(-45,10,0); | QAngle angMyAngle = QAngle(-45,10,0); | ||
* | * Вы также можете назначить переменные-члены X, Y и Z отдельно. | ||
* | * Префикс <code>ang</code> (иногда <code>a</code>) определяет переменную как угол. | ||
== | == Направление == | ||
Как ни странно, ни одна из осей вращения источника не совпадает с их [[Coordinates|position axes]] сверстниками. | |||
Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как | |||
rX rY rZ. | |||
Помните, что эффективное направление угла определяется его системой отсчета. Как правило, он будет либо привязан к миру, либо к сущности. | |||
== | == Преобразование из векторов == | ||
Поскольку нет никаких конкретных [[Data Descriptions#DEFINE_FIELD|datadesc keyfield]] для углов, один, выбранный в Hammer, прибудет как [[vector]]. Его координаты будут представлять градусы поворота, а не координаты, поэтому перед использованием его необходимо зафиксировать: | |||
<source lang=cpp> | <source lang=cpp> | ||
Line 39: | Line 40: | ||
AngleVectors(angMyAngle, &vecFromHammer);</source> | AngleVectors(angMyAngle, &vecFromHammer);</source> | ||
== | == Также посмотрите == | ||
* [[Wikipedia:Yaw, pitch, and roll]] | * [[Wikipedia:Yaw, pitch, and roll]] |
Revision as of 09:28, 5 September 2022
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);