Esempio n. 1
0
double		inter_shadow(t_env *e, t_vec3d *my_pos)
{
	t_obj	*subs;
	int		give;
	int		my_shadow;

	subs = e->obj;
	give = 0;
	my_shadow = 0;
	e->sl = a_moin_b(my_pos, &(e->pos));
	e->sz = sqrt(e->sl.x * e->sl.x + e->sl.y * e->sl.y + e->sl.z * e->sl.z);
	e->sl.x = e->sl.x / e->sz;
	e->sl.y = e->sl.y / e->sz;
	e->sl.z = e->sl.z / e->sz;
	while (subs)
	{
		if (subs->type == 1)
			give = shadow_sphere(subs, e);
		else if (subs->type == 3)
			give = shadow_cyl(subs, e);
		else if (subs->type == 2)
			give = shadow_cone(subs, e);
		if (give == 1)
			my_shadow = 1;
		subs = subs->next;
	}
	return (my_shadow);
}
Esempio n. 2
0
static double	each_shadow(t_list *tmp, t_coordonne *inter, t_coordonne *l)
{
  double	d;

  d = 0.0000;
  if (tmp->obj->type == PLAN)
    d = shadow_plan(inter, l, tmp);
  else if (tmp->obj->type == CYLINDRE)
    d = shadow_cylindre(inter, l, tmp);
  else if (tmp->obj->type == SPHERE)
    d = shadow_sphere(inter, l, tmp);
  else if (tmp->obj->type == CONE)
    d = shadow_cone(inter, l, tmp);
  else if (tmp->obj->type == PARABO)
    d = shadow_parabo(inter, l, tmp);
  else if (tmp->obj->type == HYPERBO)
    d = shadow_hyperbo(inter, l, tmp);
  return (d);
}