fdf/src/project_isometric.c
2024-12-13 17:18:20 +01:00

36 lines
1.4 KiB
C

/* ************************************************************************** */
/* */
/* ::: o_ :::::: ::: */
/* project_isometric.c :+: / :+::+: :+: */
/* +:+ > +:++:+ +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ */
/* +#+ +#+#+ +#++#+ +#+ \o/ */
/* Created: 2024/12/13 15:23:19 by whaffman #+#+# #+#+# #+# #+# | */
/* Updated: 2024/12/13 15:23:19 by whaffman ### ### ### ### / \ */
/* */
/* ************************************************************************** */
#include "fdf.h"
void project_isometric(t_fdf *fdf)
{
int i;
double x;
double y;
i = 0;
if (fdf->zoom == 0)
fdf->zoom = fmin(fdf->mlx->width / fdf->map->width,
fdf->mlx->height / fdf->map->height) / SQRT2;
while (i < fdf->map->width * fdf->map->height)
{
x = (fdf->map->rot[i].x - fdf->map->rot[i].y) / SQRT2;
y = (fdf->map->rot[i].x + fdf->map->rot[i].y
- 2 * fdf->map->rot[i].z) / SQRT6;
fdf->map->proj[i].x = x * fdf->zoom + fdf->offset_x;
fdf->map->proj[i].y = y * fdf->zoom + fdf->offset_y;
fdf->map->proj[i].color = fdf->map->rot[i].color;
i++;
}
}