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); }
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); }