00001 00005 #ifndef Camera_h 00006 #define Camera_h 00007 00008 class Ray; 00009 class RenderContext; 00010 00016 class Camera { 00017 public: 00018 Camera(); 00019 virtual ~Camera(); 00020 00021 virtual void preprocess(double aspect_ratio) = 0; 00022 virtual void makeRay(Ray& ray, const RenderContext& context, double x, double y) const = 0; 00023 00024 private: 00025 Camera(const Camera&); 00026 Camera& operator=(const Camera&); 00027 }; 00028 00029 #endif 00030