X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_angle.h;h=fcfa9a30012d9e400e84a77657f73ec33f4766cf;hb=6f1201c1198d1ebb2b2980e134db84ac1cf4cd3d;hp=bd3231a4e0a1dbd18add8365ca11683f7e9e869b;hpb=716873ad2fd2cb3c07e311ee7b0e2f023500c868;p=synfig.git diff --git a/ETL/trunk/ETL/_angle.h b/ETL/trunk/ETL/_angle.h index bd3231a..fcfa9a3 100644 --- a/ETL/trunk/ETL/_angle.h +++ b/ETL/trunk/ETL/_angle.h @@ -40,6 +40,8 @@ # define HALF_PI (PI/2) #endif +#define ANGLE_EPSILON (1.0e-6) + /* === T Y P E D E F S ===================================================== */ /* === C L A S S E S & S T R U C T S ======================================= */ @@ -164,14 +166,25 @@ public: on the unit circle. */ bool operator==(const angle &rhs)const - { return std::abs(dist(rhs).v)epsilon; } + { return std::abs(dist(rhs).v)>ANGLE_EPSILON; } + + //! Absolute Angle Function + /*! This function will return the + absolute value of the angle. */ + angle + abs()const + { + angle ret; + ret.v=std::abs(v); + return ret; + } //! Angle Difference Function /*! This function will return the @@ -225,15 +238,13 @@ public: return ret; } - bool operator!()const { return std::abs(mod().v) < epsilon; } + bool operator!()const { return std::abs(mod().v) < ANGLE_EPSILON; } private: static value_type rot_floor(value_type x) { return static_cast(std::floor(x/(PI*2))*PI*2); } - static const value_type epsilon = 1.0e-6; - public: /* ** Conversion Classes @@ -286,12 +297,12 @@ public: rad(const angle &a):angle(a) { } rad mod()const { return angle::mod(); } rad dist(const angle &rhs)const { return angle::dist(rhs); } + value_type get()const { return v; } #ifndef ETL_NO_DEPRECATED - operator value_type()const ETL_DEPRECATED_FUNCTION; + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif - value_type get()const { return v; } }; // END of class angle::radians -inline angle::rad::operator angle::value_type()const { return get(); } +// inline angle::rad::operator angle::value_type()const { return get(); } // ======================================================================== /*! \class angle::deg _angle.h ETL/angle @@ -308,10 +319,10 @@ public: deg dist(const angle &rhs)const { return angle::dist(rhs); } value_type get()const { return v*360/(PI*2); } #ifndef ETL_NO_DEPRECATED - operator value_type()const ETL_DEPRECATED_FUNCTION; + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif }; // END of class angle::degrees -inline angle::deg::operator angle::value_type()const { return get(); } +// inline angle::deg::operator angle::value_type()const { return get(); } // ======================================================================== /*! \class angle::rot _angle.h ETL/angle @@ -328,10 +339,10 @@ public: rot dist(const angle &rhs)const { return angle::dist(rhs); } value_type get()const { return v/(PI*2); } #ifndef ETL_NO_DEPRECATED - operator value_type()const ETL_DEPRECATED_FUNCTION; + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif }; // END of class angle::rotations -inline angle::rot::operator angle::value_type()const { return get(); } +// inline angle::rot::operator angle::value_type()const { return get(); } // ======================================================================== /*! \class angle::sin _angle.h ETL/angle @@ -348,10 +359,10 @@ public: sin dist(const angle &rhs)const { return angle::dist(rhs); } value_type get()const { return static_cast(std::sin(v)); } #ifndef ETL_NO_DEPRECATED - operator value_type()const ETL_DEPRECATED_FUNCTION; + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif }; // END of class angle::sin -inline angle::sin::operator angle::value_type()const { return get(); } +// inline angle::sin::operator angle::value_type()const { return get(); } // ======================================================================== /*! \class angle::cos _angle.h ETL/angle @@ -366,12 +377,12 @@ public: cos(const angle &a):angle(a) { } cos mod()const { return angle::mod(); } cos dist(const angle &rhs)const { return angle::dist(rhs); } - operator value_type()const ETL_DEPRECATED_FUNCTION; -#ifndef ETL_NO_DEPRECATED value_type get()const { return (value_type)std::cos(v); } +#ifndef ETL_NO_DEPRECATED + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif }; // END of class angle::cos -inline angle::cos::operator angle::value_type()const { return get(); } +// inline angle::cos::operator angle::value_type()const { return get(); } // ======================================================================== /*! \class angle::tan _angle.h ETL/angle @@ -387,12 +398,12 @@ public: tan(const angle &a):angle(a) { } tan mod()const { return angle::mod(); } tan dist(const angle &rhs)const { return angle::dist(rhs); } + value_type get()const { return (value_type)std::tan(v); } #ifndef ETL_NO_DEPRECATED - operator value_type()const ETL_DEPRECATED_FUNCTION; + // operator value_type()const ETL_DEPRECATED_FUNCTION; #endif - value_type get()const { return (value_type)std::tan(v); } }; // END of class angle::tan -inline angle::tan::operator angle::value_type()const { return get(); } +// inline angle::tan::operator angle::value_type()const { return get(); } _ETL_END_NAMESPACE