diff --git a/RayTracer/shape/CirclePlane.cpp b/RayTracer/shape/CirclePlane.cpp
index 18e20b733aabc1cb90841d9c963ce2367ac4d00d..d8e03f07458be719f81a336df5aac0d02a4e787b 100644
--- a/RayTracer/shape/CirclePlane.cpp
+++ b/RayTracer/shape/CirclePlane.cpp
@@ -28,4 +28,8 @@ std::shared_ptr<cam::Hit> CirclePlane::intersect(const cam::Ray& r) const {
 		}
 	}
 }
+util::AxisAlignedBoundingBox CirclePlane::bounds() const {
+	return util::AxisAlignedBoundingBox(util::Vec3(-radius, 0, -radius),
+	                                    util::Vec3(radius, 0, radius));
+}
 }  // namespace shapes
diff --git a/RayTracer/shape/CirclePlane.h b/RayTracer/shape/CirclePlane.h
index 51ddb33acc5ef78e453f91f7841b168edcec74e7..f97649a5ed3cb06e27a9bdddf81b4213dcdcc6b8 100644
--- a/RayTracer/shape/CirclePlane.h
+++ b/RayTracer/shape/CirclePlane.h
@@ -8,6 +8,7 @@ class CirclePlane : public Shape {
 	CirclePlane(float radius,
 	            const std::shared_ptr<material::Material>& material);
 	std::shared_ptr<cam::Hit> intersect(const cam::Ray& r) const override;
+	util::AxisAlignedBoundingBox bounds() const override;
 
    private:
 	std::shared_ptr<material::Material> material;