![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsAdvSimConstraint_HEVertexVsHEVertex.cpp 00003 ******************************************************************************/ 00007 /****************************************************************************** 00008 SUKITTI PUNAK (04/30/2010) 00009 UPDATE (08/30/2010) 00010 ******************************************************************************/ 00011 #include "TAPsAdvSimConstraint_HEVertexVsHEVertex.hpp" 00012 // Using Inclusion Model (i.e. definitions are included in declarations) 00013 // (this name.cpp is included in name.hpp) 00014 // Each friend is defined directly inside its declaration. 00015 00016 BEGIN_NAMESPACE_TAPs 00017 //============================================================================= 00018 // Constructors 00019 //----------------------------------------------------------------------------- 00020 template <typename T> 00021 AdvSimConstraint_HEVertexVsHEVertex<T>::AdvSimConstraint_HEVertexVsHEVertex ( 00022 //ObjectAdvSimID O1, //!< model#1's advanced simulation ID 00023 HEVertex<T> * pV1, 00024 //ObjectAdvSimID O2, //!< model#2's advanced simulation ID 00025 HEVertex<T> * pV2, 00026 T forceRatio, 00027 T forceScaleForModelA, 00028 T forceScaleForModelB, 00029 T forceThresholdForModelA, 00030 T forceThresholdForModelB 00031 ) 00032 : AdvSimConstraint_Base_AvsB( forceRatio, forceScaleForModelA, forceScaleForModelB, forceThresholdForModelA, forceThresholdForModelB ), 00033 //m_O1( O1 ), 00034 m_pV1( pV1 ), 00035 //m_O2( O2 ), 00036 m_pV2( pV2 ) 00037 {} 00038 //----------------------------------------------------------------------------- 00039 template <typename T> 00040 AdvSimConstraint_HEVertexVsHEVertex<T>::AdvSimConstraint_HEVertexVsHEVertex ( AdvSimConstraint_HEVertexVsHEVertex<T> const &orig ) 00041 : AdvSimConstraint_Base_AvsB( orig ), 00042 //m_O1( orig.m_O1 ), 00043 m_pV1( orig.m_pV1 ), 00044 //m_O2( orig.m_O2 ), 00045 m_pV2( orig.m_pV2 ) 00046 {} 00047 //----------------------------------------------------------------------------- 00048 template <typename T> 00049 AdvSimConstraint_HEVertexVsHEVertex<T>::~AdvSimConstraint_HEVertexVsHEVertex () 00050 {} 00051 //----------------------------------------------------------------------------- 00052 template <typename T> 00053 std::string AdvSimConstraint_HEVertexVsHEVertex<T>::StrInfo () const 00054 { 00055 std::ostringstream ss; 00056 ss << "AdvSimConstraint_HEVertexVsHEVertex<" << typeid(T).name() << ">"; 00057 ss << " has force ratio of " << m_ForceRatio << "."; 00058 return ss.str(); 00059 } 00060 //----------------------------------------------------------------------------- 00061 //============================================================================= 00062 // Assignment Operator 00063 //----------------------------------------------------------------------------- 00064 template <typename T> 00065 AdvSimConstraint_HEVertexVsHEVertex<T> & AdvSimConstraint_HEVertexVsHEVertex<T>::operator= ( AdvSimConstraint_HEVertexVsHEVertex<T> const &orig ) 00066 { 00067 *dynamic_cast< AdvSimConstraint<T>* >( this ) = orig; 00068 //m_O1 = orig.m_O1; 00069 //m_O2 = orig.m_O2; 00070 m_pV1 = orig.m_pV1; 00071 m_pV2 = orig.m_pV2; 00072 return *this; 00073 } 00074 //----------------------------------------------------------------------------- 00075 00076 //----------------------------------------------------------------------------- 00077 template <typename T> 00078 void AdvSimConstraint_HEVertexVsHEVertex<T>::EnforceConstraint () 00079 { 00080 Vector3<T> C = m_ForceRatio*m_pV1->GetPosition() + (1.0 - m_ForceRatio)*m_pV2->GetPosition(); 00081 m_pV1->SetPosition( C ); 00082 m_pV2->SetPosition( C ); 00083 } 00084 //----------------------------------------------------------------------------- 00085 template <typename T> 00086 void AdvSimConstraint_HEVertexVsHEVertex<T>::ClearConstraint () 00087 { 00088 m_pV1->SimFlags.ClearAllSimulationConstraints(); 00089 m_pV2->SimFlags.ClearAllSimulationConstraints(); 00090 } 00091 //----------------------------------------------------------------------------- 00092 00093 00094 //----------------------------------------------------------------------------- 00095 #if defined(__gl_h_) || defined(__GL_H__) 00096 template <typename T> 00097 void AdvSimConstraint_HEVertexVsHEVertex<T>::Draw () const 00098 { 00099 Vector3<T> & v1 = m_pV1->RefToPosition(); 00100 Vector3<T> & v2 = m_pV2->RefToPosition(); 00101 glPushAttrib( GL_ALL_ATTRIB_BITS ); 00102 glDisable( GL_LIGHTING ); 00103 glLineWidth( 3 ); 00104 glColor3f( 1, 0, 0 ); 00105 glBegin( GL_LINES ); 00106 glVertex3fv( v1.GetDataFloat() ); 00107 glVertex3fv( v2.GetDataFloat() ); 00108 glEnd(); 00109 glPopAttrib(); 00110 } 00111 #endif 00112 //----------------------------------------------------------------------------- 00113 //============================================================================= 00114 END_NAMESPACE_TAPs 00115 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00116 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----