Box2D
2.3.0
A 2D Physics Engine for Games
Main Page
Classes
Files
File List
File Members
Box2D
Dynamics
Joints
b2FrictionJoint.h
1
/*
2
* Copyright (c) 2006-2007 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_FRICTION_JOINT_H
20
#define B2_FRICTION_JOINT_H
21
22
#include <Box2D/Dynamics/Joints/b2Joint.h>
23
25
struct
b2FrictionJointDef
:
public
b2JointDef
26
{
27
b2FrictionJointDef
()
28
{
29
type
= e_frictionJoint;
30
localAnchorA
.
SetZero
();
31
localAnchorB
.
SetZero
();
32
maxForce
= 0.0f;
33
maxTorque
= 0.0f;
34
}
35
38
void
Initialize
(
b2Body
*
bodyA
,
b2Body
*
bodyB
,
const
b2Vec2
& anchor);
39
41
b2Vec2
localAnchorA
;
42
44
b2Vec2
localAnchorB
;
45
47
float32
maxForce
;
48
50
float32
maxTorque
;
51
};
52
55
class
b2FrictionJoint
:
public
b2Joint
56
{
57
public
:
58
b2Vec2
GetAnchorA
()
const
;
59
b2Vec2
GetAnchorB
()
const
;
60
61
b2Vec2
GetReactionForce
(float32 inv_dt)
const
;
62
float32
GetReactionTorque
(float32 inv_dt)
const
;
63
65
const
b2Vec2
&
GetLocalAnchorA
()
const
{
return
m_localAnchorA; }
66
68
const
b2Vec2
&
GetLocalAnchorB
()
const
{
return
m_localAnchorB; }
69
71
void
SetMaxForce
(float32 force);
72
74
float32
GetMaxForce
()
const
;
75
77
void
SetMaxTorque
(float32 torque);
78
80
float32
GetMaxTorque
()
const
;
81
83
void
Dump
();
84
85
protected
:
86
87
friend
class
b2Joint
;
88
89
b2FrictionJoint
(
const
b2FrictionJointDef
* def);
90
91
void
InitVelocityConstraints(
const
b2SolverData& data);
92
void
SolveVelocityConstraints(
const
b2SolverData& data);
93
bool
SolvePositionConstraints(
const
b2SolverData& data);
94
95
b2Vec2
m_localAnchorA;
96
b2Vec2
m_localAnchorB;
97
98
// Solver shared
99
b2Vec2
m_linearImpulse;
100
float32 m_angularImpulse;
101
float32 m_maxForce;
102
float32 m_maxTorque;
103
104
// Solver temp
105
int32 m_indexA;
106
int32 m_indexB;
107
b2Vec2
m_rA;
108
b2Vec2
m_rB;
109
b2Vec2
m_localCenterA;
110
b2Vec2
m_localCenterB;
111
float32 m_invMassA;
112
float32 m_invMassB;
113
float32 m_invIA;
114
float32 m_invIB;
115
b2Mat22
m_linearMass;
116
float32 m_angularMass;
117
};
118
119
#endif
Generated on Mon Apr 20 2015 17:57:20 for Box2D by
1.8.8