Newton Dynamics
4.00
ndMultiBodyVehicleTorsionBar.h
1
/* Copyright (c) <2003-2022> <Julio Jerez, Newton Game Dynamics>
2
*
3
* This software is provided 'as-is', without any express or implied
4
* warranty. In no event will the authors be held liable for any damages
5
* arising from the use of this software.
6
*
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
*
11
* 1. The origin of this software must not be misrepresented; you must not
12
* claim that you wrote the original software. If you use this software
13
* in a product, an acknowledgment in the product documentation would be
14
* appreciated but is not required.
15
*
16
* 2. Altered source versions must be plainly marked as such, and must not be
17
* misrepresented as being the original software.
18
*
19
* 3. This notice may not be removed or altered from any source distribution.
20
*/
21
22
#ifndef __ND_MULTIBODY_VEHICLE_TORSION_BAR_H__
23
#define __ND_MULTIBODY_VEHICLE_TORSION_BAR_H__
24
25
#include "ndNewtonStdafx.h"
26
#include "ndJointGear.h"
27
28
class
ndMultiBodyVehicle
;
29
30
class
ndMultiBodyVehicleTorsionBar
:
public
ndJointBilateralConstraint
31
{
32
public
:
33
D_CLASS_REFLECTION(
ndMultiBodyVehicleTorsionBar
);
34
D_NEWTON_API
ndMultiBodyVehicleTorsionBar
(
const
ndLoadSaveBase::ndLoadDescriptor
& desc);
35
D_NEWTON_API
ndMultiBodyVehicleTorsionBar
(
const
ndMultiBodyVehicle
*
const
chassis,
ndBodyKinematic
*
const
fixedbody);
36
37
D_NEWTON_API
void
AddAxel(
const
ndBodyKinematic
*
const
leftTire,
const
ndBodyKinematic
*
const
rightTire);
38
D_NEWTON_API
void
SetTorsionTorque(ndFloat32 springK, ndFloat32 damperC, ndFloat32 springDamperRegularizer);
39
40
protected
:
41
class
ndAxles
42
{
43
public
:
44
ndAxles
()
45
:m_leftTire(
nullptr
)
46
,m_rightTire(
nullptr
)
47
,m_axleAngle(ndFloat32(0.0f))
48
{
49
}
50
const
ndBodyKinematic
* m_leftTire;
51
const
ndBodyKinematic
* m_rightTire;
52
ndFloat32 m_axleAngle;
53
};
54
55
void
DebugJoint(
ndConstraintDebugCallback
&)
const
{}
56
void
JacobianDerivative(
ndConstraintDescritor
& desc);
57
void
Save(
const
ndLoadSaveBase::ndSaveDescriptor
& desc)
const
;
58
59
ndAxles m_axles[2];
60
ndFloat32 m_springK;
61
ndFloat32 m_damperC;
62
ndFloat32 m_springDamperRegularizer;
63
ndInt32 m_axleCount;
64
friend
class
ndMultiBodyVehicle
;
65
};
66
67
#endif
ndMultiBodyVehicle
Definition:
ndMultiBodyVehicle.h:41
ndMultiBodyVehicleTorsionBar
Definition:
ndMultiBodyVehicleTorsionBar.h:31
ndConstraintDescritor
Definition:
ndConstraint.h:179
ndJointBilateralConstraint
Definition:
ndJointBilateralConstraint.h:53
ndConstraintDebugCallback
Definition:
ndConstraint.h:42
ndBodyKinematic
Definition:
ndBodyKinematic.h:40
ndLoadSaveBase::ndLoadDescriptor
Definition:
ndSaveLoadSytem.h:59
ndMultiBodyVehicleTorsionBar::ndAxles
Definition:
ndMultiBodyVehicleTorsionBar.h:42
ndLoadSaveBase::ndSaveDescriptor
Definition:
ndSaveLoadSytem.h:93
newton-dynamics
newton-4.00
sdk
dNewton
dModels
dVehicle
ndMultiBodyVehicleTorsionBar.h
Generated by
1.8.20