website/miniRT/src/utils/vector.c
2025-06-03 12:07:17 +02:00

51 lines
1.6 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* vector.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: bszilas <bszilas@student.42vienna.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/12 17:42:35 by vvobis #+# #+# */
/* Updated: 2024/11/29 12:34:24 by vvobis ### ########.fr */
/* */
/* ************************************************************************** */
#include "../../minirt.h"
double dot_product(t_vector a, t_vector b)
{
return (a.x * b.x + a.y * b.y + a.z * b.z);
}
t_vector get_normal(t_vector from, t_vector to)
{
t_vector n;
n = vector_subtract(from, to);
normalize_vector(&n);
return (n);
}
void normalize_vector(t_vector *vec)
{
float len;
len = vector_length(*vec);
if (len)
*vec = scale_vector(*vec, 1 / len);
}
t_vector vector_subtract(t_vector vec1, t_vector vec2)
{
return ((t_vector){vec1.x - vec2.x, vec1.y - vec2.y, vec1.z - vec2.z});
}
void vector_print(t_vector vector, int fd)
{
ft_fprintf(fd, "%f", vector.x);
ft_putchar_fd(',', fd);
ft_fprintf(fd, "%f", vector.y);
ft_putchar_fd(',', fd);
ft_fprintf(fd, "%f", vector.z);
}