// -*- C++ -*- #ifndef RICAMERA_H #define RICAMERA_H /* Copyright 1996 * Wed Aug 13 10:09:47 1997 Brian Smits (bes@phoenix.cs.utah.edu) * * RiCamera.H * * * * $Id: RiCamera.H,v 1.1 1997/08/15 16:09:23 bes Exp $ * */ #ifndef RICOMMON_H #include #endif #ifndef RIAFFINETMATRIX3_H #include #endif #ifndef RIRAY3_H #include #endif #ifndef RIVECTOR2_H #include #endif /*************************************************************** CLASS RiCamera Generic base class for all cameras DESCRIPTION This should hold general manipulation ****************************************************************/ class RiCamera { public: //// Destructor virtual ~RiCamera() {}; // GROUP: Members //// General manipulation of the camera. Some cameras may // not allow a scale or perhaps even a rotation (Cylindrical panoramic), // these need to catch or ignore this component of the matrix. virtual void Transform(const RiAffineTMatrix3 &) = 0; private: }; /*************************************************************** CLASS RiRayCamera An RiCamera that allows the creation of rays. DESCRIPTION A mixin class that simply allows rays to be generated from the camera, the only thing a ray tracer (in the form of an RiRayCameraPixelRenderer) needs ****************************************************************/ class RiRayCamera : public RiCamera { public: // GROUP: Members //// Screen coord is in the range[0,1]^2. // (0,0) is lower-left corner. lensCoord // is a seed in [0,1]^2 for lens sampling. virtual RiRay3 GetRay( const RiVector2& screenCoord, const RiVector2& lensCoord ) const = 0; }; #endif /* RICAMERA_H */