From: dooglus Date: Fri, 28 Sep 2007 02:07:33 +0000 (+0000) Subject: Operators == and != were returning that 90 degrees != (90+360) degrees, due to floati... X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=18bbe511c4b334ebca61b4a22662750d07521f37;p=synfig.git Operators == and != were returning that 90 degrees != (90+360) degrees, due to floating point rounding errors. Allow an epsilon of difference. git-svn-id: http://svn.voria.com/code@785 1f10aa63-cdf2-0310-b900-c93c546f37ac --- diff --git a/ETL/trunk/ETL/_angle.h b/ETL/trunk/ETL/_angle.h index 34bc9f5..20f8261 100644 --- a/ETL/trunk/ETL/_angle.h +++ b/ETL/trunk/ETL/_angle.h @@ -164,14 +164,14 @@ public: on the unit circle. */ bool operator==(const angle &rhs)const - { return dist(rhs).v==(value_type)0.0; } + { return std::abs(dist(rhs).v)epsilon; } //! Angle Difference Function /*! This function will return the @@ -232,6 +232,8 @@ 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