#pragma once #include #include #include #include "glm/gtc/quaternion.hpp" class CAngle; class CAngles; namespace AngleUtils { template float normalizeTo360(Real angle) { angle = fmod(angle, 360.0f); if (angle < 0.0f) { angle += 360.0f; } return angle; } template float normalizeTo180(Real angle) { angle = fmod(angle + 180.0f, 360.0f); if (angle < 0.0f) { angle += 360.0f; } return angle - 180.0f; } template Real Deg2Rad(Real deg) { return (deg * std::numbers::pi) / 180.0f; } template Real Rad2Deg(Real rad) { return (rad * 180.0f) / std::numbers::pi; } glm::quat AnglesToQuat(const CAngles& angles); CAngles QuatToAngles(const glm::quat& quat); std::string ToStrDegrees(const CAngles& angles); CAngles FromStrDegrees(const std::string& str); }