TAPs 0.7.7.3
TAPsAdvSimCtrl.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsAdvSimCtrl.hpp
00003 ******************************************************************************/
00014 /******************************************************************************
00015 SUKITTI PUNAK   (10/06/2008)
00016 UPDATE          (01/05/2011)
00017 ******************************************************************************/
00018 #ifndef TAPs_ADV_SIM_CTRL_HPP
00019 #define TAPs_ADV_SIM_CTRL_HPP
00020 
00021 #include <TAPs/Core/TAPsLib.hpp>
00022 #include <TAPs/DataStructure/TAPsSimulationFlags.hpp>
00023 
00024 //#include <TAPs/OpenGLModel/TAPsModelStrand.hpp>
00025 //#include <TAPs/OpenGLModel/TAPsModelSuture.hpp>
00026 //#include <TAPs/OpenGLModel/TAPsDeformMesh.hpp>
00027 //#include <TAPs/Model/TAPsModelElasticRod.hpp>
00028 
00029 #include "TAPsAdvSimSupport.hpp"
00030 
00031 BEGIN_NAMESPACE_TAPs
00032 //=============================================================================
00033 template <typename T, typename DATA = unsigned char>
00034 class AdvSimCtrl {
00035 //=============================================================================
00036 public://*
00037     // Member Functions -------------------------------------------------------
00039     //friend std::ostream & operator<< ( std::ostream &output, AdvSimCtrl<T> const &obj )
00040     //{
00041     //  output << obj.StrInfo();
00042     //  return output;
00043     //}
00044     //-------------------------------------------------------------------------
00046     //virtual std::string StrInfo () const;
00047     //-------------------------------------------------------------------------
00049     AdvSimCtrl ();
00051     ~AdvSimCtrl ();
00052     //-------------------------------------------------------------------------
00054     AdvSimSupport_DS<T> &   GetDefaultAdvSimData () { return *m_AdvSimSupport.GetDefaultAdvSimData(); }
00056     AdvSimSupport_DS<T> const & GetAdvSimData () const  { return *m_AdvSimSupport.GetAdvSimData(); }
00058     AdvSimSupport_DS<T> &   GetAdvSimData ()    { return *m_AdvSimSupport.GetAdvSimData(); }
00060     void SetAdvSimData ( AdvSimSupport_DS<T> * ptr ) { m_AdvSimSupport.SetAdvSimData( ptr ); }
00061 
00063     void EnforceAllConstraints ()   { GetAdvSimData().EnforceAllConstraints(); }
00064 
00066     void ClearAllConstraints ()     { GetAdvSimData().ClearAllConstraints(); }
00067 
00068     //-------------------------------------------------------------------------
00069 
00071     //unsigned int GetNumOfSutureModelsBasedOnMSS ()            { return GetAdvSimData().GetNumOfSutureModelsBasedOnMSS(); }
00073     unsigned int GetNumOfModelsBasedOnER ()         { return GetAdvSimData().GetNumOfModelsBasedOnER(); }
00075     //unsigned int GetNumOfModelsForSurgeryBasedOnMSS ()        { return GetAdvSimData().GetNumOfModelsForSurgeryBasedOnMSS(); }
00077     //unsigned int GetNumOfSubModelsForSurgeryBasedOnMSS () { return GetAdvSimData().GetNumOfSubModelsForSurgeryBasedOnMSS(); }
00079     unsigned int GetNumOfModelsBasedOnFEM ()        { return GetAdvSimData().GetNumOfModelsBasedOnFEM(); }
00080 
00082     //std::vector< OpenGL::ModelSuture<T> * > &     GetListOfSutureModelsBasedOnMSS ()      { return GetAdvSimData().GetListOfSutureModelsBasedOnMSS(); }
00084     std::vector< ModelElasticRod<T> * > &           GetListOfModelsBasedOnER ()     { return GetAdvSimData().GetListOfModelsBasedOnER(); }
00086     //std::vector< ModelForSurgery<T> * > &         GetListOfModelsForSurgeryBasedOnMSS ()  { return GetAdvSimData().GetListOfModelsForSurgeryBasedOnMSS(); }
00088     std::vector< ModelDefBasedOnFEM<T,DATA> * > &   GetListOfModelsBasedOnFEM ()    { return GetAdvSimData().GetListOfModelsBasedOnFEM(); }
00089 
00090 
00091     //=========================================================================
00092     //-------------------------------------------------------------------------
00096     //static int AddModel ( OpenGL::ModelSuture<T> * pModel )   { return GetAdvSimData().AddModel( pModel ); }
00097 
00101     int AddModel ( ModelElasticRod<T> * pModel )            { return GetAdvSimData().AddModel( pModel ); }
00102 
00106     //static int AddModel ( ModelForSurgery<T> * pModel )       { return GetAdvSimData().AddModel( pModel ); }
00107 
00111     int AddModel( ModelDefBasedOnFEM<T,DATA> * pModel ) { return GetAdvSimData().AddModel( pModel ); }
00112 
00116     int AddModel( RigidBodyDynamics<T> * pModel )   { return GetAdvSimData().AddModel( pModel ); }
00117     //-------------------------------------------------------------------------
00118     //=========================================================================
00119 
00120 
00122 //  static void RemoveSutureModel ( OpenGL::ModelSuture<T> * pModel );
00124 //  static void RemoveModelForSurgery ( ModelForSurgery<T> * pModel );
00126 //  static void RemoveSutureModel ( ModelElasticRod<T> * pModel );
00128 //  static void RemoveModelForSurgery ( ModelDefBasedOnFEM<T,DATA> * pModel );
00129 
00130     //-------------------------------------------------------------------------
00131 
00133     typename AdvSimSupport_DATA<T,DATA>::Constraint_HEModelVsHEModel * AddVertexConnectionHEModelAndHEModel (
00134         unsigned int modelA,                        
00135         HEVertex<T> * pVertexA,                     
00136         enum Enum::AddOn::SimConstraints flagsA,    
00137         unsigned int modelB,                        
00138         HEVertex<T> * pVertexB,                     
00139         enum Enum::AddOn::SimConstraints flagsB,    
00140         T forceRatio = 0.5,                         
00141         T forceScaleForModelA = 1.0,                
00142         T forceScaleForModelB = 1.0,                
00143         T forceThresholdForModelA = 1.0,            
00144         T forceThresholdForModelB = 1.0,            
00145         bool bEnforceVertexOfModelA = true, 
00146         bool bEnforceVertexOfModelB = true  
00147     )   { return GetAdvSimData().AddVertexConnectionHEModelAndHEModel( modelA, pVertexA, flagsA, modelB, pVertexB, flagsB, forceRatio, forceScaleForModelA, forceScaleForModelB, forceThresholdForModelA, forceThresholdForModelB, bEnforceVertexOfModelA, bEnforceVertexOfModelB ); }
00148 
00150     void AddVertexConnectionERModelAndHEModel (
00151         unsigned int ERModelID,                         
00152         unsigned int ERModelVertexID,                   
00153         enum Enum::AddOn::SimConstraints flagsERModel,  
00154         unsigned int HEModelID,                         
00155         HEVertex<T> * pVertexHEModel,                   
00156         enum Enum::AddOn::SimConstraints flagsHEModel,  
00157         T forceRatio = 0.5,                             
00158         T forceScaleForERModel = 1.0,                   
00159         T forceScaleForHEModel = 1.0,                   
00160         T forceThresholdForERModel = 1.0,               
00161         T forceThresholdForHEModel = 1.0,               
00162         bool bEnforceERModelVertex = true,  
00163         bool bEnforceHEModelVertex = true   
00164     )   { GetAdvSimData().AddVertexConnectionERModelAndHEModel( ERModelID, ERModelVertexID, flagsERModel, HEModelID, pVertexHEModel, flagsHEModel, forceRatio, forceScaleForERModel, forceScaleForHEModel, forceThresholdForERModel, forceThresholdForHEModel, bEnforceERModelVertex, bEnforceHEModelVertex ); }
00165 
00167     void AddVertexConnectionIPGModelAndHEModel (
00168         unsigned int IPGModelID,                        
00169         unsigned int IPGModelVertexID,                  
00170         enum Enum::AddOn::SimConstraints flagsIPGModel, 
00171         unsigned int HEModelID,                         
00172         HEVertex<T> * pVertexHEModel,                   
00173         enum Enum::AddOn::SimConstraints flagsHEModel,  
00174         T forceRatio = 0.5,                             
00175         T forceScaleForIPGModel = 1.0,                  
00176         T forceScaleForHEModel = 1.0,                   
00177         T forceThresholdForIPGModel = 1.0,              
00178         T forceThresholdForHEModel = 1.0,               
00179         bool bEnforceIPGModelVertex = true, 
00180         bool bEnforceHEModelVertex = true   
00181     )   { GetAdvSimData().AddVertexConnectionIPGModelAndHEModel( IPGModelID, IPGModelVertexID, flagsIPGModel, HEModelID, pVertexHEModel, flagsHEModel, forceRatio, forceScaleForIPGModel, forceScaleForHEModel, forceThresholdForIPGModel, forceThresholdForHEModel, bEnforceIPGModelVertex, bEnforceHEModelVertex ); }
00182 
00183 
00184 
00185 
00187     inline typename AdvSimSupport_DATA<T>::Interaction_ERModelVsHEModel * PtrToInteraction_ERModelVsHEModel (
00188         unsigned int sutureID,      
00189         unsigned int modelID        
00190     );
00192     inline typename AdvSimSupport_DATA<T>::Interaction_HEModelVsHEModel * PtrToInteraction_HEModelVsHEModel (
00193         unsigned int modelA,        
00194         unsigned int modelB     
00195     );
00196 
00197 
00199     inline typename AdvSimSupport_DATA<T>::InteractionConstants_ERModelVsHEModel * PtrToInteractionConstants_ERModelVsHEModel (
00200         unsigned int sutureID,      
00201         unsigned int modelID        
00202     );
00204     inline typename AdvSimSupport_DATA<T>::InteractionConstants_HEModelVsHEModel * PtrToInteractionConstants_HEModelVsHEModel (
00205         unsigned int modelA,        
00206         unsigned int modelB     
00207     );
00208 
00209 
00211     inline typename AdvSimSupport_DATA<T>::InteractionConstraints_ERModelVsHEModel * PtrToInteractionConstraints_ERModelVsHEModel (
00212         unsigned int sutureID,      
00213         unsigned int modelID        
00214     );
00216     inline typename AdvSimSupport_DATA<T>::InteractionConstraints_HEModelVsHEModel * PtrToInteractionConstraints_HEModelVsHEModel (
00217         unsigned int modelA,        
00218         unsigned int modelB     
00219     );
00220 
00221 
00223     inline int GetSizeOfInteractionConstraints_ERModelVsHEModel (
00224         unsigned int sutureID,  
00225         unsigned int modelID    
00226     );
00228     inline int GetSizeOfInteractionConstraints_HEModelVsHEModel (
00229         unsigned int modelA,    
00230         unsigned int modelB     
00231     );
00232 
00233 
00234     //-------------------------------------------------------------------------
00235 
00240     void AdvSimAllModels ( 
00241         T timestep,                                 
00242         bool bEnforceAllConstraints = true,         
00243         bool bEnforceAllConsistentPositions = true  
00244     )   { GetAdvSimData().AdvSimAllModels( timestep, bEnforceAllConstraints, bEnforceAllConsistentPositions ); }
00245 
00246     //-------------------------------------------------------------------------
00247     // Data Members -----------------------------------------------------------
00248 //=============================================================================
00249 protected:
00250     // Member Functions -------------------------------------------------------
00251     AdvSimSupport<T,DATA>   m_AdvSimSupport;    
00252     // Data Members -----------------------------------------------------------
00253 //=============================================================================
00254 private:
00255     // Member Functions -------------------------------------------------------
00256     // Data Members -----------------------------------------------------------
00257 //=============================================================================
00258 
00259 #if defined(__gl_h_) || defined(__GL_H__)
00260 public:
00262     inline void DrawAllModels ()            { GetAdvSimData().DrawAllModels(); }
00264     inline void DrawAddedInteractions ()    { GetAdvSimData().DrawAddedInteractions(); }
00265 #endif
00266 //*/
00267 //=============================================================================
00268 }; // END CLASS AdvSimCtrl
00269 //=============================================================================
00270 END_NAMESPACE_TAPs
00271 //-----------------------------------------------------------------------------
00272 // Include definition if TAPs_USE_EXPORT is not defined
00273 //#if !defined( TAPs_USE_EXPORT )
00274     #include "TAPsAdvSimCtrl.cpp"
00275 //#endif
00276 //-----------------------------------------------------------------------------
00277 #endif//TAPs_ADV_SIM_SUPPORT_HPP
00278 //34567890123456789012345678901234567890123456789012345678901234567890123456789
00279 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines