Operators == and != were returning that 90 degrees != (90+360) degrees, due to floati...
authordooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Fri, 28 Sep 2007 02:07:33 +0000 (02:07 +0000)
committerdooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Fri, 28 Sep 2007 02:07:33 +0000 (02:07 +0000)
git-svn-id: http://svn.voria.com/code@785 1f10aa63-cdf2-0310-b900-c93c546f37ac

ETL/trunk/ETL/_angle.h

index 34bc9f5..20f8261 100644 (file)
@@ -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; }
 
        /*! Returns false 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 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<value_type>(std::floor(x/(PI*2))*PI*2); }
 
+       static const value_type epsilon = 1.0e-6;
+
 public:
        /*
        ** Conversion Classes