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); }
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); }
Edge_Record Edge_Record::lnext() const { return rot_inv().onext().rot(); }