예제 #1
0
파일: ft_set_plan.c 프로젝트: gmpetrov/RT
static void		ft_set_plan_origin(t_data *data, char **line, int fd)
{
	get_next_line(fd, line);
	if (ft_check_if_nbr(*line) == -1)
		ft_error("[ERROR SCENE] - Plan's origin x is not a digit");
	data->x = ft_atod(line);
	get_next_line(fd, line);
	if (ft_check_if_nbr(*line) == -1)
		ft_error("[ERROR SCENE] - Plan's origin y is not a digit");
	data->y = ft_atod(line);
	get_next_line(fd, line);
	if (ft_check_if_nbr(*line) == -1)
		ft_error("[ERROR SCENE] - Plan's origin z is not a digit");
	data->z = ft_atod(line);
}
예제 #2
0
int			ambient(t_env *e, char *str)
{
	char	**tmp;

	tmp = ft_strsplit(str, BREAK);
	if (tmp[1] == NULL || check_arg(tmp[1], 1) == -1)
		return (free_ret(-1, tmp));
	e->ambient = ft_atod(tmp[1]);
	return (free_ret(0, tmp));
}
예제 #3
0
int			pov(t_env *e, char *str)
{
	char	**tmp;
	char	**tmp1;

	tmp1 = ft_strsplit(str, BREAK);
	if (tmp1[1] == NULL)
		return (free_ret(-1, tmp1));
	tmp = ft_strsplit(tmp1[1], BREAK2);
	free_ret(0, tmp1);
	if (check_arg(tmp[0], 0) == -1)
		return (free_ret(-1, tmp));
	if (check_arg(tmp[1], 0) == -1)
		return (free_ret(-1, tmp));
	if (check_arg(tmp[2], 0) == -1)
		return (free_ret(-1, tmp));
	e->cam.pos = init_vec(ft_atod(tmp[0]), ft_atod(tmp[1]),
			ft_atod(tmp[2]));
	return (free_ret(0, tmp));
}
예제 #4
0
파일: sets.c 프로젝트: NowakAydm/anowak
void	add_r_dir(t_dir *dir, char *full_path, char **tab)
{
	t_dir	*r_dir;

	r_dir = set_dir_name(full_path, dir->ls);
	r_dir->is_rr = 1;
	r_dir->modif_date = ft_atod(tab[6]);
	if ((dir->ls)->t)
		ft_btree_insert(&dir->rr_dir, r_dir, dir_date_comp);
	else
		ft_btree_insert(&dir->rr_dir, r_dir, dir_name_comp);
}
예제 #5
0
void	obj_read_mtllib_read_tr(t_obj *obj, char *line)
{
	char	**datas;

	if (!(datas = ft_strsplit(line, ' ')))
		ERROR("ft_strsplit failed");
	if (!datas[0] || !datas[1] || datas[2])
		ERROR("invalid mtl tr line");
	if (!parse_valid_number(datas[1]))
		ERROR("invalid mtl tr value");
	if (!obj->current_mtl)
		ERROR("no current mtl for tr");
	obj->current_mtl->mtl.tr = 1 - ft_atod(datas[1]);
	free_array(datas);
}
예제 #6
0
t_list		*ft_lststrdsplit_double(char const *str)
{
	t_list	*splits;
	double	value;

	if (isnumeric(*str))
	{
		value = ft_atod(str);
		splits = ft_lstnew(&value, sizeof(value));
	}
	else
		splits = NULL;
	while (*str)
	{
		if (!isnumeric(*str) && isnumeric(str[1]))
		{
			str++;
			value = ft_atod(str);
			ft_lstadd_back(&splits, ft_lstnew(&value, sizeof(value)));
		}
		str++;
	}
	return (splits);
}
예제 #7
0
파일: material_values.c 프로젝트: SN9NV/RT
static void		set_material_values(t_env *e, char *pt1, char *pt2)
{
	t_split_string	values;

	values = ft_nstrsplit(pt2, ' ');
	if (!ft_strcmp(pt1, "NAME"))
	{
		ft_strdel(&e->material[e->materials]->name);
		e->material[e->materials]->name = ft_strdup(values.strings[0]);
	}
	else if (!ft_strcmp(pt1, "DIFFUSE"))
		e->material[e->materials]->diff = get_colour(e, values);
	else if (!ft_strcmp(pt1, "SPECULAR"))
		e->material[e->materials]->spec = get_colour(e, values);
	else if (!ft_strcmp(pt1, "REFLECT"))
		e->material[e->materials]->reflect =
			to_range(ft_atod(values.strings[0]), 0.0, 1.0);
	else if (!ft_strcmp(pt1, "REFRACT"))
		e->material[e->materials]->refract =
			to_range(ft_atod(values.strings[0]), 0.0, 1.0);
	else if (!ft_strcmp(pt1, "IOR"))
		e->material[e->materials]->ior = ft_atod(values.strings[0]);
	ft_free_split(&values);
}