/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* vec.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: gbrochar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/06 16:45:13 by gbrochar #+# #+# */ /* Updated: 2019/02/22 12:48:34 by gbrochar ### ########.fr */ /* */ /* ************************************************************************** */ #include "rtv1.h" t_vec vec(double x, double y, double z) { t_vec vec; vec.x = x; vec.y = y; vec.z = z; return (vec); } t_vec cross_product(t_vec u, t_vec v) { t_vec w; w.x = u.y * v.z - u.z * v.y; w.y = u.z * v.x - u.x * v.z; w.z = u.x * v.y - u.y * v.x; return (w); } double dot_product(t_vec u, t_vec v) { return (u.x * v.x + u.y * v.y + u.z * v.z); } double vec_length(t_vec vec) { return (sqrt(dot_product(vec, vec))); } t_vec normalize(t_vec *vec) { double n; n = vec_length(*vec); vec->x /= n; vec->y /= n; vec->z /= n; return (*vec); }