square ft_square_test(int size, map mp) { square sq; square sq2; int mem; int calc; sq = ft_check_square(size, mp); sq2 = ft_check_square(size + 1, mp); mem = size; calc = 0; while (!(sq.boolcheck) || sq2.boolcheck) { if (mem != 1) mem = mem / 2; if (!sq.boolcheck) sq.size = sq.size - mem; else sq.size = sq.size + mem; sq = ft_check_square(sq.size, mp); sq2 = ft_check_square(sq.size + 1, mp); } return (sq); }
t_coord ft_check_tab(char **tab, t_bsq_data data) { t_coord coord; coord.y = 0; coord.x_max = 0; coord.y_max = 0; coord.ref = 1; while (coord.y < data.lines) { coord.x = 0; while (tab[coord.y][coord.x] != '\0') { while (ft_check_square(tab, data, coord) == coord.ref) { coord.x_max = coord.x; coord.y_max = coord.y; coord.ref++; } coord.x++; } coord.y++; } if (coord.ref > 1) coord.ref = coord.ref - 1; return (coord); }
void ft_raycasting(t_pos *wolf) { while (wolf->val2->x < wolf->val->w) { wolf->val->camerax = 2 * wolf->val2->x / wolf->val->w - 1; wolf->val->rayposx = wolf->val->posx; wolf->val->rayposy = wolf->val->posy; wolf->val->raydirx = wolf->val->dirx + wolf->val->planex * wolf->val->camerax; wolf->val->raydiry = wolf->val->diry + wolf->val->planey * wolf->val->camerax; wolf->val->mapx = (int)wolf->val->rayposx; wolf->val->mapy = (int)wolf->val->rayposy; wolf->val->deltadistx = sqrt(1 + (wolf->val->raydiry * wolf->val->raydiry) / (wolf->val->raydirx * wolf->val->raydirx)); wolf->val->deltadisty = sqrt(1 + (wolf->val->raydirx * wolf->val->raydirx) / (wolf->val->raydiry * wolf->val->raydiry)); wolf->val2->hit = 0; ft_calcul_step(wolf); ft_check_square(wolf); ft_project(wolf); wolf->val2->h = SCREEN_Y; wolf->val2->lineheight = (int)(wolf->val2->h / wolf->val2->perpdist); ft_calcul(wolf); ft_put_pix(wolf); wolf->val2->x++; } }
square ft_square_test(int size, map mp) { square sq; square sq2; sq = ft_check_square(size, mp); sq2 = ft_check_square(size + 1, mp); while (!(sq.boolcheck) || sq2.boolcheck) { if (!sq.boolcheck) { sq.size = (sq.size / 2); } else { sq.size = sq.size + 1; } sq = ft_check_square(sq.size, mp); sq2 = ft_check_square(sq.size + 1, mp); } return (sq); }