35 lines
1.3 KiB
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);
|
|
}
|