Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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);
}