Ru/Angle: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (Removed categories from subpage)
m (-Using L template for links)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{lang|QAngle}}
{{langsp}}
 
{{toc-right}}
{{toc-right}}


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


* '''X''' движение +вниз/-вверх
* '''X''' движение +вниз/-вверх
Line 10: Line 11:
<code>(-45,10,0)</code> означает 45° вверх, 10° влево and 0° поворота.
<code>(-45,10,0)</code> означает 45° вверх, 10° влево and 0° поворота.


{{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов [[vector]] .}}
{{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов {{L|vector}} .}}


{{Note|Z фиксируются +/-50 для игрока viewangles.}}
{{Note|Z фиксируются +/-50 для игрока viewangles.}}
Line 23: Line 24:
== Направление ==
== Направление ==


Как ни странно, ни одна из осей вращения источника не совпадает с их [[Coordinates|position axes]] сверстниками.
Как ни странно, ни одна из осей вращения источника не совпадает с их {{L|Coordinates|position axes}} сверстниками.


Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как  
Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как  
Line 32: Line 33:
== Преобразование из векторов ==
== Преобразование из векторов ==


Поскольку нет никаких конкретных [[Data Descriptions#DEFINE_FIELD|datadesc keyfield]] для углов, один, выбранный в Hammer, прибудет как [[vector]]. Его координаты будут представлять градусы поворота, а не координаты, поэтому перед использованием его необходимо зафиксировать:
Поскольку нет никаких конкретных [[Data Descriptions#DEFINE_FIELD|datadesc keyfield]] для углов, один, выбранный в Hammer, прибудет как {{L|vector}}. Его координаты будут представлять градусы поворота, а не координаты, поэтому перед использованием его необходимо зафиксировать:


<source lang=cpp>
<source lang=cpp>
Line 43: Line 44:


* [[Wikipedia:Yaw, pitch, and roll]]
* [[Wikipedia:Yaw, pitch, and roll]]
* [[getpos]]
* {{L|getpos}}
* [[Vector]]
* {{L|Vector}}
* [[AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>]]
* {{L|AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>}}

Latest revision as of 08:48, 11 July 2024

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

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

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

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

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

Объявление

QAngle angMyAngle = QAngle(-45,10,0);
  • Вы также можете назначить переменные-члены X, Y и Z отдельно.
  • Префикс ang (иногда a) определяет переменную как угол.

Направление

Как ни странно, ни одна из осей вращения источника не совпадает с их position axes(en) сверстниками.

Еще более "запутанно", что Хаммер перечисляет оси вращения как Y, Z, X! Это совершенно неправильно, но, к счастью, это всего лишь метки: значения хранятся в одной строке (например, "-45 10 0") и интерпретируются игрой как rX rY rZ.

Помните, что эффективное направление угла определяется его системой отсчета. Как правило, он будет либо привязан к миру, либо к сущности.

Преобразование из векторов

Поскольку нет никаких конкретных datadesc keyfield для углов, один, выбранный в Hammer, прибудет как vector(en). Его координаты будут представлять градусы поворота, а не координаты, поэтому перед использованием его необходимо зафиксировать:

QAngle angMyAngle = QAngle(vecFromHammer.x, vecFromHammer.y, vecFromHammer.z);

// Conversion back to a vector, if required
AngleVectors(angMyAngle, &vecFromHammer);

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