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