Simbody  3.4 (development)
SimTK::MobilizedBody::FreeLine Class Reference

Five mobilities, representing unrestricted motion for a body which is inertialess along its own z axis. More...

#include <MobilizedBody_FreeLine.h>

+ Inheritance diagram for SimTK::MobilizedBody::FreeLine:

List of all members.

Public Member Functions

 FreeLine ()
 Default constructor provides an empty handle that can be assigned to reference any MobilizedBody::Ball.
 FreeLine (MobilizedBody &parent, const Transform &X_PF, const Body &bodyInfo, const Transform &X_BM, Direction=Forward)
 Create a FreeLine 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.
 FreeLine (MobilizedBody &parent, const Body &bodyInfo, Direction=Forward)
 Abbreviated constructor you can use if the mobilizer frames are coincident with the parent and child body frames.
FreeLineaddBodyDecoration (const Transform &X_BD, const DecorativeGeometry &g)
 Add decorative geometry specified relative to the new (outboard) body's reference frame B.
FreeLineaddOutboardDecoration (const Transform &X_MD, const DecorativeGeometry &g)
 Add decorative geometry specified relative to the outboard mobilizer frame M attached to body B.
FreeLineaddInboardDecoration (const Transform &X_FD, const DecorativeGeometry &g)
 Add decorative geometry specified relative to the inboard mobilizer frame F attached to the parent body P.
FreeLinesetDefaultInboardFrame (const Transform &X_PF)
 Change this mobilizer's frame F on the parent body P.
FreeLinesetDefaultOutboardFrame (const Transform &X_BM)
 Change this mobilizer's frame M fixed on this (the outboard) body B.

Detailed Description

Five mobilities, representing unrestricted motion for a body which is inertialess along its own z axis.

The rotational generalized coordinates are the same as for the LineOrientation mobilizer. The translational coordinates are the same as in a Free mobilizer, or a Cartesian (Translation) mobilizer.

LineOrientation and FreeLine are special "ball" and "free" mobilizers designed to allow arbitrary orientations for "linear" bodies, such as a CO2 molecule consisting only of point masses arranged along a straight line. Such bodies have no inertia about the line and cause singularities in the equations of motion if attached to Ball (Spherical) or Free mobilizers. Instead, use the LineOrientation and LineFree mobilizers, making sure that the inertialess direction is along the outboard body's z axis (that is, Mz). These mobilizers introduce only two rotational mobilities (generalized speeds u), being incapable of representing non-zero angular velocity of M in F about Mz. The generalized speeds are in fact the wx and wy components of w_FM_M, that is, the x and y components of the angular velocity of M in F expressed in M. However, at least three generalized coordinates (q's) are required to represent the orientation. By default we use four quaternions for unconditional stability. Alternatively, you can request a 1-2-3 body fixed Euler angle sequence (that is, about x, then new y, then new z) which will suffer a singularity when the y rotation is 90 degrees since that aligns the first rotation axis (x) with the last (z) which is the inertialess direction.

See also:
MobilizedBody::LineOrientation, MobilizedBody::Free

Constructor & Destructor Documentation

Default constructor provides an empty handle that can be assigned to reference any MobilizedBody::Ball.

SimTK::MobilizedBody::FreeLine::FreeLine ( MobilizedBody parent,
const Transform X_PF,
const Body bodyInfo,
const Transform X_BM,
Direction  = Forward 
)

Create a FreeLine 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.

See also:
MobilizedBody for a diagram and explanation of terminology.

Abbreviated constructor you can use if the mobilizer frames are coincident with the parent and child body frames.


Member Function Documentation

FreeLine& SimTK::MobilizedBody::FreeLine::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.

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.

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.

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.

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.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines