Angle

From Valve Developer Community
< Ru
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
English (en)Русский (ru)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);

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