X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_angle.h;h=0b3461fde80cfca8bb740b9cd4cedf37f4d8136f;hb=6be8a03921e2844da09a114dd0b3f7cf1405b816;hp=20f82617d5a980efe678896a3c7eef22098f1178;hpb=18bbe511c4b334ebca61b4a22662750d07521f37;p=synfig.git diff --git a/ETL/trunk/ETL/_angle.h b/ETL/trunk/ETL/_angle.h index 20f8261..0b3461f 100644 --- a/ETL/trunk/ETL/_angle.h +++ b/ETL/trunk/ETL/_angle.h @@ -60,7 +60,7 @@ public: protected: typedef value_type unit; - unit v; //! Stored in radians + unit v; //! Stored in radians; positive values indicate counter-clockwise. public: @@ -70,41 +70,41 @@ public: const angle & operator+=(const angle &rhs) - { v+=rhs.v; return *this; } + { v+=rhs.v; return *this; } const angle & operator-=(const angle &rhs) - { v-=rhs.v; return *this; } + { v-=rhs.v; return *this; } const angle & operator*=(const unit &rhs) - { v*=rhs; return *this; } + { v*=rhs; return *this; } const angle & operator/=(const unit &rhs) - { v/=rhs; return *this; } + { v/=rhs; return *this; } //! Angle Addition Operator angle operator+(const angle &rhs)const - { return angle(*this)+=rhs; } + { return angle(*this)+=rhs; } //! Angle Subtraction Operator /*! \sa angle dist(const angle &) */ angle operator-(const angle &rhs)const - { return angle(*this)-=rhs; } + { return angle(*this)-=rhs; } //! Angle Scalar Multiplication Operator /*! This operator will multiply the given angle by the given scalar value. */ angle operator*(const unit &rhs)const - { return angle(*this)*=rhs; } + { return angle(*this)*=rhs; } angle operator/(const unit &rhs)const - { return angle(*this)/=rhs; } + { return angle(*this)/=rhs; } //! Angle Negation angle @@ -128,50 +128,50 @@ public: } /*! Returns true if the shortest - angle between the left-hand and - right-hand side is clockwise */ + angle from the left-hand to the + right-hand side is counter-clockwise */ bool operator<(const angle &rhs)const - { return dist(rhs).v<(value_type)0.0; } + { return dist(rhs).v<(value_type)0.0; } /*! Returns true if the shortest - angle between the left-hand and - right-hand side is counter-clockwise */ + angle from the left-hand to the + right-hand side is clockwise */ bool operator>(const angle &rhs)const - { return dist(rhs).v>(value_type)0.0; } + { return dist(rhs).v>(value_type)0.0; } /*! Returns true if the shortest - angle between the left-hand and - right-hand side is clockwise, + angle from the left-hand to the + right-hand side is counter-clockwise, or if the angles are refer to the same point on the unit circle. */ bool operator<=(const angle &rhs)const - { return dist(rhs).v<=(value_type)0.0; } + { return dist(rhs).v<=(value_type)0.0; } /*! Returns true if the shortest - angle between the left-hand and - right-hand side is counter-clockwise, + angle from the left-hand to the + right-hand side is clockwise, or if the angles are refer to the same point on the unit circle. */ bool operator>=(const angle &rhs)const - { return dist(rhs).v>=(value_type)0.0; } + { return dist(rhs).v>=(value_type)0.0; } /*! Returns true if the angles are refer to the same point on the unit circle. */ bool operator==(const angle &rhs)const - { return std::abs(dist(rhs).v)epsilon; } + { return std::abs(dist(rhs).v)>epsilon; } //! Angle Difference Function /*! This function will return the @@ -182,11 +182,8 @@ public: dist(const angle &rhs)const { angle ret; - ret.v=v-rhs.v; - ret.v-=rot_floor(ret.v+PI); - return ret; } @@ -201,6 +198,7 @@ public: return ret; } + //! Zero Rotation (0 degrees) static angle zero() { @@ -209,23 +207,25 @@ public: return ret; } + //! One Complete Rotation (360 degrees) static angle one() { angle ret; - ret.v=PI; + ret.v=PI*2; return ret; } + //! One Half Rotation (180 degrees) static angle half() { angle ret; - ret.v=PI*0.5; + ret.v=PI; return ret; } - bool operator!()const { return v==0; } + bool operator!()const { return std::abs(mod().v) < epsilon; } private: @@ -366,10 +366,10 @@ 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); } + operator value_type()const ETL_DEPRECATED_FUNCTION; #endif + value_type get()const { return (value_type)std::cos(v); } }; // END of class angle::cos inline angle::cos::operator angle::value_type()const { return get(); } @@ -432,7 +432,6 @@ struct distance_func : public std::binary_function