static void get_object_from_file(char *path, t_object **o, t_object *parent) { t_face *f; t_vertice *v; t_vertice_n *vn; double pt[3][3]; double n[3]; f = NULL; v = NULL; vn = NULL; get_coord(path, &v, &vn, &f); my_rev_list(&v); my_rev_n(&vn); my_rev_f(&f); while (f) { if (copy_tab(pt[0], get_itm(v, vn, 1, f->pos[0])) && copy_tab(pt[1], get_itm(v, vn, 1, f->pos[1])) && copy_tab(pt[2], get_itm(v, vn, 1, f->pos[2])) && copy_tab(n, get_itm(v, vn, 0, f->n))) add_triangle(o, pt, n, parent); f = f->next; } }
double get_specular_coef(t_lco *lpt, double *cam_pos) { double lvec[3]; double cvec[3]; double rvec[3]; double scal[2]; copy_tab(lpt->lvec, lvec, 3); cvec[0] = cam_pos[0] - lpt->obj_coor[0]; cvec[1] = cam_pos[1] - lpt->obj_coor[1]; cvec[2] = cam_pos[2] - lpt->obj_coor[2]; unitaire(lvec); unitaire(lpt->nvec); scal[0] = scale(lvec, lpt->nvec); rvec[0] = lvec[0] - 2.0 * scal[0] * lpt->nvec[0]; rvec[1] = lvec[1] - 2.0 * scal[0] * lpt->nvec[1]; rvec[2] = lvec[2] - 2.0 * scal[0] * lpt->nvec[2]; scal[1] = scale(rvec, cvec); if (scal[1] < 0) scal[1] += 360; if (scal[1] < 90) return (ABS(pow(cos_vector(rvec, cvec), 15))); return (0); }