Simbody
3.4 (development)
|
Three mobilities -- coordinated rotation and translation along the surface of an ellipsoid fixed to the parent (inboard) body. More...
#include <MobilizedBody_Ellipsoid.h>
Public Member Functions | |
Ellipsoid () | |
Default constructor provides an empty handle that can be assigned to reference any MobilizedBody::Ellipsoid. | |
Ellipsoid (MobilizedBody &parent, const Transform &X_PF, const Body &bodyInfo, const Transform &X_BM, const Vec3 &radii, Direction=Forward) | |
Create an Ellipsoid mobilizer between an existing parent (inboard) body P and a new child (outboard) body B created by copying the given bodyInfo into a privately-owned Body within the constructed MobilizedBody object. | |
Ellipsoid (MobilizedBody &parent, const Body &bodyInfo, const Vec3 &radii, Direction=Forward) | |
Abbreviated constructor you can use if the mobilizer frames are coincident with the parent and child body frames. | |
Ellipsoid (MobilizedBody &parent, const Transform &X_PF, const Body &bodyInfo, const Transform &X_BM, Direction=Forward) | |
This constructor assumes you'll set the ellipsoid dimensions later; meanwhile it uses some default dimensions. | |
Ellipsoid (MobilizedBody &parent, const Body &bodyInfo, Direction=Forward) | |
This constructor assumes you'll set the ellipsoid dimensions later; meanwhile it uses some default dimensions. | |
Ellipsoid & | setDefaultRadii (const Vec3 &radii) |
Modify the default semi-axis dimensions of the ellipsoid, given in the F frame. | |
const Vec3 & | getDefaultRadii () const |
Get the default semi-axis dimensions of the ellipsoid as specified during construction or via setDefaultRadii(). | |
Ellipsoid & | setDefaultRotation (const Rotation &R_FM) |
Provide a default orientation for this mobilizer if you don't want to start with the identity rotation (that is, alignment of the F and M frames). | |
Rotation | getDefaultRotation () const |
Get the value for the default orientation of this mobilizer; unless changed by setDefaultRotation() it will be the identity rotation. | |
Ellipsoid & | addBodyDecoration (const Transform &X_BD, const DecorativeGeometry &g) |
Add decorative geometry specified relative to the new (outboard) body's reference frame B. | |
Ellipsoid & | addOutboardDecoration (const Transform &X_MD, const DecorativeGeometry &g) |
Add decorative geometry specified relative to the outboard mobilizer frame M attached to body B. | |
Ellipsoid & | addInboardDecoration (const Transform &X_FD, const DecorativeGeometry &g) |
Add decorative geometry specified relative to the inboard mobilizer frame F attached to the parent body P. | |
Ellipsoid & | setDefaultInboardFrame (const Transform &X_PF) |
Change this mobilizer's frame F on the parent body P. | |
Ellipsoid & | setDefaultOutboardFrame (const Transform &X_BM) |
Change this mobilizer's frame M fixed on this (the outboard) body B. | |
const Quaternion & | getDefaultQ () const |
Quaternion & | updDefaultQ () |
Ellipsoid & | setDefaultQ (const Quaternion &q) |
const Vec4 & | getQ (const State &) const |
const Vec4 & | getQDot (const State &) const |
const Vec4 & | getQDotDot (const State &) const |
const Vec3 & | getU (const State &) const |
const Vec3 & | getUDot (const State &) const |
void | setQ (State &, const Vec4 &) const |
void | setU (State &, const Vec3 &) const |
const Vec4 & | getMyPartQ (const State &, const Vector &qlike) const |
const Vec3 & | getMyPartU (const State &, const Vector &ulike) const |
Vec4 & | updMyPartQ (const State &, Vector &qlike) const |
Vec3 & | updMyPartU (const State &, Vector &ulike) const |
Three mobilities -- coordinated rotation and translation along the surface of an ellipsoid fixed to the parent (inboard) body.
The generalized coordinates q are the same as for a Ball (Orientation) mobilizer, that is, a quaternion or an x-y-z body-fixed Euler sequence depending on the "use Euler angles" modeling option. The three generalized speeds u for this mobilizer are also the same as for a Ball mobilizer, that is the three measure numbers of the angular velocity vector w_FM, the relative angular velocity of the outboard M frame in the inboard F frame, expressed in the F frame. That is unchanged by setting the "use Euler angles" modeling option. Note that qdot != u for this mobilizer.
SimTK::MobilizedBody::Ellipsoid::Ellipsoid | ( | ) | [inline] |
Default constructor provides an empty handle that can be assigned to reference any MobilizedBody::Ellipsoid.
SimTK::MobilizedBody::Ellipsoid::Ellipsoid | ( | MobilizedBody & | parent, |
const Transform & | X_PF, | ||
const Body & | bodyInfo, | ||
const Transform & | X_BM, | ||
const Vec3 & | radii, | ||
Direction | = Forward |
||
) |
Create an Ellipsoid mobilizer between an existing parent (inboard) body P and a new child (outboard) body B created by copying the given bodyInfo into a privately-owned Body within the constructed MobilizedBody object.
Specify the mobilizer frames F fixed to parent P and M fixed to child B. The ellipsoid is placed on the mobilizer's inboard frame F, with semi-axis dimensions given in radii along F's x,y,z respectively.
SimTK::MobilizedBody::Ellipsoid::Ellipsoid | ( | MobilizedBody & | parent, |
const Body & | bodyInfo, | ||
const Vec3 & | radii, | ||
Direction | = Forward |
||
) |
Abbreviated constructor you can use if the mobilizer frames are coincident with the parent and child body frames.
SimTK::MobilizedBody::Ellipsoid::Ellipsoid | ( | MobilizedBody & | parent, |
const Transform & | X_PF, | ||
const Body & | bodyInfo, | ||
const Transform & | X_BM, | ||
Direction | = Forward |
||
) |
This constructor assumes you'll set the ellipsoid dimensions later; meanwhile it uses some default dimensions.
SimTK::MobilizedBody::Ellipsoid::Ellipsoid | ( | MobilizedBody & | parent, |
const Body & | bodyInfo, | ||
Direction | = Forward |
||
) |
This constructor assumes you'll set the ellipsoid dimensions later; meanwhile it uses some default dimensions.
The parent and child body frames are used as the mobilizer frames.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::setDefaultRadii | ( | const Vec3 & | radii | ) |
Modify the default semi-axis dimensions of the ellipsoid, given in the F frame.
These are usually set on construction.
const Vec3& SimTK::MobilizedBody::Ellipsoid::getDefaultRadii | ( | ) | const |
Get the default semi-axis dimensions of the ellipsoid as specified during construction or via setDefaultRadii().
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::setDefaultRotation | ( | const Rotation & | R_FM | ) | [inline] |
Provide a default orientation for this mobilizer if you don't want to start with the identity rotation (that is, alignment of the F and M frames).
This is the orientation the mobilizer will have in the default state for the containing System. The supplied Rotation will be converted to a quaternion and used as the four generalized coordinates q.
Rotation SimTK::MobilizedBody::Ellipsoid::getDefaultRotation | ( | ) | const [inline] |
Get the value for the default orientation of this mobilizer; unless changed by setDefaultRotation() it will be the identity rotation.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::addBodyDecoration | ( | const Transform & | X_BD, |
const DecorativeGeometry & | geometry | ||
) | [inline] |
Add decorative geometry specified relative to the new (outboard) body's reference frame B.
Note that the body itself may already have had some decorative geometry on it when it was first put into this MobilizedBody; this just adds more and the returned index is larger. Use the underlying Body object's accessors to find this decorative geometry again. The given geometry
object is copied here; we do not keep a reference to the supplied object.
Reimplemented from SimTK::MobilizedBody.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::addOutboardDecoration | ( | const Transform & | X_MD, |
const DecorativeGeometry & | geometry | ||
) | [inline] |
Add decorative geometry specified relative to the outboard mobilizer frame M attached to body B.
If body B already has decorative geometry on it, this just adds some more, but kept in a separate list from the body decorations and inboard decorations. Returns a unique index that can be used to identify this outboard decoration later (numbered starting from zero for outboard decorations only).
Reimplemented from SimTK::MobilizedBody.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::addInboardDecoration | ( | const Transform & | X_FD, |
const DecorativeGeometry & | geometry | ||
) | [inline] |
Add decorative geometry specified relative to the inboard mobilizer frame F attached to the parent body P.
If body P already has decorative geometry on it, this just adds some more, but kept in a separate list from the body decorations and outboard decorations. Returns a unique index that can be used to identify this inboard decoration later (numbered starting from zero for inboard decorations only).
Reimplemented from SimTK::MobilizedBody.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::setDefaultInboardFrame | ( | const Transform & | X_PF | ) | [inline] |
Change this mobilizer's frame F on the parent body P.
Calling this method invalidates the MobilizedBody's topology, so the containing matter subsystem's realizeTopology() method must be called again. A reference to this MobilizedBody is returned so that this can be chained like an assignment operator.
Reimplemented from SimTK::MobilizedBody.
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::setDefaultOutboardFrame | ( | const Transform & | X_BM | ) | [inline] |
Change this mobilizer's frame M fixed on this (the outboard) body B.
Calling this method invalidates the MobilizedBody's topology, so the containing matter subsystem's realizeTopology() method must be called again. A reference to this MobilizedBody is returned so that this can be chained like an assignment operator.
Reimplemented from SimTK::MobilizedBody.
const Quaternion& SimTK::MobilizedBody::Ellipsoid::getDefaultQ | ( | ) | const |
Ellipsoid& SimTK::MobilizedBody::Ellipsoid::setDefaultQ | ( | const Quaternion & | q | ) | [inline] |
const Vec4& SimTK::MobilizedBody::Ellipsoid::getQ | ( | const State & | ) | const |
const Vec4& SimTK::MobilizedBody::Ellipsoid::getQDot | ( | const State & | ) | const |
const Vec4& SimTK::MobilizedBody::Ellipsoid::getQDotDot | ( | const State & | ) | const |
const Vec3& SimTK::MobilizedBody::Ellipsoid::getU | ( | const State & | ) | const |
const Vec3& SimTK::MobilizedBody::Ellipsoid::getUDot | ( | const State & | ) | const |
void SimTK::MobilizedBody::Ellipsoid::setQ | ( | State & | , |
const Vec4 & | |||
) | const |
void SimTK::MobilizedBody::Ellipsoid::setU | ( | State & | , |
const Vec3 & | |||
) | const |
const Vec4& SimTK::MobilizedBody::Ellipsoid::getMyPartQ | ( | const State & | , |
const Vector & | qlike | ||
) | const |
const Vec3& SimTK::MobilizedBody::Ellipsoid::getMyPartU | ( | const State & | , |
const Vector & | ulike | ||
) | const |
Vec4& SimTK::MobilizedBody::Ellipsoid::updMyPartQ | ( | const State & | , |
Vector & | qlike | ||
) | const |
Vec3& SimTK::MobilizedBody::Ellipsoid::updMyPartU | ( | const State & | , |
Vector & | ulike | ||
) | const |