#ifndef VCamera_h
#define VCamera_h

#include "vmath.h"

/*! \brief VCamera: Klasse zur Repräsentation der Kamera. Arbeitet mit Rotation und Translation.
 */
class VCamera
{
	/*! Ausgangspunkt der Rotation
	*/
	Vector2<float> fromPoint;

	/*! Distanz zum Ursprung
	*/
	float distance;
	/*! Rotierungswinkel um die x Achse
	*/
	float angleX;
	/*! Rotierungswinkel um die y Achse
	*/
	float angleY;

	/*! Maximale Distanz */
	float maxdistance;
	/*! Minimale Distanz */
	float mindistance;

	/*! Höhe des Fensters */
	int* winheight;
	/*! Breite des Fensters */
	int* winwidth;

   public:
	/*! Konstruktor
		\param width Breite des Fensters
		\param height Höhe des Fensters
		\param distance Distanz der Kamera
	*/
      VCamera(int*,int*,float);
	  ~VCamera();

	  /*! Führt Translation und Rotationen aus. */
      void setCamera();
	  /*! Führt nur Rotationen aus. */
	  void setRotation();
	  /*! Setzt die Ausrichtung entlang einer Achse.
		\param axis 0 für x-Achse, 1 für y-Achse, 2 für z-Achse
	  */
	  void setAxisAlign(int);
	  /*! Ändert die Ausrichtung der Kamera.
		\param x x Koordinate der Mausposition
		\param y y Koordinate der Mausposition
	*/
	  void changeDirection(int,int);
	  /*! Ändert die Distanz der Kamera.
		\param x x Koordinate der Mausposition
		\param y y Koordinate der Mausposition
	*/
	  void changeDistance(int,int);
	  /*! Setzt den Ausgangspunkt der Rotation */
	  void setFromPoint(int,int);
	  /*! Löscht den Ausgangspunkt der Rotation */
	  void deleteFromPoint();
	  /*! Setzt die Distanz der Kamera */
	  void setDistance(float);
	  /*! Gibt die Distanz der Kamera zurück */
	  float getDistance();
};

#endif
