#ifndef __CAMERA__
#define __CAMERA__

#include <stdlib.h>
#include "Vec3f.h"

//					1/180 * PI
#define radToDeg 0.0174533

class Camera
{

public:
	Camera(Vec3f eye, Vec3f center, Vec3f up);
	Camera(float eyeX = 0, float eyeY = 0, float eyeZ = 0, float centerX = 0, float centerY = 0, float centerZ = -1, float upX = 0, float upY = 1, float upZ = 0);

	virtual ~Camera();

	void render();

	void rotateX(float angle);
	void rotateY(float angle);
	void rotateZ(float angle);
	void move(float x, float y, float z);
	void move(Vec3f delta);

	void set(Vec3f eye, Vec3f center, Vec3f up = Vec3f(0,1,0));

	Vec3f getPosition();

protected:

	Vec3f eye;
	Vec3f center;
	Vec3f up;

	Vec3f viewVec;
};

#endif __CAMERA__
