/home/fwph/code/wurde/rde/core/Angle.H

Go to the documentation of this file.
00001 #ifndef Angle_H
00002 #define Angle_H
00003 
00024 #include <iostream>
00025 #include <cmath>
00026 
00027 
00029 
00036 
00037 
00045 class Angle {
00047   friend std::istream &operator>>(std::istream &in, Angle &angle) {
00048     in >> angle.m_value; angle.clip(); return in;}
00049 
00050 public:
00052   Angle() :m_value(0.0) {}
00054 
00055   Angle(const double value) :m_value(value) {clip();}
00057 
00058   Angle(const Angle &angle) :m_value(angle.m_value) {}
00060   ~Angle() {}
00061 
00063 
00064 
00065 
00066   Angle &operator=(const Angle &angle) {
00067     m_value = angle.m_value; return *this;}
00069 
00070   Angle &operator=(const double value) {
00071     m_value = value; clip(); return *this;}
00072 
00074 
00075   Angle &operator+=(const double value) {
00076     m_value += value; clip(); return *this;}
00078 
00079   Angle &operator-=(const double value) {
00080     m_value -= value; clip(); return *this;}
00082 
00083   Angle &operator*=(const double value) {
00084     m_value *= value; clip(); return *this;}
00086 
00087   Angle &operator/=(const double value) {
00088     m_value /= value; clip(); return *this;}
00090 
00091   
00093 
00094 
00095 
00096   operator double() const {return m_value;}
00098 
00099   double degrees() const {return (m_value / M_PI) * 180.0;}
00101 
00102 private:
00103   double m_value;
00104 
00105   void clip() {
00106     while (m_value < 0.0) m_value += 2.0 * M_PI;
00107     while (m_value >= (2.0 * M_PI)) m_value -= 2.0 * M_PI;}
00108 };
00109 
00110 
00111 #endif

Generated on Thu Feb 1 15:31:52 2007 for WURDE by  doxygen 1.5.1