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

Trackball.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 "nvmath/Vec2f.h"
00018 #include "nvmath/Vec3f.h"
00019 
00020 namespace nvutil
00021 {
00022   
00024 
00029   class Trackball
00030   {
00031     public:
00033       Trackball(void);
00034 
00036       virtual ~Trackball(void);
00037 
00039 
00048       void  apply( const nvmath::Vec2f &p0   
00049                  , const nvmath::Vec2f &p1   
00050                  , nvmath::Vec3f & axis      
00051                  , float & rad       
00052                  );
00053       
00055 
00060       void  setSize( float size   
00061                    );
00062 
00064 
00066       float getSize( void );
00067       
00068     protected:
00070 
00073       float projectOntoTBSphere( const nvmath::Vec2f & p );
00074 
00075       float m_tbsize;  
00076   };
00077 
00078   inline  void  Trackball::setSize( float size )
00079   {
00080     __ASSERT( m_tbsize > 0.f );
00081     m_tbsize = size;
00082   }
00083 
00084   inline float Trackball::getSize( void )
00085   {
00086     return( m_tbsize );
00087   }
00088 
00089 } //  namespace nvui

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