Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}