TAPs 0.7.7.3
TAPsAdvSimConstraint_HEVertexVsHEVertex.cpp
Go to the documentation of this file.
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----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines