rtv1/src/ray.c

35 lines
1.3 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ray.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gbrochar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/02/08 13:32:52 by gbrochar #+# #+# */
/* Updated: 2019/02/22 17:29:07 by gbrochar ### ########.fr */
/* */
/* ************************************************************************** */
#include "rtv1.h"
t_vec get_r_vec(t_vec i_ray, t_vec normal)
{
t_vec r_ray;
r_ray = vec_sub(i_ray, vec_mul(normal, 2 * dot_product(i_ray, normal)));
return (r_ray);
}
t_ray set_ray(t_env *e, int x, int y)
{
t_ray r;
r.o = e->camera.o;
r.d = vec_add(e->camera.ul, vec_sub(
vec_mul(e->camera.rv, ((double)x * e->camera.width / WINX)),
vec_mul(e->camera.uv, ((double)y * e->camera.height / WINY))));
r.d = vec_sub(r.d, r.o);
normalize(&r.d);
return (r);
}