/* libsegl - Sebas Extended GL Library * Collection of Opengl/3D-Math helpers * * Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de * http://www.seba-geek.de * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __GLCAMERA_H #define __GLCAMERA_H #include #include #include #include "rotationsmatrix.h" #include "emath_opengl.h" #include "punkt3d.h" namespace segl { class GLCamera { private: Punkt3D std_dir; Punkt3D std_norm; Punkt3D pos; Punkt3D norm; Punkt3D dir; // normalisiert float rotx; float roty; bool doupdate; float mpersec; float apersec; Rotationsmatrix rotmatX; Rotationsmatrix rotmatY; void updateVectors(); public: GLCamera(); // GLCamera(Punkt3d void setCamera(); void setPosDirNorm(Punkt3D p, Punkt3D D, Punkt3D n); // Std Move void moveForward(float sec); void moveBackward(float sec); void moveLeft(float sec); void moveRight(float sec); void rotateLeft(float sec); void rotateRight(float sec); void rotateUp(float sec); void rotateDown(float sec); void handleKeys(float sec); float getXrot(); float getYrot(); void print(); void renderCoord(); Punkt3D getPos(); ~GLCamera(); }; } // namespace segl { #endif