00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef OSDL_CIRCLE_BOUNDING_BOX_H_
00028 #define OSDL_CIRCLE_BOUNDING_BOX_H_
00029 
00030 
00031 #include "OSDLBoundingBox2D.h"   
00032 
00033 #include "Ceylan.h"              
00034 
00035 
00036 #include <string>
00037 #include <list>
00038 
00039 
00040 
00041 
00042 namespace OSDL
00043 {
00044 
00045 
00046 
00047     namespace Engine 
00048     {
00049     
00050     
00051     
00052             
00057         class OSDL_DLL CircleBoundingBox : public BoundingBox2D
00058         {
00059         
00060         
00061             public:
00062             
00063             
00072                 CircleBoundingBox( Ceylan::Locatable2D & father, 
00073                     const Ceylan::Maths::Linear::Bipoint & center, 
00074                     Ceylan::Maths::Real radius ) ;
00075                 
00076                     
00077                                 
00082                 virtual ~CircleBoundingBox() throw() ;
00083 
00084 
00085 
00090                 virtual Ceylan::Maths::Real getRadius() const ;
00091                 
00092                 
00093                 
00100                 virtual void setRadius( Ceylan::Maths::Real newRadius ) ;
00101         
00102                  
00103                  
00115                 virtual const std::string toString( 
00116                     Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00117                 
00118                 
00119 
00145                 virtual IntersectionResult doesIntersectWith( 
00146                     BoundingBox & other ) ;
00147                 
00148                 
00149                 
00150                 
00151             protected:
00152             
00153 
00154 
00165                 virtual IntersectionResult compareWith( 
00166                     CircleBoundingBox & other ) ;
00167 
00168                 
00169                 
00185                 static CircleBoundingBox & CheckIsCircle( BoundingBox & box ) ;         
00186                     
00187                                 
00189                 Ceylan::Maths::Real _radius ;
00190                 
00191                 
00192                 
00193                 
00194             private:        
00195         
00196                 
00197             
00206                 explicit CircleBoundingBox( const CircleBoundingBox & source ) ;
00207 
00208 
00209 
00218                 CircleBoundingBox & operator= ( 
00219                     const CircleBoundingBox & source ) ;
00220                 
00221                 
00222         } ;
00223         
00224 
00225     }
00226 
00227 }
00228 
00229 
00230 
00231 #endif // OSDL_CIRCLE_BOUNDING_BOX_H_
00232