2024-08-09 19:57:21 -05:00

26 lines
549 B
C

#pragma once
#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));
}