Simbody
3.4
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
MobilizedBody_Free.h
Go to the documentation of this file.
1
#ifndef SimTK_SIMBODY_MOBILIZED_BODY_FREE_H_
2
#define SimTK_SIMBODY_MOBILIZED_BODY_FREE_H_
3
4
/* -------------------------------------------------------------------------- *
5
* Simbody(tm) *
6
* -------------------------------------------------------------------------- *
7
* This is part of the SimTK biosimulation toolkit originating from *
8
* Simbios, the NIH National Center for Physics-Based Simulation of *
9
* Biological Structures at Stanford, funded under the NIH Roadmap for *
10
* Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11
* *
12
* Portions copyright (c) 2007-13 Stanford University and the Authors. *
13
* Authors: Michael Sherman *
14
* Contributors: Paul Mitiguy, Peter Eastman *
15
* *
16
* Licensed under the Apache License, Version 2.0 (the "License"); you may *
17
* not use this file except in compliance with the License. You may obtain a *
18
* copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19
* *
20
* Unless required by applicable law or agreed to in writing, software *
21
* distributed under the License is distributed on an "AS IS" BASIS, *
22
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23
* See the License for the specific language governing permissions and *
24
* limitations under the License. *
25
* -------------------------------------------------------------------------- */
26
30
#include "
simbody/internal/MobilizedBody.h
"
31
32
namespace
SimTK {
33
52
class
SimTK_SIMBODY_EXPORT
MobilizedBody
::
Free
:
public
MobilizedBody
{
53
public
:
56
Free
() {}
57
63
Free
(
MobilizedBody
& parent,
const
Transform
& X_PF,
64
const
Body
& bodyInfo,
const
Transform
& X_BM,
Direction
=Forward);
65
68
Free
(
MobilizedBody
& parent,
const
Body
& bodyInfo,
Direction
=Forward);
69
70
Free
&
addBodyDecoration
(
const
Transform
& X_BD,
const
DecorativeGeometry
& g) {
71
(void)
MobilizedBody::addBodyDecoration
(X_BD,g);
return
*
this
;
72
}
73
Free
&
addOutboardDecoration
(
const
Transform
& X_MD,
const
DecorativeGeometry
& g) {
74
(void)
MobilizedBody::addOutboardDecoration
(X_MD,g);
return
*
this
;
75
}
76
Free
&
addInboardDecoration
(
const
Transform
& X_FD,
const
DecorativeGeometry
& g) {
77
(void)
MobilizedBody::addInboardDecoration
(X_FD,g);
return
*
this
;
78
}
79
80
Free
&
setDefaultInboardFrame
(
const
Transform
& X_PF) {
81
(void)
MobilizedBody::setDefaultInboardFrame
(X_PF);
return
*
this
;
82
}
83
84
Free
&
setDefaultOutboardFrame
(
const
Transform
& X_BM) {
85
(void)
MobilizedBody::setDefaultOutboardFrame
(X_BM);
return
*
this
;
86
}
87
88
// Leaves rotation unchanged.
89
Free
& setDefaultTranslation(
const
Vec3
&);
90
91
// Leaves translation unchanged. The internal representation is a quaternion
92
// so we guarantee that the stored value is numerically identical to the
93
// supplied one.
94
Free
& setDefaultQuaternion(
const
Quaternion
&);
95
96
// Leaves translation unchanged. The Rotation matrix will be converted to
97
// a quaternion for storage.
98
Free
& setDefaultRotation(
const
Rotation
&);
99
// Sets both translation and rotation. The Rotation part of the Transform
100
// will be converted to a quaternion for storage.
101
Free
& setDefaultTransform(
const
Transform
&);
102
103
// These return references to the stored default values.
104
const
Vec3
& getDefaultTranslation()
const
;
105
const
Quaternion
& getDefaultQuaternion()
const
;
106
107
// These next two are derived from the stored values.
108
Rotation
getDefaultRotation
()
const
{
109
return
Rotation
(getDefaultQuaternion());
110
}
111
Transform
getDefaultTransform
()
const
{
112
return
Transform
(
Rotation
(getDefaultQuaternion()), getDefaultTranslation());
113
}
114
115
// Generic default state Topology methods.
116
117
// Returns (Vec4,Vec3) where the Vec4 is a normalized quaternion.
118
const
Vec7
& getDefaultQ()
const
;
119
120
// Interprets the supplied q as (Vec4,Vec3) where the Vec4 is a possibly
121
// unnormalized quaternion. The quaternion will be normalized before it is
122
// stored here, so you may not get back exactly the value supplied here if
123
// you call getDefaultQ().
124
Free
& setDefaultQ(
const
Vec7
& q);
125
126
// Note that there is no guarantee that the quaternion part of the returned Q is normalized.
127
const
Vec7
& getQ(
const
State
&)
const
;
128
const
Vec7
& getQDot(
const
State
&)
const
;
129
const
Vec7
& getQDotDot(
const
State
&)
const
;
130
131
const
Vec6
& getU(
const
State
&)
const
;
132
const
Vec6
& getUDot(
const
State
&)
const
;
133
134
// The Q's in the state are set exactly as supplied without normalization.
135
void
setQ(
State
&,
const
Vec7
&)
const
;
136
void
setU(
State
&,
const
Vec6
&)
const
;
137
138
const
Vec7
& getMyPartQ(
const
State
&,
const
Vector
& qlike)
const
;
139
const
Vec6
& getMyPartU(
const
State
&,
const
Vector
& ulike)
const
;
140
141
Vec7
& updMyPartQ(
const
State
&,
Vector
& qlike)
const
;
142
Vec6
& updMyPartU(
const
State
&,
Vector
& ulike)
const
;
143
// hide from Doxygen
145
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS
(
Free
, FreeImpl,
MobilizedBody
);
147
};
148
149
}
// namespace SimTK
150
151
#endif // SimTK_SIMBODY_MOBILIZED_BODY_FREE_H_
152
153
154
Simbody
include
simbody
internal
MobilizedBody_Free.h
Generated on Tue Dec 2 2014 13:13:27 for Simbody by
1.8.1.2