36 lines
1.4 KiB
C
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++;
|
|
}
|
|
}
|