00001 00005 #ifndef PinholeCamera_h 00006 #define PinholeCamera_h 00007 00008 #include "Camera.h" 00009 #include "Point.h" 00010 #include "Vector.h" 00011 00012 class PinholeCamera : public Camera { 00013 public: 00014 PinholeCamera(const Point& eye, const Point& lookat, const Vector& up, double hfov); 00015 virtual ~PinholeCamera(); 00016 00017 virtual void preprocess(double aspect_ratio); 00018 virtual void makeRay(Ray& ray, const RenderContext& context, double x, double y) const; 00019 00020 private: 00021 PinholeCamera(const PinholeCamera&); 00022 PinholeCamera& operator=(const PinholeCamera&); 00023 00024 Point eye; 00025 Point lookat; 00026 Vector up; 00027 double hfov; 00028 00029 Vector u; 00030 Vector v; 00031 Vector lookdir; 00032 }; 00033 00034 #endif 00035