![]() |
TAPs 0.7.7.3
|
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----+----