![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsModelOrganHeart.cpp 00003 00004 ModelOrganHeart class (cpp file). 00005 00006 SUKITTI PUNAK (08/06/2008) 00007 ******************************************************************************/ 00008 #include "TAPsModelOrganHeart.hpp" 00009 // Using Inclusion Model (i.e. definitions are included in declarations) 00010 // (this name.cpp is included in name.hpp) 00011 // Each friend is defined directly inside its declaration. 00012 00013 BEGIN_NAMESPACE_TAPs 00014 //============================================================================= 00015 //----------------------------------------------------------------------------- 00016 template <typename T> 00017 ModelOrganHeart<T>::ModelOrganHeart ( 00018 std::string data_location 00019 ) 00020 : ModelForSurgery<T>( data_location, STOMACH ) 00021 { 00022 Init( rigidity ); 00023 } 00024 00025 //----------------------------------------------------------------------------- 00026 template <typename T> 00027 ModelOrganHeart<T>::ModelOrganHeart ( 00028 std::string data_location, 00029 T Kpointmass, 00030 T Kstiffness, 00031 T Kdamper, 00032 T HomeKstiffness, 00033 T HomeKdamper, 00034 int rigidity, 00035 T predefinedTimeStep, 00036 int numSimSubSteps 00037 ) 00038 : ModelForSurgery<T>( data_location, STOMACH, Kpointmass, Kstiffness, Kdamper, HomeKstiffness, HomeKdamper, predefinedTimeStep, numSimSubSteps ) 00039 { 00040 Init( rigidity ); 00041 } 00042 00043 //----------------------------------------------------------------------------- 00044 template <typename T> 00045 ModelOrganHeart<T>::~ModelOrganHeart () 00046 {} 00047 00048 //----------------------------------------------------------------------------- 00049 template <typename T> 00050 std::string ModelOrganHeart<T>::StrInfo () const 00051 { 00052 std::ostringstream ss; 00053 ss << "ModelOrganHeart<" << typeid(T).name() << ">"; 00054 return ss.str(); 00055 } 00056 00057 //----------------------------------------------------------------------------- 00058 template <typename T> 00059 bool ModelOrganHeart<T>::Init ( int rigidity ) 00060 { 00061 std::string fileModel( m_strDataLocation + "/Heart.ASE" ); 00062 00063 #if defined(__gl_h_) || defined(__GL_H__) 00064 //OpenGL::OpenGLHETriMeshOneModelMultiParts<T> * pModel = new OpenGL::OpenGLHETriMeshOneModelMultiParts<T>(); 00065 std::vector< OpenGL::OpenGLHETriMeshOneModelMultiParts<T> * > pListOfModel; 00066 #endif 00067 00068 if ( !ReadModels<T>::readFile( fileModel.c_str(), pListOfModel ) ) { 00069 std::cout << "ERROR: In Reading File (" << fileModel << ")!" << std::endl; 00070 exit ( EXIT_FAILURE ); 00071 return false; 00072 } 00073 else { 00074 for ( int i = 0; i < static_cast<int>( pListOfModel.size() ); ++i ) { 00075 #ifdef TAPs_DEBUG_MODE 00076 #endif//TAPs_DEBUG_MODE 00077 00078 //pModel->GetTransform().ApplyTranslation( vLeftCenter ); 00079 //pModel->GetTransform().ApplyRotationAxisAndAngle( Vector3<T>(0,1,0), vLeftRotationAngle[1] ); 00080 //pModel->GetTransform().ApplyScale( vLeftScale ); 00081 //pModel->ApplyAndResetTransform(); 00082 00083 pListOfModel[i]->BuildBVHTree( TAPs::Enum::BVH_TREE_BINARY_SPHERE ); 00084 pListOfModel[i]->CalAndSetNormals(); 00085 pListOfModel[i]->CreateMeshSprings( m_tPtMass, m_tKStiffness, m_tKDamper, m_tHomeKStiffness, m_tHomeKDamper, rigidity, m_tPredefinedTimeStep, m_iNumSimSubSteps ); 00086 00087 m_Parts.push_back( pListOfModel[i] ); 00088 } 00089 //--------------------------------------- 00090 //MemorizeOriginalVertices( leftTube, originalLeftBloodVesselVertices ); 00091 return true; 00092 } 00093 } 00094 00095 //----------------------------------------------------------------------------- 00096 //============================================================================= 00097 END_NAMESPACE_TAPs 00098 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00099 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----