Logo Search packages:      
Sourcecode: blender version File versions  Download package

ManifoldPoint.h

#ifndef MANIFOLD_CONTACT_POINT_H
#define MANIFOLD_CONTACT_POINT_H

#include "SimdVector3.h"

/// ManifoldContactPoint collects and maintains persistent contactpoints.
/// used to improve stability and performance of rigidbody dynamics response.
00008 class ManifoldPoint
      {
            public:
                  ManifoldPoint()
                  {
                  }

                  ManifoldPoint( const SimdVector3 &pointA, const SimdVector3 &pointB, 
                              const SimdVector3 &normal, 
                              SimdScalar distance ) :
                              m_localPointA( pointA ), 
                              m_localPointB( pointB ), 
                              m_normalWorldOnB( normal ), 
                              m_distance1( distance )
                              ,m_appliedImpulse(0.f),
                              m_lifeTime(0)
                  {}

                  SimdVector3 m_localPointA;                
                  SimdVector3 m_localPointB;                
                  SimdVector3 m_positionWorldOnB;
                  ///m_positionWorldOnA is redundant information, see GetPositionWorldOnA(), but for clarity
00030                   SimdVector3 m_positionWorldOnA;
                  SimdVector3 m_normalWorldOnB;
                  float m_distance1;
                  /// total applied impulse during most recent frame
00034                   float m_appliedImpulse;
                  int         m_lifeTime;//lifetime of the contactpoint in frames
                  
                  float GetDistance() const
                  {
                        return m_distance1;
                  }
                  int   GetLifeTime() const
                  {
                        return m_lifeTime;
                  }

                  SimdVector3 GetPositionWorldOnA() {
                        return m_positionWorldOnA;
//                      return m_positionWorldOnB + m_normalWorldOnB * m_distance1;
                  }

                  const SimdVector3& GetPositionWorldOnB()
                  {
                        return m_positionWorldOnB;
                  }

                  void  SetDistance(float dist)
                  {
                        m_distance1 = dist;
                  }
                  
                  

      };

#endif //MANIFOLD_CONTACT_POINT_H

Generated by  Doxygen 1.6.0   Back to index