--- /dev/null
+/*
+ * Circle.h
+ *
+ * Created on: Apr 29, 2012
+ * Author: holy
+ */
+
+#ifndef SHAPE_CIRCLE_H_
+#define SHAPE_CIRCLE_H_
+
+#include "Shape.h"
+
+namespace shape {
+
+class Circle
+: public Shape {
+
+ public:
+ Circle(void) { };
+ explicit Circle(Scalar r, Vector pos = Vector()) : center(pos), radius(r) { };
+ virtual ~Circle(void) { };
+
+ public:
+ const Vector &Center(void) const { return center; };
+ Scalar Radius(void) const { return radius; };
+
+ Scalar Left(void) const { return center.X() - radius; };
+ Scalar Top(void) const { return center.Y() - radius; };
+ Scalar Right(void) const { return center.X() + radius; };
+ Scalar Bottom(void) const { return center.Y() + radius; };
+
+ public:
+ virtual void Translate(const Vector &delta);
+ virtual void Rotate(Scalar delta);
+
+ public:
+ virtual bool CheckCollision(const Shape &, Ray &) const;
+ virtual bool CheckCollision(const AABB &, Ray &) const;
+ virtual bool CheckCollision(const Circle &, Ray &) const;
+
+ public:
+ virtual std::ostream &Write(std::ostream &) const;
+
+ private:
+ Vector center;
+ Scalar radius;
+
+};
+
+}
+
+#endif /* SHAPE_CIRCLE_H_ */