void keyboard(unsigned char key, int mousePositionX, int mousePositionY) { //std::cout << key; //std::cout.flush(); switch(key) { case 'w': //por->move((Vector3d() << 0,01,0).finished()); por->move(Vector3d(0,0.2,0)); break; case 'e': //por->move(Vector3d(1/3.,2/3.,2/3.)); //por->move(Vector3d(0.6,0,0.8)); //por->move(Vector3d(0,0,0.051)); por->rotate((Matrix3d() << cos(0.1), sin(0.1), 0, -sin(0.1), cos(0.1), 0, 0, 0, 1).finished()); break; case 'q': //por->move(Vector3d(-1/3.,-2/3.,-2/3.)); //por->move(Vector3d(-0.6,0,-0.8)); //por->move(Vector3d(0,0,-0.051)); por->rotate((Matrix3d() << cos(0.1), -sin(0.1), 0, sin(0.1), cos(0.1), 0, 0, 0, 1).finished()); break; case 's': por->move(Vector3d(0,-0.2,0)); break; case 'a': por->move(Vector3d(-0.2,0,0)); break; case 'd': por->move(Vector3d(0.2,0,0)); break; case KEY_ESCAPE: exit(0); break; default: break; } std::cout << "Main3.cpp space:\t" << por->getPosition()->getSpace()->getType() << std::endl; if(por->getPosition()->getSpace()->getType() == "SurfaceOfRevolution<PortalSpace2d>") { std::cout << "Main3.cpp t:\t" << ((SurfaceOfRevolution<PortalSpace2d>::Point*) por->getPosition().get())->getT() << std::endl; } else { std::cout << "Main3.cpp y:\t" << ((Euclidean::Point*) por->getPosition().get())->getCoordinates()[1] << std::endl; } display(); }