circle2D.h

Go to the documentation of this file.
00001 
00015 #ifndef DLR_GEOMETRY_CIRCLE2D_H
00016 #define DLR_GEOMETRY_CIRCLE2D_H
00017 
00018 #include <iostream>
00019 #include <dlrNumeric/vector2D.h>
00020 
00021 namespace dlr {
00022 
00023   namespace geometry {
00024     
00028     class Circle2D {
00029     public:
00030       
00034       inline
00035       Circle2D();
00036 
00037       
00049       inline
00050       Circle2D(const dlr::numeric::Vector2D& origin,
00051                double radius);
00052 
00053     
00059       inline
00060       Circle2D(const Circle2D& source);
00061 
00062 
00066       ~Circle2D() {}
00067 
00068 
00076       inline Circle2D&
00077       operator=(const Circle2D& source);
00078 
00079 
00086       dlr::numeric::Vector2D const&
00087       getOrigin() const {return m_origin;}
00088       
00089 
00095       double
00096       getRadius() const {return m_radius;}
00097       
00098 
00099     private:
00100       // Private member functions.
00101 
00102       // Private data members.
00103       dlr::numeric::Vector2D m_origin;
00104       double m_radius;
00105 
00106     }; // class Circle2D
00107 
00108 
00109 
00110     /* ======= Non-member functions. ======= */
00111 
00112     std::ostream&
00113     operator<<(std::ostream& stream, const Circle2D& circle);
00114     
00115   } // namespace geometry
00116     
00117 } // namespace dlr
00118 
00119 
00120 /* ======= Inline and template function definitions. ======= */
00121 
00122 namespace dlr {
00123 
00124   namespace geometry {
00125 
00126     // The default constructor initializes to the unit circle.
00127     Circle2D::
00128     Circle2D()
00129       : m_origin(0.0, 0.0),
00130         m_radius(1.0)
00131     {
00132       // Empty.
00133     }
00134 
00135     
00136     // This constructor initializes the circle using explicitly
00137     // specified values.
00138     Circle2D::
00139     Circle2D(const dlr::numeric::Vector2D& origin,
00140              double radius)
00141       : m_origin(origin),
00142         m_radius(radius)
00143     {
00144       if(radius < 0.0) {
00145         m_radius = -m_radius;
00146       }
00147     }
00148 
00149     
00150     // The copy constructor deep copies its argument.
00151     Circle2D::
00152     Circle2D(const Circle2D& source)
00153       : m_origin(source.m_origin),
00154         m_radius(source.m_radius)
00155     {
00156       // Empty.
00157     }
00158 
00159 
00160     // The assignment operator deep copies its argument.
00161     Circle2D&
00162     Circle2D::
00163     operator=(const Circle2D& source)
00164     {
00165       if(&source != this) {
00166         m_origin = source.m_origin;
00167         m_radius = source.m_radius;
00168       }
00169       return *this;
00170     }
00171 
00172   } // namespace geometry
00173   
00174 } // namespace dlr
00175 
00176 
00177 #endif /* #ifndef DLR_GEOMETRY_CIRCLE2D_H */

Generated on Wed Nov 25 11:45:25 2009 for dlrGeometry Utility Library by  doxygen 1.5.8