2024-07-24 00:39:42 -05:00

27 lines
570 B
C

#pragma once
#include "spheres.h"
#include "tuples.h"
#include "matrices.h"
struct ray {
struct tuple origin;
struct tuple direction;
};
inline static struct ray ray(struct tuple origin, struct tuple direction)
{
return (struct ray){origin, direction};
}
inline static struct tuple ray_position(struct ray ray, float t)
{
return tuple_add(ray.origin, tuple_mul(ray.direction, t));
}
inline static struct ray ray_transform(struct ray r, struct mat4x4 const * const m)
{
return ray(mat4x4_mul_t(m, &r.origin),
mat4x4_mul_t(m, &r.direction));
}