00001 #ifndef CAMERA_H 00002 #define CAMERA_H 00003 00004 00005 #include "Vec3f.h" 00006 #include "Ray.h" 00007 00008 00012 class Camera 00013 { 00014 public: 00021 Camera( Vec3f pos, 00022 int resX, 00023 int resY ) 00024 : mPos(pos), 00025 mResX(resX), 00026 mResY(resY) 00027 { 00028 } 00029 00032 virtual ~Camera() 00033 { 00034 } 00035 00041 virtual Ray initRay(float x, float y) = 0; 00042 00045 const Vec3f & pos() const 00046 { 00047 return mPos; 00048 } 00049 00052 int resX() const 00053 { 00054 return mResX; 00055 } 00056 00059 int resY() const 00060 { 00061 return mResY; 00062 } 00063 00066 virtual void setPos(Vec3f pos) = 0; 00067 00070 virtual void setDir(Vec3f dir) = 0; 00071 00074 virtual void setUp(Vec3f up) = 0; 00075 00078 virtual const Vec3f & up() const = 0; 00079 00082 virtual const Vec3f & dir() const = 0; 00083 00086 virtual const float focusDistance() const = 0; 00087 00090 virtual const float aperture() const = 0; 00091 00094 virtual int depthSamples() const = 0; 00095 00098 virtual void setDepthSamples(unsigned int) = 0; 00099 00102 virtual void setFocusDistance(float f) = 0; 00103 00106 virtual void setAperture(float a) = 0; 00107 00110 virtual void setSlowCorrect() = 0; 00111 00114 virtual void setFastIncorrect() = 0; 00115 00116 protected: 00118 Vec3f mPos; 00119 00121 int mResX; 00122 00124 int mResY; 00125 }; 00126 00127 00128 #endif 00129