QAngle: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (updated language bar.)
No edit summary
Line 2: Line 2:
{{toc-right}}
{{toc-right}}


'''QAngle''' is a C++ class that represents a three-dimensional Euler angle, offset from the cardinal [[Coordinates|Z axis]]. Each QAngle contains three [[vec_t]] rotation values:  
'''QAngle''' это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной [[Coordinates|Z axis]]. Каждый QAngle содержит три значения поворота [[vec_t]]:


* '''X''' pitch +down/-up
* '''X''' движение +вниз/-вверх
* '''Y''' yaw +left/-right
* '''Y''' движение +влево/-вправо
* '''Z''' roll +right/-left
* '''Z''' поворот  +вправо/-влево


<code>(-45,10,0)</code> means 45&deg; up, 10&deg; left and 0&deg; roll.
<code>(-45,10,0)</code> означает 45&deg; вверх, 10&deg; влево and 0&deg; поворота.


{{tip|The axes are sometimes called rX, rY and rZ to distinguish them from [[vector]] axes.}}
{{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов [[vector]] .}}


{{note|Z is clamped to +/-50 for player viewangles.}}
{{Note|Z фиксируются +/-50 для игрока viewangles.}}


== Declaration ==
== Объявление ==


  QAngle angMyAngle = QAngle(-45,10,0);
  QAngle angMyAngle = QAngle(-45,10,0);


* You could also assign to the X, Y and Z member variables separately.
* Вы также можете назначить переменные-члены X, Y и Z отдельно.
* The prefix <code>ang</code> (or sometimes just <code>a</code>) identifies the variable as an angle.
* Префикс <code>ang</code> (иногда <code>a</code>) определяет переменную как угол.


== Orientation ==
== Направление ==


Confusingly, none of Source's rotation axes align with their [[Coordinates|position axes]] counterparts.
Как ни странно, ни одна из осей вращения источника не совпадает с их [[Coordinates|position axes]] сверстниками.


Even ''more'' confusingly, Hammer lists rotation axes as Y, Z, X! This is completely wrong, but luckily they are just labels: the values are stored in a single string (e.g. "-45 10 0") and interpreted by the game as rX rY rZ.
Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как
rX rY rZ.


Remember that the effective direction of an angle is determined by its frame of reference. Typically, it will either be aligned to the world or to an entity.
Помните, что эффективное направление угла определяется его системой отсчета. Как правило, он будет либо привязан к миру, либо к сущности.


== Converting from Vector ==
== Преобразование из векторов ==


As there is no specific [[Data Descriptions#DEFINE_FIELD|datadesc keyfield]] for angles, one chosen in Hammer will arrive as a [[vector]]. Its ordinates will represent degrees of rotation and not coordinates so it must be fixed up before use:
Поскольку нет никаких конкретных [[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>


== See Also ==
== Также посмотрите ==


* [[Wikipedia:Yaw, pitch, and roll]]
* [[Wikipedia:Yaw, pitch, and roll]]

Revision as of 09:28, 5 September 2022

English (en)Deutsch (de)Русский (ru)中文 (zh)Translate (Translate)

QAngle это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной Z axis. Каждый QAngle содержит три значения поворота vec_t:

  • X движение +вниз/-вверх
  • Y движение +влево/-вправо
  • Z поворот +вправо/-влево

(-45,10,0) означает 45° вверх, 10° влево and 0° поворота.

Tip.pngTip:Иногда называют rX, rY и rZ чтобы отделять их от углов vector .
Note.pngNote:Z фиксируются +/-50 для игрока viewangles.

Объявление

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

Также посмотрите