示例#1
0
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();
}