Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

PerspectiveCamera.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 
00015 #include "nvsgcommon.h"
00016 
00017 #include "nvsg/SimpleCamera.h"
00018 
00019 namespace nvsg
00020 {
00022 
00023   class PerspectiveCamera : public SimpleCamera
00024   {
00025     public:
00027 
00028       NVSG_API static const PerspectiveCamera * create( void );
00029 
00031 
00032       NVSG_API static const PerspectiveCamera * createFromBase( const SimpleCamera &rhs  
00033                                                               );
00034 
00036 
00037       NVSG_API virtual const PerspectiveCamera * clone( void ) const;
00038 
00040 
00043       NVSG_API float getFieldOfView()  const;
00044 
00046 
00047       NVSG_API void setFieldOfView( float fov   
00048                                   );
00049 
00051 
00053       NVSG_API virtual void setTargetDistance( float td   
00054                                              );
00055 
00057 
00058       NVSG_API virtual nvmath::Mat44f getProjection() const;
00059 
00061 
00062       NVSG_API virtual nvmath::Mat44f getInverseProjection() const;
00063 
00064     protected:
00066       NVSG_API PerspectiveCamera();
00067 
00069       NVSG_API PerspectiveCamera( const SimpleCamera &rhs );
00070 
00072       NVSG_API PerspectiveCamera( const PerspectiveCamera &rhs );
00073 
00075       NVSG_API virtual ~PerspectiveCamera(void);
00076   };
00077 
00078   inline float PerspectiveCamera::getFieldOfView() const
00079   {
00080     __TRACE();
00081     return( 2.0f * atanf( 0.5f * getWindowSize()[1] / getTargetDistance() ) );
00082   }
00083 } // namespace

Generated on Tue Mar 1 13:19:18 2005 for NVSGSDK by NVIDIA