Example #1
0
int		analyse_cone(t_cone **cone, t_lstline **list, int *line)
{
	int		nb_obj;
	char	**str;
	int		i;

	if (*cone != NULL || !ft_strisdigit(&(*list)->line[9]))
		return (1);
	nb_obj = ft_atoi(&(*list)->line[9]);
	i = -1;
	*cone = (t_cone *)ft_memalloc(sizeof(t_cone) * (nb_obj + 1));
	while (++i < nb_obj)
	{
		next_line(list, line);
		if (ft_strncmp((*list)->line, "\t\t\t", 3) != 0)
			return (1);
		str = ft_strsplit(&(*list)->line[3], '/');
		if (!analyse_cone_help((*list)->line, str, &(*cone)[i]))
			return (1);
		(*cone)[i].ray_size = ft_absd(ft_atoid(str[1]));
		(*cone)[i].height = ft_absd(ft_atoid(str[2]));
		ft_memdel2((void ***)&str);
	}
	(*cone)[nb_obj].end = -1;
	next_line(list, line);
	return (0);
}
Example #2
0
static void		ft_fill_cone(t_rtv1 *rtv1, char **tab, char **tri, int i)
{
	char	*hexa;

	rtv1->obj.cone[i].posx = ft_atoid(tri[0]);
	rtv1->obj.cone[i].posy = ft_atoid(tri[1]);
	rtv1->obj.cone[i].posz = ft_atoid(tri[2]);
	rtv1->obj.cone[i].base_size = ft_atoid(tab[1]);
	rtv1->obj.cone[i].height = ft_atoid(tab[2]);
	if ((hexa = ft_strstr(tab[3], "0x")))
		rtv1->obj.cone[i].color = ft_abs(ft_atoi_base(&hexa[2], 16));
	else
		rtv1->obj.cone[i].color = ft_abs(ft_atoi_base(tab[3], 16));

}
Example #3
0
int		analyse_spot(t_spot **spot, t_lstline **list, int *line)
{
	int		nb_obj;
	char	**str;
	int		i;

	if (*spot != NULL || !ft_strisdigit(&(*list)->line[9]))
		return (1);
	nb_obj = ft_atoi(&(*list)->line[9]);
	i = -1;
	*spot = (t_spot *)ft_memalloc(sizeof(t_spot) * (nb_obj + 1));
	while (++i < nb_obj)
	{
		next_line(list, line);
		if (ft_strncmp((*list)->line, "\t\t\t", 3) != 0)
			return (1);
		str = ft_strsplit(&(*list)->line[3], '/');
		if (!analyse_slash((*list)->line, 2) || ft_memlen((void **)str) != 2 ||
		!analyse_3d_value_d(str[0], &(*spot)[i].x, &(*spot)[i].y,
		&(*spot)[i].z) || !ft_strisdouble(str[1]))
			return (1);
		(*spot)[i].lux = ft_absd(ft_atoid(str[1]));
		ft_memdel2((void ***)&str);
	}
	(*spot)[nb_obj].end = -1;
	next_line(list, line);
	return (0);
}
Example #4
0
static void		ft_fill_rot_cone(t_rtv1 *rtv1, char **tri, int i)
{
	rtv1->obj.cone[i].rot.x = (float)ft_atoid(tri[0]);
	rtv1->obj.cone[i].rot.y = (float)ft_atoid(tri[1]);
	rtv1->obj.cone[i].rot.z = (float)ft_atoid(tri[2]);
}