// Copyright (C) 2012 Jérôme Leclercq // This file is part of the "Nazara Engine - Mathematics module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_EULERANGLES_HPP #define NAZARA_EULERANGLES_HPP #include #include #include template class NzEulerAngles { public: NzEulerAngles() = default; NzEulerAngles(T P, T Y, T R); NzEulerAngles(const T angles[3]); //NzEulerAngles(const NzMatrix3& mat); NzEulerAngles(const NzQuaternion& quat); template explicit NzEulerAngles(const NzEulerAngles& angles); NzEulerAngles(const NzEulerAngles& angles) = default; ~NzEulerAngles() = default; void MakeZero(); void Normalize(); void Set(T P, T Y, T R); void Set(const T angles[3]); void Set(const NzEulerAngles& angles); //void Set(const NzMatrix3& mat); void Set(const NzQuaternion& quat); template void Set(const NzEulerAngles& angles); //NzMatrix3 ToRotationMatrix() const; NzQuaternion ToQuaternion() const; NzString ToString() const; NzEulerAngles operator+(const NzEulerAngles& angles) const; NzEulerAngles operator-(const NzEulerAngles& angles) const; /*NzEulerAngles operator*(const NzEulerAngles& angles) const; NzEulerAngles operator/(const NzEulerAngles& angles) const;*/ NzEulerAngles operator+=(const NzEulerAngles& angles); NzEulerAngles operator-=(const NzEulerAngles& angles); /*NzEulerAngles operator*=(const NzEulerAngles& angles); NzEulerAngles operator/=(const NzEulerAngles& angles);*/ bool operator==(const NzEulerAngles& angles) const; bool operator!=(const NzEulerAngles& angles) const; static NzEulerAngles Zero(); T pitch, yaw, roll; }; template std::ostream& operator<<(std::ostream& out, const NzEulerAngles& angles); typedef NzEulerAngles NzEulerAnglesd; typedef NzEulerAngles NzEulerAnglesf; #include #endif // NAZARA_EULERANGLES_HPP