87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
/* 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 <iostream>
 | 
						|
#include <SDL.h>
 | 
						|
#include <SDL_opengl.h>
 | 
						|
#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
 |