Пример #1
0
void				ft_ray_cast_threads(t_env *env)
{
	int				ij[2];

	ft_set_param(env->dt);
	if (env->dt->th_nb <= 0)
		env->dt->th_nb = 1;
	if (env->dt->th_nb == 1)
		ft_ray_cast(env);
	else
	{
		ft_threads(env);
		if (env->dt->opt_f == 0 && env->dt->opt_aa)
			ft_antialiase(env);
		else
		{
			ij[0] = -1;
			while (++ij[0] < env->dt->y_max)
			{
				ij[1] = -1;
				while (++ij[1] < env->dt->x_max)
					free(env->dt->img_i[ij[0]][ij[1]]);
				free(env->dt->img_i[ij[0]]);
			}
			free(env->dt->img_i);
		}
	}
}
Пример #2
0
int			ft_cast0_y(int *i, double *p1, double *k, t_env *env)
{
	if (i[1] > i[3])
		p1[2] = i[1] * BLOCK_SIZE;
	else
		p1[2] = i[3] * BLOCK_SIZE;
	p1[3] = (p1[2] - k[1]) / k[0];
	if (ft_ray_cast(i, &p1[2], env))
		return (1);
	else
		ft_floor_ceiling(i, p1, env);
	return (0);
}