TAPs 0.7.7.3
TAPsModelDefBasedOnFEMHex_CD.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsModelDefBasedOnFEMHex_CD.hpp
00003 ******************************************************************************/
00007 /******************************************************************************
00008 SUKITTI PUNAK   (04/15/2010)
00009 UPDATE          (12/05/2010)
00010 ******************************************************************************/
00011 #ifndef TAPs_MODEL_DEF_BASED_ON_FEM_HEX_CD_HPP
00012 #define TAPs_MODEL_DEF_BASED_ON_FEM_HEX_CD_HPP
00013 
00014 #include "TAPsModelDefBasedOnFEM_CD.hpp"
00015 
00016 BEGIN_NAMESPACE_TAPs__FEM
00017 //=============================================================================
00018 template <typename T>
00019 class ModelDefBasedOnFEMHex_CD : public ModelDefBasedOnFEM_CD<T> {
00020 //=============================================================================
00021 public:
00022     // Member Functions -------------------------------------------------------
00024     friend std::ostream & operator<< ( std::ostream &output, ModelDefBasedOnFEMHex_CD<T> const &obj )
00025     {
00026         output << obj.StrInfo();
00027         return output;
00028     }
00029     //-------------------------------------------------------------------------
00031     ModelDefBasedOnFEMHex_CD ();
00033     //ModelDefBasedOnFEMHex_CD ( ModelDefBasedOnFEMHex_CD<T,DATA> const &orig );
00035     virtual ~ModelDefBasedOnFEMHex_CD ();
00036     //-------------------------------------------------------------------------
00038     virtual std::string StrInfo () const;
00039     //-------------------------------------------------------------------------
00041     //inline ModelDefBasedOnFEMHex_CD<T,DATA> & operator= ( ModelDefBasedOnFEMHex_CD<T,DATA> const &orig );
00042     //-------------------------------------------------------------------------
00043 
00045     virtual bool Init (
00046         OpenGL::OpenGLHalfEdgeTrigonalModel<T> * pHEModel,  
00047         FEM::MeshHexahedra<T> * pFEMMesh                    
00048     );
00049 
00053     inline virtual void ClearCollidedParts ();
00054 
00056     inline virtual bool CDRwith (
00057         MultiBoundingVolume<T> * const pMBVObj      
00058     );
00059 
00061     inline virtual bool CDRwith (
00062         MultiBoundingVolume<T> * const pMBVObj,     
00063         TransformationSupport<T> * const pTransform 
00064     );
00065 
00067     inline void AdjustSurfaceMeshByCDObjs ();
00068 
00069     //=========================================================================
00070     // Grabbing
00071     //-------------------------------------------------------------------------
00072 
00077     inline virtual void MoveGrabbedPart ( int grabbedPartID );
00078 
00080     inline virtual void MoveAllGrabbedParts ();
00081 
00083     inline void AdjustSurfaceMeshDueToGrabbedParts ();
00084 
00085     //-------------------------------------------------------------------------
00086     // Grabbing
00087     //=========================================================================
00088 
00089     // Data Members -----------------------------------------------------------
00090 //=============================================================================
00091 protected:
00092     // Member Functions -------------------------------------------------------
00093 
00097     inline virtual bool CORE_CDwith (
00098         MultiBoundingVolume<T> * const pMBVObj      
00099     );
00100 
00102     inline void CORE_CR ();
00103 
00105     inline void GenCDForcesOnFEMMeshByCDObj ( CDObj<T> & cdObj );
00106 
00110     inline void GenGrabbedForcesOnFEMMeshByCDObj ( 
00111         CDObj<T> & cdObj,                       
00112         Vector3<T> const & grabbingObjPos_LS    
00113     );
00114 
00116     inline void AdjustSurfaceMeshVertexPositionByCDObj ( CDObj<T> & cdObj );
00117 
00119     inline void AdjustSurfaceMeshVertexPositionDueToGrabbedVertex ( CDObj<T> & cdObj );
00120 
00122     //inline void ClearFEMMeshAdjustmentFromCDObj ( CDObj<T> & cdObj );
00123 
00124     // Data Members -----------------------------------------------------------
00125     FEM::MeshHexahedra<T> * m_pFEMMesh; 
00126 
00127 //=============================================================================
00128 private:
00129     // Member Functions -------------------------------------------------------
00130     // Data Members -----------------------------------------------------------
00131 //=============================================================================
00132 
00133 #if defined(__gl_h_) || defined(__GL_H__)
00134 public:
00135 #endif
00136 
00137 //=============================================================================
00138 }; // END CLASS ModelDefBasedOnFEMHex_CD
00139 //=============================================================================
00140 END_NAMESPACE_TAPs__FEM
00141 //-----------------------------------------------------------------------------
00143 #include "TAPsModelDefBasedOnFEMHex_CD.cpp"
00144 
00146 // Include definition if TAPs_USE_EXPORT is not defined
00147 //#if !defined( TAPs_USE_EXPORT )
00148 //  #include "TAPsModelDefBasedOnFEMHex_CD.cpp"
00149 //#endif
00150 //-----------------------------------------------------------------------------
00151 #endif
00152 //34567890123456789012345678901234567890123456789012345678901234567890123456789
00153 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines