/********************************************************************
 * File: Camera.h
 * Author: Keith Schwarz (htiek@cs.stanford.edu)
 *
 * A class representing a camera, which is an orientation paired with
 * a position in 3-space.
 */
#ifndef Camera_Included
#define Camera_Included

#include "Orientation.h"
#include "Matrix.h"

namespace Copper3D
{
	class Camera
	{
	public:
		/* Constructs a camera oriented according to the canonical basis. */
		Camera();

		/* Constructs a camera from a known orientation and position. */
		Camera(const Orientation& orientation, const Vector<3>& pos);

		Orientation orientation() const;
		Vector<3>   position() const;

		void setOrientation(const Orientation& o);
		void setPosition(const Vector<3>& p);

	private:
		Orientation mOrientation;
		Vector<3>   mPosition;
	};
}

#endif