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