00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020
00021
00022
00024
00025
00027
00028 #ifndef BOUNDINGCIRCLE_H
00029 #define BOUNDINGCIRCLE_H
00030
00031 #include <cmath>
00032
00034
00038 class CBoundingCircle
00039 {
00040 public:
00042 CBoundingCircle()
00043 : m_Radius(0.0f),
00044 m_XPos(0.0f),
00045 m_YPos(0.0f),
00046 m_XPosAdd(0.0f),
00047 m_YPosAdd(0.0f)
00048 {}
00049 ~CBoundingCircle() {}
00050
00052 void SetRadius(float Radius)
00053 {
00054 m_Radius = Radius;
00055 }
00056
00058 float GetRadius() const { return m_Radius; }
00059
00061 void SetPosition(float X, float Y)
00062 {
00063 m_XPos = X;
00064 m_YPos = Y;
00065 }
00066
00068 float GetRealXPosition() const { return m_XPos+m_XPosAdd; }
00069 float GetXPosition() const { return m_XPos; }
00070
00072 float GetRealYPosition() { return m_YPos+m_YPosAdd; }
00073 float GetYPosition() { return m_YPos; }
00074
00076 void SetPositionAdd(float XAdd, float YAdd)
00077 {
00078 m_XPosAdd = XAdd;
00079 m_YPosAdd = YAdd;
00080 }
00081
00083 float GetXPositionAdd() const { return m_XPosAdd; }
00084
00086 float GetYPositionAdd() const { return m_YPosAdd; }
00087
00088
00090 bool Overlap(CBoundingCircle* Counterpart) const
00091 {
00092 float Distance = std::sqrt((Counterpart->GetRealXPosition()-(m_XPos+m_XPosAdd))*(Counterpart->GetRealXPosition()-(m_XPos+m_XPosAdd)) +
00093 (Counterpart->GetRealYPosition()-(m_YPos+m_YPosAdd))*(Counterpart->GetRealYPosition()-(m_YPos+m_YPosAdd)));
00094
00095 return (Distance < m_Radius + Counterpart->GetRadius());
00096 }
00097
00098
00099 void Draw()
00100 {}
00101 private:
00102 float m_Radius;
00103
00104 float m_XPos;
00105 float m_YPos;
00106
00107 float m_XPosAdd;
00108 float m_YPosAdd;
00109 };
00110
00111 #endif
00112