Angle

From Valve Developer Community
< Ru
Jump to: navigation, search
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);

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