TAPs 0.7.7.3
TAPsAdvSimCtrl.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsAdvSimCtrl.hpp
00003 ******************************************************************************/
00013 /******************************************************************************
00014 SUKITTI PUNAK   (10/06/2008)
00015 UPDATE          (08/01/2010)
00016 ******************************************************************************/
00017 #ifndef TAPs_ADV_SIM_CTRL_HPP
00018 #define TAPs_ADV_SIM_CTRL_HPP
00019 
00020 #include <TAPs/Core/TAPsLib.hpp>
00021 #include <TAPs/DataStructure/TAPsSimulationFlags.hpp>
00022 
00023 //#include <TAPs/OpenGLModel/TAPsModelStrand.hpp>
00024 //#include <TAPs/OpenGLModel/TAPsModelSuture.hpp>
00025 //#include <TAPs/OpenGLModel/TAPsDeformMesh.hpp>
00026 //#include <TAPs/Model/TAPsModelElasticRod.hpp>
00027 
00028 #include "TAPsAdvSimSupport.hpp"
00029 
00030 BEGIN_NAMESPACE_TAPs
00031 //=============================================================================
00032 template <typename T, typename DATA = unsigned char>
00033 class AdvSimCtrl {
00034 //=============================================================================
00035 public://*
00036     // Member Functions -------------------------------------------------------
00038     //friend std::ostream & operator<< ( std::ostream &output, AdvSimCtrl<T> const &obj )
00039     //{
00040     //  output << obj.StrInfo();
00041     //  return output;
00042     //}
00043     //-------------------------------------------------------------------------
00045     //virtual std::string StrInfo () const;
00046     //-------------------------------------------------------------------------
00048     AdvSimCtrl ();
00050     ~AdvSimCtrl ();
00051     //-------------------------------------------------------------------------
00053     AdvSimSupport_DS<T> *   GetDefaultAdvSimData () { return m_AdvSimSupport.GetDefaultAdvSimData(); }
00055     AdvSimSupport_DS<T> const * GetAdvSimData () const  { return m_AdvSimSupport.GetAdvSimData(); }
00057     AdvSimSupport_DS<T> *   GetAdvSimData ()    { return m_AdvSimSupport.GetAdvSimData(); }
00059     void SetAdvSimData ( AdvSimSupport_DS<T> * ptr ) { m_AdvSimSupport.SetAdvSimData( ptr ); }
00060 
00062     void EnforceAllConstraints ()   { GetAdvSimData()->EnforceAllConstraints(); }
00063 
00065     void ClearAllConstraints ()     { GetAdvSimData()->ClearAllConstraints(); }
00066 
00067     //-------------------------------------------------------------------------
00068 
00070     unsigned int GetNumOfSutureModelsBasedOnMSS ()          { return GetAdvSimData()->GetNumOfSutureModelsBasedOnMSS(); }
00072     unsigned int GetNumOfSutureModelsBasedOnER ()           { return GetAdvSimData()->GetNumOfSutureModelsBasedOnER(); }
00074     unsigned int GetNumOfModelsForSurgeryBasedOnMSS ()      { return GetAdvSimData()->GetNumOfModelsForSurgeryBasedOnMSS(); }
00076     unsigned int GetNumOfSubModelsForSurgeryBasedOnMSS ()   { return GetAdvSimData()->GetNumOfSubModelsForSurgeryBasedOnMSS(); }
00078     unsigned int GetNumOfModelsForSurgeryBasedOnFEM ()      { return GetAdvSimData()->GetNumOfModelsForSurgeryBasedOnFEM(); }
00079 
00081     std::vector< OpenGL::ModelSuture<T> * > &       GetListOfSutureModelsBasedOnMSS ()      { return GetAdvSimData()->GetListOfSutureModelsBasedOnMSS(); }
00083     std::vector< ModelElasticRod<T> * > &           GetListOfSutureModelsBasedOnER ()       { return GetAdvSimData()->GetListOfSutureModelsBasedOnER(); }
00085     std::vector< ModelForSurgery<T> * > &           GetListOfModelsForSurgeryBasedOnMSS ()  { return GetAdvSimData()->GetListOfModelsForSurgeryBasedOnMSS(); }
00087     std::vector< ModelDefBasedOnFEM<T,DATA> * > &   GetListOfModelsForSurgeryBasedOnFEM ()  { return GetAdvSimData()->GetListOfModelsForSurgeryBasedOnFEM(); }
00088 
00092     //static int AddModel ( OpenGL::ModelSuture<T> * pModel )   { return GetAdvSimData()->AddModel( pModel ); }
00096     int AddModel ( ModelElasticRod<T> * pModel )            { return GetAdvSimData()->AddModel( pModel ); }
00100     //static int AddModel ( ModelForSurgery<T> * pModel )       { return GetAdvSimData()->AddModel( pModel ); }
00104     int AddModel( ModelDefBasedOnFEM<T,DATA> * pModel ) { return GetAdvSimData()->AddModel( pModel ); }
00105 
00107 //  static void RemoveSutureModel ( OpenGL::ModelSuture<T> * pModel );
00109 //  static void RemoveModelForSurgery ( ModelForSurgery<T> * pModel );
00111 //  static void RemoveSutureModel ( ModelElasticRod<T> * pModel );
00113 //  static void RemoveModelForSurgery ( ModelDefBasedOnFEM<T,DATA> * pModel );
00114 
00115     //-------------------------------------------------------------------------
00116 
00118     void AddVertexConnectionModelAndModel ( 
00119         unsigned int modelA,                        
00120         HEVertex<T> * pVertexA,                     
00121         enum Enum::AddOn::SimConstraints flagsA,    
00122         unsigned int modelB,                        
00123         HEVertex<T> * pVertexB,                     
00124         enum Enum::AddOn::SimConstraints flagsB,    
00125         T forceRatio = 0.5,                         
00126         T forceScaleForModelA = 1.0,                
00127         T forceScaleForModelB = 1.0,                
00128         T forceThresholdForModelA = 1.0,            
00129         T forceThresholdForModelB = 1.0             
00130     )   { GetAdvSimData()->AddVertexConnectionModelAndModel( modelA, pVertexA, flagsA, modelB, pVertexB, flagsB, forceRatio, forceScaleForModelA, forceScaleForModelB, forceThresholdForModelA, forceThresholdForModelB ); }
00131 
00133     void AddVertexConnectionERSutureAndModel ( 
00134         unsigned int sutureID,                          
00135         unsigned int vertexIDSuture,                    
00136         //DS::SimulationFlags * simFlagsSuture,         //!< simulation flags of suture
00137         //Vector3<T> * vertexSuture,                        //!< vertex of suture
00138         enum Enum::AddOn::SimConstraints flagsSuture,   
00139         unsigned int modelID,                           
00140         HEVertex<T> * pVertexModel,                     
00141         enum Enum::AddOn::SimConstraints flagsModel,    
00142         T forceRatio = 0.5,                             
00143         T forceScaleForSuture = 1.0,                    
00144         T forceScaleForModel = 1.0,                     
00145         T forceThresholdForSuture = 1.0,                
00146         T forceThresholdForModel = 1.0                  
00147     )   { GetAdvSimData()->AddVertexConnectionERSutureAndModel( sutureID, vertexIDSuture, flagsSuture, modelID, pVertexModel, flagsModel, forceRatio, forceScaleForSuture, forceScaleForModel, forceThresholdForSuture, forceThresholdForModel ); }
00148 
00149 
00150     //-------------------------------------------------------------------------
00151 
00156     void AdvSimAllModels ( 
00157         T timestep,                                 
00158         bool bEnforceAllConstraints = true,         
00159         bool bEnforceAllConsistentPositions = true  
00160     )   { GetAdvSimData()->AdvSimAllModels( timestep, bEnforceAllConstraints, bEnforceAllConsistentPositions ); }
00161 
00162     //-------------------------------------------------------------------------
00163     // Data Members -----------------------------------------------------------
00164 //=============================================================================
00165 protected:
00166     // Member Functions -------------------------------------------------------
00167     AdvSimSupport<T,DATA>   m_AdvSimSupport;    
00168     // Data Members -----------------------------------------------------------
00169 //=============================================================================
00170 private:
00171     // Member Functions -------------------------------------------------------
00172     // Data Members -----------------------------------------------------------
00173 //=============================================================================
00174 
00175 #if defined(__gl_h_) || defined(__GL_H__)
00176 public:
00178     inline void DrawAllModels ()            { GetAdvSimData()->DrawAllModels(); }
00180     inline void DrawAddedInteractions ()    { GetAdvSimData()->DrawAddedInteractions(); }
00181 #endif
00182 //*/
00183 //=============================================================================
00184 }; // END CLASS AdvSimCtrl
00185 //=============================================================================
00186 END_NAMESPACE_TAPs
00187 //-----------------------------------------------------------------------------
00188 // Include definition if TAPs_USE_EXPORT is not defined
00189 //#if !defined( TAPs_USE_EXPORT )
00190     #include "TAPsAdvSimCtrl.cpp"
00191 //#endif
00192 //-----------------------------------------------------------------------------
00193 #endif//TAPs_ADV_SIM_SUPPORT_HPP
00194 //34567890123456789012345678901234567890123456789012345678901234567890123456789
00195 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines