00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef PBRT_CAMERA_H
00025 #define PBRT_CAMERA_H
00026
00027 #include "pbrt.h"
00028 #include "color.h"
00029 #include "sampling.h"
00030 #include "geometry.h"
00031 #include "transform.h"
00032
00033 class COREDLL Camera {
00034 public:
00035
00036 virtual float GenerateRay(const Sample &sample,
00037 Ray *ray) const = 0;
00038 virtual ~Camera();
00039 Camera(const Transform &world2cam, float hither, float yon,
00040 float sopen, float sclose, Film *film);
00041
00042 Film *film;
00043 protected:
00044
00045 Transform WorldToCamera, CameraToWorld;
00046 float ClipHither, ClipYon;
00047 float ShutterOpen, ShutterClose;
00048 };
00049 class COREDLL ProjectiveCamera : public Camera {
00050 public:
00051
00052 ProjectiveCamera(const Transform &world2cam,
00053 const Transform &proj, const float Screen[4],
00054 float hither, float yon,
00055 float sopen, float sclose,
00056 float lensr, float focald, Film *film);
00057 protected:
00058
00059 Transform CameraToScreen, WorldToScreen, RasterToCamera;
00060 Transform ScreenToRaster, RasterToScreen;
00061 float LensRadius, FocalDistance;
00062 };
00063 #endif // PBRT_CAMERA_H