#ifndef MOVING_SPHERE_H #define MOVING_SPHERE_H #include #include "hittable.h" #include "vec3.h" class Moving_sphere : public Hittable { public: Moving_sphere() {} Moving_sphere(Point3 cen0, Point3 cen1, double t0, double t1, double r, std::shared_ptr m) : center0(cen0), center1(cen1), time0(t0), time1(t1), radius(r), mat_ptr(m) {} virtual bool hit(const Ray& r, double tmin, double tmax, hit_record& rec) const; virtual bool bounding_box(double t0, double t1, Aabb& output_box) const; Point3 center(double time) const; private: Point3 center0; Point3 center1; double time0; double time1; double radius; std::shared_ptr mat_ptr; }; #endif // MOVING_SPHERE_H