#pragma once

#include "math.h"
#include "vec3.h"
#include "ray.h"
#include "image.h"

class camera
{
public:
    camera(
        point3  lookfrom,
        point3  lookat,
        vec3    vup,
        double  vfov,   // vertical field of view in degrees
        double  aspect_ratio,
        double  aperture,
        double  focus_dist);

    ray get_ray(double s, double t) const; 

private:
    point3  origin_;
    point3  lower_left_corner_;
    vec3    horizontal_;
    vec3    vertical_;
    vec3    u_, v_, w_;
    double  lens_radius_;
};
