TAPs 0.7.7.3
TAPsRigidBodyBase.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsRigidBodyBase.hpp
00003 ******************************************************************************/
00015 /******************************************************************************
00016 SUKITTI PUNAK   (03/25/2010)
00017 UPDATE          (09/25/2010)
00018 ******************************************************************************/
00019 #ifndef TAPs_RIGID_BODY_BASE_HPP
00020 #define TAPs_RIGID_BODY_BASE_HPP
00021 
00022 #include "TAPsShape.hpp"
00023 #include "../../Core/TAPsQuaternion.hpp"
00024 #include "../../CD/TAPsBVSupportFns.hpp"
00025 
00026 BEGIN_NAMESPACE_TAPs
00027 //=============================================================================
00028 template <typename T>
00029 class RigidBodyBase : public /*virtual*/ Shape<T> {
00030 //=============================================================================
00031 public:
00032     // Member Functions -------------------------------------------------------
00034     friend std::ostream & operator<< ( std::ostream &output, RigidBodyBase<T> const &obj )
00035     {
00036         output << obj.StrInfo();
00037         return output;
00038     }
00039     //-------------------------------------------------------------------------
00041     RigidBodyBase ();
00042 
00044     RigidBodyBase ( Vector3<T> const & Origin, Quaternion<T> const & Orientation );
00045 
00047     //RigidBodyBase ( RigidBodyBase<T> const &orig );
00048 
00050     virtual ~RigidBodyBase ();
00051 
00052     //-------------------------------------------------------------------------
00054     virtual std::string StrInfo () const;
00055     //-------------------------------------------------------------------------
00057     //inline RigidBodyBase<T> & operator= ( RigidBodyBase<T> const &orig );
00058 
00060     Vector3<T> const & GetOriginPoint () const  { return m_OriginPt; }
00062     virtual void SetOriginPoint ( Vector3<T> const & originPt ) { m_OriginPt = originPt; }
00063 
00065     Quaternion<T> const & GetOrientation () const   { return m_Orientation; }
00067     virtual void SetOrientation ( Quaternion<T> const & orientation )   { m_Orientation = orientation; }
00068 
00070     virtual Vector3<T> const & GetOrientationCenter () const    { return m_OrientationCenter; }
00072     virtual void SetOrientationCenter ( Vector3<T> const & orientationCenter )  { m_OrientationCenter = orientationCenter; }
00073 
00075     virtual BoundingVolume<T> const & RefToBV () const  { return *m_pBV; }
00077     virtual BoundingVolume<T>       & RefToBV ()        { return *m_pBV; }
00078 
00083     virtual void SetBVOfType ( Enum::CD type );
00084 
00086     inline virtual Matrix4x4<T> CalMatrixTransform () const;
00087 
00089     inline virtual Matrix4x4<T> CalInvMatrixTransform () const;
00090 
00091     // Data Members -----------------------------------------------------------
00092 //=============================================================================
00093 protected:
00094     // Member Functions -------------------------------------------------------
00095     // Data Members -----------------------------------------------------------
00096     Vector3<T>      m_OriginPt;             
00097     Vector3<T>      m_OrientationCenter;    
00098     Quaternion<T>   m_Orientation;          
00099 
00100     BoundingVolume<T> * m_pBV;  
00101 
00102 //=============================================================================
00103 private:
00104     // Member Functions -------------------------------------------------------
00105     // Data Members -----------------------------------------------------------
00106 //=============================================================================
00107 
00108 #if defined(__gl_h_) || defined(__GL_H__)
00109 public:
00111     virtual void Draw () const;
00112 
00114     virtual void DrawOrigin () const;
00115 
00117     virtual void DrawOrientation () const;
00118 
00120     virtual void DrawBV () const;
00121 
00122 #endif
00123 
00124 //=============================================================================
00125 }; // END CLASS RigidBodyBase
00126 //=============================================================================
00127 //-----------------------------------------------------------------------------
00129 typedef RigidBodyBase<int>    RigidBodyBasei;
00130 typedef RigidBodyBase<float>  RigidBodyBasef;
00131 typedef RigidBodyBase<double> RigidBodyBased;
00132 //=============================================================================
00133 END_NAMESPACE_TAPs
00134 //-----------------------------------------------------------------------------
00136 #include "TAPsRigidBodyBase.cpp"
00137 
00139 // Include definition if TAPs_USE_EXPORT is not defined
00140 //#if !defined( TAPs_USE_EXPORT )
00141 //  #include "TAPsRigidBodyBase.cpp"
00142 //#endif
00143 //-----------------------------------------------------------------------------
00144 #endif
00145 //34567890123456789012345678901234567890123456789012345678901234567890123456789
00146 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines