Ru/Angle: Difference between revisions
(Created page with "{{lang|QAngle}} {{toc-right}} '''QAngle''' это класс C++, который представляет трехмерный угол Эйлера, смещенный от...") |
m (-Using L template for links) |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{langsp}} | ||
{{toc-right}} | {{toc-right}} | ||
'''QAngle''' это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной | '''QAngle''' это класс C++, который представляет трехмерный угол Эйлера, смещенный от кардинальной {{L|Coordinates|Z axis}}. Каждый QAngle содержит три значения поворота {{L|vec_t}}: | ||
* '''X''' движение +вниз/-вверх | * '''X''' движение +вниз/-вверх | ||
Line 8: | Line 9: | ||
* '''Z''' поворот +вправо/-влево | * '''Z''' поворот +вправо/-влево | ||
<code>(-45,10,0)</code> означает | <code>(-45,10,0)</code> означает 45° вверх, 10° влево and 0° поворота. | ||
{{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов | {{Tip|Иногда называют rX, rY и rZ чтобы отделять их от углов {{L|vector}} .}} | ||
{{Note|Z фиксируются +/-50 для игрока viewangles.}} | {{Note|Z фиксируются +/-50 для игрока viewangles.}} | ||
Line 23: | Line 24: | ||
== Направление == | == Направление == | ||
Как ни странно, ни одна из осей вращения источника не совпадает с их | Как ни странно, ни одна из осей вращения источника не совпадает с их {{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, прибудет как | Поскольку нет никаких конкретных [[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]] | ||
* | * {{L|getpos}} | ||
* | * {{L|Vector}} | ||
* | * {{L|AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>}} | ||
Latest revision as of 08:48, 11 July 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);