Exemplo n.º 1
0
int					get_next_line(int const fd, char **line)
{
	static char		*end = NULL;
	char			*buf;
	int				ret;

	if (fd < 0 && BUFF_SIZE < 1 && BUFF_SIZE > 2000000000)
		return (-1);
	if (ft_check_end(&end, line) == 1)
			return (1);
	if (!(buf = ft_strnew(BUFF_SIZE + 1)))
		return (-1);
	while ((ret = read(fd, buf, BUFF_SIZE)) > 0)
	{
		if (ft_check_line(&end, &buf, line) == 1)
		{
			ft_memdel((void **)&buf);
			return (1);
		}
	}
	ft_memdel((void **)&buf);
	*line = ft_strdup(end);
	ft_memdel((void **)&end);
	return (ret);
}
Exemplo n.º 2
0
static float	ft_dist_co(t_co co, t_ray *ray, int i, float **v_o)
{
	float		a[6];
	float		c_s[2];

	a[4] = i;
	c_s[0] = pow(cos(co.alph), 2);
	c_s[1] = pow(sin(co.alph), 2);
	v_o[0] = ft_vect_base(ray->v, co.mat);
	v_o[2] = ft_vec_min(ray->o, co.c);
	v_o[1] = ft_vect_base(v_o[2], co.mat);
	a[0] = c_s[0] * (v_o[0][1] * v_o[0][1] + v_o[0][2] * v_o[0][2])
		- v_o[0][0] * v_o[0][0] * c_s[1];
	a[1] = 2 * c_s[0] * (v_o[0][1] * v_o[1][1] + v_o[0][2] * v_o[1][2])
		- 2 * c_s[1] * v_o[0][0] * v_o[1][0];
	a[2] = c_s[0] * (v_o[1][1] * v_o[1][1] + v_o[1][2] * v_o[1][2])
		- c_s[1] * v_o[1][0] * v_o[1][0];
	a[3] = a[1] * a[1] - 4 * a[0] * a[2];
	if (a[3] < 0)
		return (D_MAX);
	a[5] = ft_check_end(co, ray, a, v_o);
	if (ray->opt_f == 1 && (sqrtf(a[3]) < ray->delta
		|| ray->d_d_end == 1) && a[5] < D_MAX)
		ray->d_d[4 * MAX_OBJ + i] = 1;
	else if (a[5] < D_MAX)
		ray->d_d[4 * MAX_OBJ + i] = 0;
	return (a[5]);
}
Exemplo n.º 3
0
static int			ft_check_line(char **end, char **buf, char **line)
{
	char			*tmp;

	tmp = ft_strjoin(*end, *buf);
	free(*end);
	*end = tmp;
	return (ft_check_end(end, line));
}
Exemplo n.º 4
0
int				get_next_line(int const fd, char **line)
{
	static char	*end = NULL;
	char		*str;
	char		*buf;
	size_t		ret;
	char		*tmp;

	ret = 1;
	str = ft_strnew(BUFF_SIZE);
	while (ret > 0)
	{
		buf = ft_strnew(BUFF_SIZE);
		ret = read(fd, buf, BUFF_SIZE);
		buf[ret] = '\0';
		tmp = end;
		if (!ft_check_end(&str, &buf, tmp))
			ft_memdel((void**)&end);
		if (ft_check_line(str, &end, line) == 1)
			return (1);
	}
	*line = str;
	return (0);
}