diff --git a/RayTracer/camera/Hit.cpp b/RayTracer/camera/Hit.cpp
index 1b51a6904b5b0913259817c8ed842a5a90ee5872..815fb7d5abf0d99ce4e6c978e17afaa2029b11a1 100644
--- a/RayTracer/camera/Hit.cpp
+++ b/RayTracer/camera/Hit.cpp
@@ -11,4 +11,9 @@ Hit::Hit(const util::Vec3& hit, const util::Vec3& n, float t,
 float Hit::scalar() const {
 	return t;
 }
+std::ostream& operator<<(std::ostream& os, const cam::Hit& rhs) {
+	os << "(" << rhs.point() << " " << rhs.normal() << " " << rhs.scalar()
+	   << ")";
+	return os;
+}
 }  // namespace cam
\ No newline at end of file
diff --git a/RayTracer/camera/Hit.h b/RayTracer/camera/Hit.h
index 6e0775e3965ed820f5b700729186f06276e8643e..2d346b28e3958010e0439cc8571d09a44db36fe2 100644
--- a/RayTracer/camera/Hit.h
+++ b/RayTracer/camera/Hit.h
@@ -11,6 +11,8 @@ class Hit : public util::SurfacePoint {
 	    const std::shared_ptr<material::Material>& material);
 
 	float scalar() const;
+	// Operator
+	friend std::ostream& operator<<(std::ostream& os, const cam::Hit& rhs);
 
    private:
 	float t;