Bullet Collision Detection & Physics Library
btManifoldPoint.h
Go to the documentation of this file.
1 /*
2 Bullet Continuous Collision Detection and Physics Library
3 Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
4 
5 This software is provided 'as-is', without any express or implied warranty.
6 In no event will the authors be held liable for any damages arising from the use of this software.
7 Permission is granted to anyone to use this software for any purpose,
8 including commercial applications, and to alter it and redistribute it freely,
9 subject to the following restrictions:
10 
11 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
12 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
13 3. This notice may not be removed or altered from any source distribution.
14 */
15 
16 #ifndef BT_MANIFOLD_CONTACT_POINT_H
17 #define BT_MANIFOLD_CONTACT_POINT_H
18 
19 #include "LinearMath/btVector3.h"
21 
22 #ifdef PFX_USE_FREE_VECTORMATH
23 #include "physics_effects/base_level/solver/pfx_constraint_row.h"
25 #else
26 // Don't change following order of parameters
29 {
30  btScalar m_normal[3];
36 };
38 #endif //PFX_USE_FREE_VECTORMATH
39 
41 {
47 };
48 
52 {
53 public:
57  m_appliedImpulse(0.f),
58  m_prevRHS(0.f),
61  m_contactMotion1(0.f),
62  m_contactMotion2(0.f),
63  m_contactCFM(0.f),
64  m_contactERP(0.f),
65  m_frictionCFM(0.f),
66  m_lifeTime(0)
67  {
68  }
69 
70  btManifoldPoint(const btVector3& pointA, const btVector3& pointB,
71  const btVector3& normal,
72  btScalar distance) : m_localPointA(pointA),
73  m_localPointB(pointB),
74  m_normalWorldOnB(normal),
75  m_distance1(distance),
82  m_appliedImpulse(0.f),
83  m_prevRHS(0.f),
86  m_contactMotion1(0.f),
87  m_contactMotion2(0.f),
88  m_contactCFM(0.f),
89  m_contactERP(0.f),
90  m_frictionCFM(0.f),
91  m_lifeTime(0)
92  {
93  }
94 
101 
104  btScalar m_combinedRollingFriction; //torsional friction orthogonal to contact normal, useful to make spheres stop rolling forever
105  btScalar m_combinedSpinningFriction; //torsional friction around contact normal, useful for grasping objects
107 
108  //BP mod, store contact triangles.
111  int m_index0;
112  int m_index1;
113 
114  mutable void* m_userPersistentData;
115  //bool m_lateralFrictionInitialized;
117 
124 
125  union {
128  };
129 
130  union {
133  };
134 
136 
137  int m_lifeTime; //lifetime of the contactpoint in frames
138 
141 
143  {
144  return m_distance1;
145  }
146  int getLifeTime() const
147  {
148  return m_lifeTime;
149  }
150 
152  {
153  return m_positionWorldOnA;
154  // return m_positionWorldOnB + m_normalWorldOnB * m_distance1;
155  }
156 
158  {
159  return m_positionWorldOnB;
160  }
161 
163  {
164  m_distance1 = dist;
165  }
166 
169  {
170  return m_appliedImpulse;
171  }
172 };
173 
174 #endif //BT_MANIFOLD_CONTACT_POINT_H
btManifoldPoint::m_lateralFrictionDir2
btVector3 m_lateralFrictionDir2
Definition: btManifoldPoint.h:140
btManifoldPoint::m_contactMotion2
btScalar m_contactMotion2
Definition: btManifoldPoint.h:123
btManifoldPoint::m_contactCFM
btScalar m_contactCFM
Definition: btManifoldPoint.h:126
btManifoldPoint::m_contactERP
btScalar m_contactERP
Definition: btManifoldPoint.h:131
btManifoldPoint::m_contactPointFlags
int m_contactPointFlags
Definition: btManifoldPoint.h:116
btManifoldPoint::m_localPointA
btVector3 m_localPointA
Definition: btManifoldPoint.h:95
BT_CONTACT_FLAG_HAS_CONTACT_CFM
Definition: btManifoldPoint.h:43
btManifoldPoint::getPositionWorldOnA
const btVector3 & getPositionWorldOnA() const
Definition: btManifoldPoint.h:151
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:314
btManifoldPoint::m_index1
int m_index1
Definition: btManifoldPoint.h:112
btManifoldPoint::m_normalWorldOnB
btVector3 m_normalWorldOnB
Definition: btManifoldPoint.h:100
btManifoldPoint::m_partId1
int m_partId1
Definition: btManifoldPoint.h:110
btManifoldPoint::getDistance
btScalar getDistance() const
Definition: btManifoldPoint.h:142
btTransformUtil.h
btManifoldPoint::m_combinedRestitution
btScalar m_combinedRestitution
Definition: btManifoldPoint.h:106
PfxConstraintRow
btConstraintRow PfxConstraintRow
Definition: btManifoldPoint.h:37
BT_CONTACT_FLAG_FRICTION_ANCHOR
Definition: btManifoldPoint.h:46
btManifoldPoint::setDistance
void setDistance(btScalar dist)
Definition: btManifoldPoint.h:162
btConstraintRow::m_accumImpulse
btScalar m_accumImpulse
Definition: btManifoldPoint.h:35
btManifoldPoint::m_partId0
int m_partId0
Definition: btManifoldPoint.h:109
btVector3.h
btManifoldPoint::m_combinedContactDamping1
btScalar m_combinedContactDamping1
Definition: btManifoldPoint.h:132
btManifoldPoint::m_positionWorldOnB
btVector3 m_positionWorldOnB
Definition: btManifoldPoint.h:97
btManifoldPoint
ManifoldContactPoint collects and maintains persistent contactpoints.
Definition: btManifoldPoint.h:51
btManifoldPoint::m_contactMotion1
btScalar m_contactMotion1
Definition: btManifoldPoint.h:122
btManifoldPoint::m_combinedSpinningFriction
btScalar m_combinedSpinningFriction
Definition: btManifoldPoint.h:105
btManifoldPoint::m_userPersistentData
void * m_userPersistentData
Definition: btManifoldPoint.h:114
btManifoldPoint::m_distance1
btScalar m_distance1
Definition: btManifoldPoint.h:102
btConstraintRow
Definition: btManifoldPoint.h:27
btManifoldPoint::btManifoldPoint
btManifoldPoint(const btVector3 &pointA, const btVector3 &pointB, const btVector3 &normal, btScalar distance)
Definition: btManifoldPoint.h:70
btManifoldPoint::m_frictionCFM
btScalar m_frictionCFM
Definition: btManifoldPoint.h:135
BT_CONTACT_FLAG_CONTACT_STIFFNESS_DAMPING
Definition: btManifoldPoint.h:45
btManifoldPoint::m_prevRHS
btScalar m_prevRHS
Definition: btManifoldPoint.h:119
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:80
btManifoldPoint::getPositionWorldOnB
const btVector3 & getPositionWorldOnB() const
Definition: btManifoldPoint.h:157
btManifoldPoint::m_combinedRollingFriction
btScalar m_combinedRollingFriction
Definition: btManifoldPoint.h:104
BT_CONTACT_FLAG_HAS_CONTACT_ERP
Definition: btManifoldPoint.h:44
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:99
btManifoldPoint::m_appliedImpulseLateral1
btScalar m_appliedImpulseLateral1
Definition: btManifoldPoint.h:120
btManifoldPoint::m_localPointB
btVector3 m_localPointB
Definition: btManifoldPoint.h:96
btManifoldPoint::getLifeTime
int getLifeTime() const
Definition: btManifoldPoint.h:146
btConstraintRow::m_upperLimit
btScalar m_upperLimit
Definition: btManifoldPoint.h:34
btManifoldPoint::m_positionWorldOnA
btVector3 m_positionWorldOnA
m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity
Definition: btManifoldPoint.h:99
btManifoldPoint::getAppliedImpulse
btScalar getAppliedImpulse() const
this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver
Definition: btManifoldPoint.h:168
btConstraintRow::m_lowerLimit
btScalar m_lowerLimit
Definition: btManifoldPoint.h:33
btManifoldPoint::m_lifeTime
int m_lifeTime
Definition: btManifoldPoint.h:137
btManifoldPoint::m_lateralFrictionDir1
btVector3 m_lateralFrictionDir1
Definition: btManifoldPoint.h:139
btManifoldPoint::m_appliedImpulse
btScalar m_appliedImpulse
Definition: btManifoldPoint.h:118
btManifoldPoint::btManifoldPoint
btManifoldPoint()
Definition: btManifoldPoint.h:54
btConstraintRow::m_rhs
btScalar m_rhs
Definition: btManifoldPoint.h:31
btConstraintRow::m_jacDiagInv
btScalar m_jacDiagInv
Definition: btManifoldPoint.h:32
btManifoldPoint::m_index0
int m_index0
Definition: btManifoldPoint.h:111
btManifoldPoint::m_appliedImpulseLateral2
btScalar m_appliedImpulseLateral2
Definition: btManifoldPoint.h:121
btManifoldPoint::m_combinedFriction
btScalar m_combinedFriction
Definition: btManifoldPoint.h:103
BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED
Definition: btManifoldPoint.h:42
btManifoldPoint::m_combinedContactStiffness1
btScalar m_combinedContactStiffness1
Definition: btManifoldPoint.h:127
btContactPointFlags
btContactPointFlags
Definition: btManifoldPoint.h:40