Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
externals
Box2D
Box2D
Dynamics
Contacts
b2ContactSolver.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
3
*
4
* This software is provided 'as-is', without any express or implied
5
* warranty. In no event will the authors be held liable for any damages
6
* 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
9
* freely, subject to the following restrictions:
10
* 1. The origin of this software must not be misrepresented; you must not
11
* claim that you wrote the original software. If you use this software
12
* in a product, an acknowledgment in the product documentation would be
13
* appreciated but is not required.
14
* 2. Altered source versions must be plainly marked as such, and must not be
15
* misrepresented as being the original software.
16
* 3. This notice may not be removed or altered from any source distribution.
17
*/
18
19
#ifndef B2_CONTACT_SOLVER_H
20
#define B2_CONTACT_SOLVER_H
21
22
#include <
Box2D/Common/b2Math.h
>
23
#include <
Box2D/Collision/b2Collision.h
>
24
#include <
Box2D/Dynamics/b2TimeStep.h
>
25
26
class
b2Contact
;
27
class
b2Body
;
28
class
b2StackAllocator
;
29
struct
b2ContactPositionConstraint
;
30
31
struct
b2VelocityConstraintPoint
32
{
33
b2Vec2
rA
;
34
b2Vec2
rB
;
35
float32
normalImpulse
;
36
float32
tangentImpulse
;
37
float32
normalMass
;
38
float32
tangentMass
;
39
float32
velocityBias
;
40
};
41
42
struct
b2ContactVelocityConstraint
43
{
44
b2VelocityConstraintPoint
points
[
b2_maxManifoldPoints
];
45
b2Vec2
normal
;
46
b2Mat22
normalMass
;
47
b2Mat22
K
;
48
int32
indexA
;
49
int32
indexB
;
50
float32
invMassA,
invMassB
;
51
float32
invIA,
invIB
;
52
float32
friction
;
53
float32
restitution
;
54
float32
tangentSpeed
;
55
int32
pointCount
;
56
int32
contactIndex
;
57
};
58
59
struct
b2ContactSolverDef
60
{
61
b2TimeStep
step
;
62
b2Contact
**
contacts
;
63
int32
count
;
64
b2Position
*
positions
;
65
b2Velocity
*
velocities
;
66
b2StackAllocator
*
allocator
;
67
};
68
69
class
b2ContactSolver
70
{
71
public
:
72
b2ContactSolver
(
b2ContactSolverDef
* def);
73
~
b2ContactSolver
();
74
75
void
InitializeVelocityConstraints();
76
77
void
WarmStart();
78
void
SolveVelocityConstraints();
79
void
StoreImpulses();
80
81
bool
SolvePositionConstraints();
82
bool
SolveTOIPositionConstraints(
int32
toiIndexA,
int32
toiIndexB);
83
84
b2TimeStep
m_step
;
85
b2Position
*
m_positions
;
86
b2Velocity
*
m_velocities
;
87
b2StackAllocator
*
m_allocator
;
88
b2ContactPositionConstraint
*
m_positionConstraints
;
89
b2ContactVelocityConstraint
*
m_velocityConstraints
;
90
b2Contact
**
m_contacts
;
91
int
m_count
;
92
};
93
94
#endif
95
b2VelocityConstraintPoint::normalMass
float32 normalMass
Definition:
b2ContactSolver.h:37
b2ContactVelocityConstraint
Definition:
b2ContactSolver.h:42
b2Velocity
This is an internal structure.
Definition:
b2TimeStep.h:56
b2Math.h
b2ContactSolver::m_positionConstraints
b2ContactPositionConstraint * m_positionConstraints
Definition:
b2ContactSolver.h:88
b2ContactSolver::m_velocities
b2Velocity * m_velocities
Definition:
b2ContactSolver.h:86
b2ContactSolverDef::step
b2TimeStep step
Definition:
b2ContactSolver.h:61
b2VelocityConstraintPoint::normalImpulse
float32 normalImpulse
Definition:
b2ContactSolver.h:35
b2ContactSolver::m_step
b2TimeStep m_step
Definition:
b2ContactSolver.h:84
b2ContactSolverDef::count
int32 count
Definition:
b2ContactSolver.h:63
b2ContactVelocityConstraint::tangentSpeed
float32 tangentSpeed
Definition:
b2ContactSolver.h:54
b2_maxManifoldPoints
#define b2_maxManifoldPoints
Definition:
b2Settings.h:50
b2VelocityConstraintPoint::tangentMass
float32 tangentMass
Definition:
b2ContactSolver.h:38
b2TimeStep
This is an internal structure.
Definition:
b2TimeStep.h:38
b2Contact
Definition:
b2Contact.h:77
b2ContactSolver::m_count
int m_count
Definition:
b2ContactSolver.h:91
b2ContactSolver::m_contacts
b2Contact ** m_contacts
Definition:
b2ContactSolver.h:90
b2Vec2
A 2D column vector.
Definition:
b2Math.h:52
b2ContactSolver::m_positions
b2Position * m_positions
Definition:
b2ContactSolver.h:85
b2ContactVelocityConstraint::restitution
float32 restitution
Definition:
b2ContactSolver.h:53
points
GLuint GLenum GLsizei GLsizei GLboolean void * points
int32
signed int int32
Definition:
b2Settings.h:31
b2VelocityConstraintPoint::velocityBias
float32 velocityBias
Definition:
b2ContactSolver.h:39
b2ContactVelocityConstraint::K
b2Mat22 K
Definition:
b2ContactSolver.h:47
b2Body
A rigid body. These are created via b2World::CreateBody.
Definition:
b2Body.h:126
b2TimeStep.h
b2VelocityConstraintPoint::rA
b2Vec2 rA
Definition:
b2ContactSolver.h:33
b2ContactVelocityConstraint::invIB
float32 invIB
Definition:
b2ContactSolver.h:51
b2StackAllocator
Definition:
b2StackAllocator.h:37
b2ContactPositionConstraint
Definition:
b2ContactSolver.cpp:31
b2ContactVelocityConstraint::normal
b2Vec2 normal
Definition:
b2ContactSolver.h:45
b2ContactSolverDef::positions
b2Position * positions
Definition:
b2ContactSolver.h:64
b2ContactVelocityConstraint::friction
float32 friction
Definition:
b2ContactSolver.h:52
b2VelocityConstraintPoint::tangentImpulse
float32 tangentImpulse
Definition:
b2ContactSolver.h:36
b2ContactSolverDef::contacts
b2Contact ** contacts
Definition:
b2ContactSolver.h:62
b2ContactVelocityConstraint::pointCount
int32 pointCount
Definition:
b2ContactSolver.h:55
b2ContactSolver::m_velocityConstraints
b2ContactVelocityConstraint * m_velocityConstraints
Definition:
b2ContactSolver.h:89
b2Mat22
A 2-by-2 matrix. Stored in column-major order.
Definition:
b2Math.h:182
b2VelocityConstraintPoint::rB
b2Vec2 rB
Definition:
b2ContactSolver.h:34
b2ContactVelocityConstraint::indexA
int32 indexA
Definition:
b2ContactSolver.h:48
b2Position
This is an internal structure.
Definition:
b2TimeStep.h:49
b2ContactVelocityConstraint::invMassB
float32 invMassB
Definition:
b2ContactSolver.h:50
b2ContactVelocityConstraint::indexB
int32 indexB
Definition:
b2ContactSolver.h:49
b2Collision.h
b2ContactSolverDef
Definition:
b2ContactSolver.h:59
b2ContactVelocityConstraint::normalMass
b2Mat22 normalMass
Definition:
b2ContactSolver.h:46
b2ContactSolver
Definition:
b2ContactSolver.h:69
b2VelocityConstraintPoint
Definition:
b2ContactSolver.h:31
b2ContactSolverDef::allocator
b2StackAllocator * allocator
Definition:
b2ContactSolver.h:66
b2ContactSolver::m_allocator
b2StackAllocator * m_allocator
Definition:
b2ContactSolver.h:87
b2ContactSolverDef::velocities
b2Velocity * velocities
Definition:
b2ContactSolver.h:65
float32
float float32
Definition:
b2Settings.h:35
b2ContactVelocityConstraint::contactIndex
int32 contactIndex
Definition:
b2ContactSolver.h:56
mvsim
Author(s):
autogenerated on Fri May 7 2021 03:05:51