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_SphericalCoords.h
Go to the documentation of this file.
1
#ifndef SimTK_SIMBODY_MOBILIZED_BODY_SPHERICALCOORDS_H_
2
#define SimTK_SIMBODY_MOBILIZED_BODY_SPHERICALCOORDS_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: Christopher Bruns *
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
77
class
SimTK_SIMBODY_EXPORT
MobilizedBody
::
SphericalCoords
:
public
MobilizedBody
{
78
public
:
81
SphericalCoords
() {}
82
91
SphericalCoords
(
MobilizedBody
& parent,
const
Transform
& X_PF,
92
const
Body
& bodyInfo,
const
Transform
& X_BM,
93
Direction
=Forward);
94
97
SphericalCoords
(
MobilizedBody
& parent,
const
Body
& bodyInfo,
98
Direction
=Forward);
99
100
102
SphericalCoords
(
MobilizedBody
& parent,
const
Transform
& X_PF,
103
const
Body
& bodyInfo,
const
Transform
& X_BM,
104
Real
azimuthOffset,
bool
azimuthNegated,
105
Real
zenithOffset,
bool
zenithNegated,
106
CoordinateAxis
radialAxis,
bool
radialNegated,
107
Direction
=Forward);
108
109
SphericalCoords
&
addBodyDecoration
(
const
Transform
& X_BD,
const
DecorativeGeometry
& g) {
110
(void)
MobilizedBody::addBodyDecoration
(X_BD,g);
return
*
this
;
111
}
112
SphericalCoords
&
addOutboardDecoration
(
const
Transform
& X_MD,
const
DecorativeGeometry
& g) {
113
(void)
MobilizedBody::addOutboardDecoration
(X_MD,g);
return
*
this
;
114
}
115
SphericalCoords
&
addInboardDecoration
(
const
Transform
& X_FD,
const
DecorativeGeometry
& g) {
116
(void)
MobilizedBody::addInboardDecoration
(X_FD,g);
return
*
this
;
117
}
118
119
SphericalCoords
&
setDefaultInboardFrame
(
const
Transform
& X_PF) {
120
(void)
MobilizedBody::setDefaultInboardFrame
(X_PF);
return
*
this
;
121
}
122
123
SphericalCoords
&
setDefaultOutboardFrame
(
const
Transform
& X_BM) {
124
(void)
MobilizedBody::setDefaultOutboardFrame
(X_BM);
return
*
this
;
125
}
126
127
// Friendly, mobilizer-specific access to coordinates and speeds.
128
SphericalCoords
&
setDefaultAngles
(
const
Vec2
& a) {
129
Vec3
q = getDefaultQ(); q.
updSubVec
<2>(0) = a; setDefaultQ(q);
130
return
*
this
;
131
}
132
SphericalCoords
&
setDefaultRadius
(
Real
r) {
133
Vec3
q = getDefaultQ(); q[2] = r; setDefaultQ(q);
134
return
*
this
;
135
}
136
SphericalCoords
& setRadialAxis(
CoordinateAxis
);
137
SphericalCoords
& setNegateAzimuth(
bool
);
138
SphericalCoords
& setNegateZenith(
bool
);
139
SphericalCoords
& setNegateRadial(
bool
);
140
141
const
Vec2
&
getDefaultAngles
()
const
{
return
getDefaultQ().
getSubVec
<2>(0);}
142
Real
getDefaultTranslation
()
const
{
return
getDefaultQ()[2];}
143
144
CoordinateAxis
getRadialAxis()
const
;
145
bool
isAzimuthNegated()
const
;
146
bool
isZenithNegated()
const
;
147
bool
isRadialNegated()
const
;
148
149
void
setAngles
(
State
& s,
const
Vec2
& a) {setOneQ(s,0,a[0]); setOneQ(s,1,a[1]);}
150
void
setRadius
(
State
& s,
Real
r) {setOneQ(s,2,r);}
151
152
const
Vec2
&
getAngles
(
const
State
& s)
const
{
return
getQ(s).
getSubVec
<2>(0);}
153
Real
getRadius
(
const
State
& s)
const
{
return
getQ(s)[2];}
154
155
// Generic default state Topology methods.
156
const
Vec3
& getDefaultQ()
const
;
157
SphericalCoords
& setDefaultQ(
const
Vec3
& q);
158
159
const
Vec3
& getQ(
const
State
&)
const
;
160
const
Vec3
& getQDot(
const
State
&)
const
;
161
const
Vec3
& getQDotDot(
const
State
&)
const
;
162
const
Vec3
& getU(
const
State
&)
const
;
163
const
Vec3
& getUDot(
const
State
&)
const
;
164
165
void
setQ(
State
&,
const
Vec3
&)
const
;
166
void
setU(
State
&,
const
Vec3
&)
const
;
167
168
const
Vec3
& getMyPartQ(
const
State
&,
const
Vector
& qlike)
const
;
169
const
Vec3
& getMyPartU(
const
State
&,
const
Vector
& ulike)
const
;
170
171
Vec3
& updMyPartQ(
const
State
&,
Vector
& qlike)
const
;
172
Vec3
& updMyPartU(
const
State
&,
Vector
& ulike)
const
;
173
// hide from Doxygen
175
SimTK_INSERT_DERIVED_HANDLE_DECLARATIONS
(
SphericalCoords
,
176
SphericalCoordsImpl,
MobilizedBody
);
178
};
179
180
}
// namespace SimTK
181
182
#endif // SimTK_SIMBODY_MOBILIZED_BODY_SPHERICALCOORDS_H_
183
184
185
Simbody
include
simbody
internal
MobilizedBody_SphericalCoords.h
Generated on Tue Dec 2 2014 13:13:27 for Simbody by
1.8.1.2