void keyPressed(unsigned char key, int x, int y) { if( key == 'g' ) CurrMode = ( CurrMode == M_2D )?M_3D:M_2D; if( key == 27 ) exit(0); if( key == 'w' ) { CameraPos += CameraView * 0.02; CameraView += CameraView * 0.02; CameraView = CameraView / CameraView.Length() * 255; } if( key == 's' ) { CameraPos += CameraView * -0.02; CameraView += CameraView * -0.02; CameraView = CameraView / CameraView.Length() * 255; } if( key == 'a' ) { CameraPos.print(); Vect<double> tmp = Vect<double>(3,0.0,1.0,0.0) % Vect<double>(3,CameraView[V_X],0.0,CameraView[V_Z]) ; tmp.print(); CameraPos += tmp / tmp.Length() * 2; CameraView += tmp / tmp.Length() * 2; CameraView = CameraView / CameraView.Length() * 255; } if( key == 'd' ) { CameraPos.print(); Vect<double> tmp = CameraView % Vect<double>(3,0.0,1.0,0.0) ; tmp.print(); CameraPos += tmp / tmp.Length() * -2; CameraView += tmp / tmp.Length() * -2; CameraView = CameraView / CameraView.Length() * 255; } if( key == 'o' ) glEnable(GL_ALPHA_TEST); if( key == 'p' ) glDisable(GL_ALPHA_TEST); }
void onMouseMove( int X, int Y ) { int kX(500), kY(500); int dX(X-pX), dY(Y-pY); CameraView.print(); double Angle = dX / (double)kX; CameraView = Rotate( CameraView, Angle, Vect<double>(3, 0.0, 1.0, 0.0 ) ); Angle = -dY / (double)kY; CameraView = Rotate( CameraView, Angle, Vect<double>(3, 0.0, 1.0, 0.0 ) % CameraView ); if( fabs( CameraView[V_X] ) <= 1 && fabs( CameraView[V_Z] ) <= 1 ) { CameraView[V_X] = pVX; CameraView[V_Y] = pVY; CameraView[V_Z] = pVZ; } pX = X; pY = Y; pVX = CameraView[V_X]; pVY = CameraView[V_Y]; pVZ = CameraView[V_Z]; //CameraView = CameraView / CameraView.Length() * 255; }