示例#1
0
int		damier(t_vector3 eye, t_vector3 cam, t_best best)
{
  double	x;
  double	z;

  translate(&eye, best.obj.p, 1);
  rot_inv(&eye, best.obj.r);
  rot_inv(&cam, best.obj.r);
  scale(&cam, best.obj.s);
  best.inter = get_vector(cam, eye, best.k);
  translate(&(best.inter), best.obj.p, -1);
  if (best.inter.x < 0)
    best.inter.x -= 40;
  if (best.inter.z < 0)
    best.inter.z -= 40;
  x = (int)(abs(best.inter.x) % 80);
  z = (int)(abs(best.inter.z) % 80);
  if ((z <= 40 && x <= 40) || (z > 40 && x > 40))
    return (0xFFFFFF00);
  else
    return (0x00000000);
  return (best.color);
}
示例#2
0
int		texture(t_vector3 eye, t_vector3 cam, t_best best)
{
  unsigned int	color;
  int		c;
  double	v;
  double	u;
  double	pos;

  translate(&eye, best.obj.p, 1);
  rot_inv(&eye, best.obj.r);
  rot_inv(&cam, best.obj.r);
  scale(&(cam), best.obj.s);
  best.normal = unitaire(get_normal(cam, eye, best));
  u = (int)(best.obj.tex.w * (0.5 + atan2(best.normal.z, best.normal.x)
			      / (2 * M_PI)));
  v = (int)(best.obj.tex.h * (0.5 - asin(best.normal.y) / M_PI));
  pos = 4 * u + 4 * v * best.obj.tex.w;
  c = (int)pos;
  color = 0;
  color += best.obj.tex.texture.data[c++] << 8;
  color += best.obj.tex.texture.data[c++] << 16;
  color += best.obj.tex.texture.data[c++] << 24;
  return (color);
}
TranslationRotation3D TranslationRotation3D::inverseTransform() const {

  Eigen::Map<const Eigen::Vector3d> tra(T_);
  Eigen::Map<const Eigen::Matrix<double, 3, 3, Eigen::RowMajor> > rot(R_mat_);

  double rot_inv_ptr[9];
  Eigen::Map<Eigen::Matrix<double, 3, 3, Eigen::RowMajor> > rot_inv(
      rot_inv_ptr);

  rot_inv = rot.transpose();
  double tra_inv_ptr[3];
  Eigen::Map<Eigen::Vector3d> tra_inv(tra_inv_ptr);
  tra_inv = -rot_inv * tra;

  TranslationRotation3D pose_inv;
  pose_inv.setT(tra_inv_ptr);
  pose_inv.setR_mat(rot_inv_ptr);
  pose_inv.setValid(valid_);

  return (pose_inv);
}
示例#4
0
Edge_Record Edge_Record::lnext() const {
    return rot_inv().onext().rot();
}