toytracer/hittable.h
2020-06-04 00:15:32 +02:00

24 lines
472 B
C++

#ifndef HITTABLE_H
#define HITTABLE_H
#include "ray.h"
struct hit_record {
Point3 p;
Vec3 normal;
double t;
bool front_face;
inline void set_face_normal(const Ray& r, const Vec3& outward_normal) {
front_face = dot(r.direction(), outward_normal) < 0;
normal = front_face ? outward_normal : -outward_normal;
}
};
class Hittable {
public:
virtual bool hit(const Ray &r, double tmin, double tmax, hit_record &rec) const = 0;
};
#endif // HITTABLE_H