00001 #ifndef OSDL_CIRCLE_BOUNDING_BOX_H_
00002 #define OSDL_CIRCLE_BOUNDING_BOX_H_
00003
00004
00005 #include "OSDLBoundingBox2D.h"
00006
00007 #include "Ceylan.h"
00008
00009
00010 #include <string>
00011 #include <list>
00012
00013
00014
00015 namespace OSDL
00016 {
00017
00018
00019 namespace Engine
00020 {
00021
00022
00023
00028 class OSDL_DLL CircleBoundingBox : public BoundingBox2D
00029 {
00030
00031
00032 public:
00033
00034
00043 CircleBoundingBox( Ceylan::Locatable2D & father,
00044 const Ceylan::Maths::Linear::Bipoint & center,
00045 Ceylan::Maths::Real radius ) throw() ;
00046
00047
00052 virtual ~CircleBoundingBox() throw() ;
00053
00054
00059 virtual Ceylan::Maths::Real getRadius() const throw() ;
00060
00061
00068 virtual void setRadius( Ceylan::Maths::Real newRadius )
00069 throw() ;
00070
00071
00083 virtual const std::string toString(
00084 Ceylan::VerbosityLevels level = Ceylan::high )
00085 const throw() ;
00086
00087
00113 virtual IntersectionResult doesIntersectWith(
00114 BoundingBox & other ) throw( BoundingBoxException ) ;
00115
00116
00117
00118 protected:
00119
00120
00131 virtual IntersectionResult compareWith(
00132 CircleBoundingBox & other ) throw() ;
00133
00134
00150 static CircleBoundingBox & CheckIsCircle( BoundingBox & box )
00151 throw (BoundingBoxException) ;
00152
00153
00155 Ceylan::Maths::Real _radius ;
00156
00157
00158
00159 private:
00160
00161
00162
00171 explicit CircleBoundingBox( const CircleBoundingBox & source )
00172 throw() ;
00173
00174
00183 CircleBoundingBox & operator= (
00184 const CircleBoundingBox & source ) throw() ;
00185
00186
00187 } ;
00188
00189 }
00190
00191 }
00192
00193
00194 #endif // OSDL_CIRCLE_BOUNDING_BOX_H_