Bullet Collision Detection & Physics Library: btManifoldPoint.h Source File

Bullet Collision Detection & Physics Library

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

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"
20 #include "LinearMath/btTransformUtil.h"
21
22 #ifdef PFX_USE_FREE_VECTORMATH
23 #include "physics_effects/base_level/solver/pfx_constraint_row.h"
24 typedef sce::PhysicsEffects::PfxConstraintRow btConstraintRow;
25 #else
26 // Don't change following order of parameters
27 ATTRIBUTE_ALIGNED16(struct) btConstraintRow {
28 btScalar m_normal[3];
29 btScalar m_rhs;
30 btScalar m_jacDiagInv;
31 btScalar m_lowerLimit;
32 btScalar m_upperLimit;
33 btScalar m_accumImpulse;
34 };
35 typedef btConstraintRow PfxConstraintRow;
36 #endif //PFX_USE_FREE_VECTORMATH
37
38
39
42 class btManifoldPoint
43 {
44 public:
45 btManifoldPoint()
46 :m_userPersistentData(0),
47 m_lateralFrictionInitialized(false),
48 m_appliedImpulse(0.f),
49 m_appliedImpulseLateral1(0.f),
50 m_appliedImpulseLateral2(0.f),
51 m_contactMotion1(0.f),
52 m_contactMotion2(0.f),
53 m_contactCFM1(0.f),
54 m_contactCFM2(0.f),
55 m_lifeTime(0)
56 {
57 }
58
59 btManifoldPoint( const btVector3 &pointA, const btVector3 &pointB,
60 const btVector3 &normal,
61 btScalar distance ) :
62 m_localPointA( pointA ),
63 m_localPointB( pointB ),
64 m_normalWorldOnB( normal ),
65 m_distance1( distance ),
66 m_combinedFriction(btScalar(0.)),
67 m_combinedRollingFriction(btScalar(0.)),
68 m_combinedRestitution(btScalar(0.)),
69 m_userPersistentData(0),
70 m_lateralFrictionInitialized(false),
71 m_appliedImpulse(0.f),
72 m_appliedImpulseLateral1(0.f),
73 m_appliedImpulseLateral2(0.f),
74 m_contactMotion1(0.f),
75 m_contactMotion2(0.f),
76 m_contactCFM1(0.f),
77 m_contactCFM2(0.f),
78 m_lifeTime(0)
79 {
80
81 }
82
83
84
85 btVector3 m_localPointA;
86 btVector3 m_localPointB;
87 btVector3 m_positionWorldOnB;
89 btVector3 m_positionWorldOnA;
90 btVector3 m_normalWorldOnB;
91
92 btScalar m_distance1;
93 btScalar m_combinedFriction;
94 btScalar m_combinedRollingFriction;
95 btScalar m_combinedRestitution;
96
97 //BP mod, store contact triangles.
98 int m_partId0;
99 int m_partId1;
100 int m_index0;
101 int m_index1;
102
103 mutable void* m_userPersistentData;
104 bool m_lateralFrictionInitialized;
105
106 btScalar m_appliedImpulse;
107 btScalar m_appliedImpulseLateral1;
108 btScalar m_appliedImpulseLateral2;
109 btScalar m_contactMotion1;
110 btScalar m_contactMotion2;
111 btScalar m_contactCFM1;
112 btScalar m_contactCFM2;
113
114 int m_lifeTime;//lifetime of the contactpoint in frames
115
116 btVector3 m_lateralFrictionDir1;
117 btVector3 m_lateralFrictionDir2;
118
119
120
121
122 btScalar getDistance() const
123 {
124 return m_distance1;
125 }
126 int getLifeTime() const
127 {
128 return m_lifeTime;
129 }
130
131 const btVector3& getPositionWorldOnA() const {
132 return m_positionWorldOnA;
133 // return m_positionWorldOnB + m_normalWorldOnB * m_distance1;
134 }
135
136 const btVector3& getPositionWorldOnB() const
137 {
138 return m_positionWorldOnB;
139 }
140
141 void setDistance(btScalar dist)
142 {
143 m_distance1 = dist;
144 }
145
147 btScalar getAppliedImpulse() const
148 {
149 return m_appliedImpulse;
150 }
151
152
153
154 };
155
156 #endif //BT_MANIFOLD_CONTACT_POINT_H
btTransformUtil.h
btManifoldPoint::m_contactCFM2
btScalar m_contactCFM2
Definition: btManifoldPoint.h:112
btManifoldPoint::m_partId1
int m_partId1
Definition: btManifoldPoint.h:99
btManifoldPoint::m_lateralFrictionDir1
btVector3 m_lateralFrictionDir1
Definition: btManifoldPoint.h:116
btVector3.h
btConstraintRow
Definition: btManifoldPoint.h:27
btManifoldPoint::m_appliedImpulseLateral1
btScalar m_appliedImpulseLateral1
Definition: btManifoldPoint.h:107
btManifoldPoint::getLifeTime
int getLifeTime() const
Definition: btManifoldPoint.h:126
btManifoldPoint::m_combinedRestitution
btScalar m_combinedRestitution
Definition: btManifoldPoint.h:95
btManifoldPoint::m_appliedImpulse
btScalar m_appliedImpulse
Definition: btManifoldPoint.h:106
PfxConstraintRow
btConstraintRow PfxConstraintRow
Definition: btManifoldPoint.h:35
btManifoldPoint
ManifoldContactPoint collects and maintains persistent contactpoints.
Definition: btManifoldPoint.h:42
btManifoldPoint::m_contactMotion1
btScalar m_contactMotion1
Definition: btManifoldPoint.h:109
btManifoldPoint::btManifoldPoint
btManifoldPoint(const btVector3 &pointA, const btVector3 &pointB, const btVector3 &normal, btScalar distance)
Definition: btManifoldPoint.h:59
btManifoldPoint::m_combinedRollingFriction
btScalar m_combinedRollingFriction
Definition: btManifoldPoint.h:94
btManifoldPoint::m_normalWorldOnB
btVector3 m_normalWorldOnB
Definition: btManifoldPoint.h:90
btManifoldPoint::m_userPersistentData
void * m_userPersistentData
Definition: btManifoldPoint.h:103
btManifoldPoint::m_positionWorldOnB
btVector3 m_positionWorldOnB
Definition: btManifoldPoint.h:87
btManifoldPoint::m_localPointA
btVector3 m_localPointA
Definition: btManifoldPoint.h:85
btManifoldPoint::m_appliedImpulseLateral2
btScalar m_appliedImpulseLateral2
Definition: btManifoldPoint.h:108
btManifoldPoint::getAppliedImpulse
btScalar getAppliedImpulse() const
this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver...
Definition: btManifoldPoint.h:147
btManifoldPoint::m_lifeTime
int m_lifeTime
Definition: btManifoldPoint.h:114
btManifoldPoint::m_contactCFM1
btScalar m_contactCFM1
Definition: btManifoldPoint.h:111
btConstraintRow::m_accumImpulse
btScalar m_accumImpulse
Definition: btManifoldPoint.h:33
btManifoldPoint::m_positionWorldOnA
btVector3 m_positionWorldOnA
m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity ...
Definition: btManifoldPoint.h:89
btManifoldPoint::getPositionWorldOnB
const btVector3 & getPositionWorldOnB() const
Definition: btManifoldPoint.h:136
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:83
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:64
btConstraintRow::m_lowerLimit
btScalar m_lowerLimit
Definition: btManifoldPoint.h:31
btManifoldPoint::m_index1
int m_index1
Definition: btManifoldPoint.h:101
btManifoldPoint::m_distance1
btScalar m_distance1
Definition: btManifoldPoint.h:92
btManifoldPoint::m_localPointB
btVector3 m_localPointB
Definition: btManifoldPoint.h:86
btManifoldPoint::setDistance
void setDistance(btScalar dist)
Definition: btManifoldPoint.h:141
btManifoldPoint::m_contactMotion2
btScalar m_contactMotion2
Definition: btManifoldPoint.h:110
btConstraintRow::m_upperLimit
btScalar m_upperLimit
Definition: btManifoldPoint.h:32
btManifoldPoint::m_combinedFriction
btScalar m_combinedFriction
Definition: btManifoldPoint.h:93
btManifoldPoint::m_lateralFrictionInitialized
bool m_lateralFrictionInitialized
Definition: btManifoldPoint.h:104
btManifoldPoint::getPositionWorldOnA
const btVector3 & getPositionWorldOnA() const
Definition: btManifoldPoint.h:131
btManifoldPoint::btManifoldPoint
btManifoldPoint()
Definition: btManifoldPoint.h:45
btConstraintRow::m_rhs
btScalar m_rhs
Definition: btManifoldPoint.h:29
btConstraintRow::m_jacDiagInv
btScalar m_jacDiagInv
Definition: btManifoldPoint.h:30
btManifoldPoint::m_lateralFrictionDir2
btVector3 m_lateralFrictionDir2
Definition: btManifoldPoint.h:117
btManifoldPoint::getDistance
btScalar getDistance() const
Definition: btManifoldPoint.h:122
btManifoldPoint::m_partId0
int m_partId0
Definition: btManifoldPoint.h:98
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:278
btManifoldPoint::m_index0
int m_index0
Definition: btManifoldPoint.h:100