MULTIBODY SIMULATION SOFTWARE - API documentation
Public Member Functions | Public Attributes
chrono::ChFrameMoving< Real > Class Template Reference

#include <CHframeMoving.h>

Inheritance diagram for chrono::ChFrameMoving< Real >:
Inheritance graph
[legend]
Collaboration diagram for chrono::ChFrameMoving< Real >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ChFrameMoving (const ChVector< Real > &mv=VNULL, const ChQuaternion< Real > &mq=QUNIT)
 ChFrameMoving (const ChVector< Real > &mv, ChMatrix33< Real > &ma)
 ChFrameMoving (const ChCoordsys< Real > &mc)
 ChFrameMoving (const ChFrame< Real > &mc)
 ChFrameMoving (const ChFrameMoving< Real > &other)
ChFrameMoving< Real > & operator= (const ChFrameMoving< Real > &other)
ChFrameMoving< Real > & operator= (const ChFrame< Real > &other)
bool operator== (const ChFrameMoving< Real > &other) const
bool operator!= (const ChFrameMoving< Real > &other) const
ChFrameMoving< Real > operator>> (const ChFrameMoving< Real > &Fb) const
ChFrameMoving< Real > operator* (const ChFrameMoving< Real > &Fb) const
ChFrameMoving< Real > & operator%= (const ChFrameMoving< Real > &T)
ChFrameMoving< Real > & operator*= (const ChFrameMoving< Real > &T)
ChCoordsys< Real > GetCoord_dt ()
ChCoordsys< Real > GetCoord_dtdt ()
ChVector< Real > GetPos_dt ()
ChVector< Real > GetPos_dtdt ()
ChQuaternion< Real > GetRot_dt ()
ChQuaternion< Real > GetRot_dtdt ()
ChVector< Real > GetWvel_loc () const
ChVector< Real > GetWvel_par () const
ChVector< Real > GetWacc_loc () const
ChVector< Real > GetWacc_par () const
virtual void SetCoord_dt (const ChCoordsys< Real > &mcoord_dt)
virtual void SetPos_dt (const ChVector< Real > &mvel)
virtual void SetRot_dt (const ChQuaternion< Real > &mrot_dt)
virtual void SetWvel_loc (const ChVector< Real > &wl)
virtual void SetWvel_par (const ChVector< Real > &wp)
virtual void SetCoord_dtdt (const ChCoordsys< Real > &mcoord_dtdt)
virtual void SetPos_dtdt (const ChVector< Real > &macc)
virtual void SetRot_dtdt (const ChQuaternion< Real > &mrot_dtdt)
virtual void SetWacc_loc (const ChVector< Real > &al)
virtual void SetWacc_par (ChVector< Real > &ap)
void Compute_Adt (ChMatrix33< Real > &mA_dt) const
void Compute_Adtdt (ChMatrix33< Real > &mA_dtdt)
ChMatrix33< Real > GetA_dt ()
ChMatrix33< Real > GetA_dtdt ()
void ConcatenatePreTransformation (const ChFrameMoving< Real > &T)
void ConcatenatePostTransformation (const ChFrameMoving< Real > &T)
ChVector< Real > PointSpeedLocalToParent (const ChVector< Real > &localpos) const
ChVector< Real > PointSpeedLocalToParent (const ChVector< Real > &localpos, const ChVector< Real > &localspeed) const
ChVector< Real > PointAccelerationLocalToParent (const ChVector< Real > &localpos) const
ChVector< Real > PointAccelerationLocalToParent (const ChVector< Real > &localpos, const ChVector< Real > &localspeed, const ChVector< Real > &localacc) const
ChVector< Real > PointSpeedParentToLocal (const ChVector< Real > &parentpos, const ChVector< Real > &parentspeed) const
ChVector< Real > PointAccelerationParentToLocal (const ChVector< Real > &parentpos, const ChVector< Real > &parentspeed, const ChVector< Real > &parentacc) const
void TrasformLocalToParent (const ChFrameMoving< Real > &local, ChFrameMoving< Real > &parent) const
void TrasformParentToLocal (const ChFrameMoving< Real > &parent, ChFrameMoving< Real > &local) const
bool Equals (const ChFrameMoving< Real > &other) const
bool Equals (const ChFrameMoving< Real > &other, Real tol) const
virtual void Invert ()
ChFrameMoving< Real > GetInverse ()
virtual void StreamOUT (ChStreamOutAscii &mstream)
virtual void StreamOUT (ChStreamOutBinary &mstream)
virtual void StreamIN (ChStreamInBinary &mstream)

Public Attributes

ChCoordsys< Real > coord_dt
ChCoordsys< Real > coord_dtdt

Detailed Description

template<class Real = double>
class chrono::ChFrameMoving< Real >

ChFrame: a class for coordinate systems in 3D space.

A 'frame' coordinate system has a translation and a rotation respect to a 'parent' coordinate system, usually the absolute (world) coordinates.

Differently from a simple ChCoordsys() object, however, the ChFrame implements some optimizations because each ChFrame stores also a 3x3 rotation matrix, which can speed up coordinate transformations when a large amount of vectors must be transfomed by the same coordinate frame.


Member Function Documentation

template<class Real = double>
void chrono::ChFrameMoving< Real >::ConcatenatePostTransformation ( const ChFrameMoving< Real > &  T)

Apply a transformation (rotation and translation) represented by another ChFrameMoving T in local coordinate. This is equivalent to post-multiply this frame by the other frame T: this'= this * T; or this' = T >> this

template<class Real = double>
void chrono::ChFrameMoving< Real >::ConcatenatePreTransformation ( const ChFrameMoving< Real > &  T)

Apply a transformation (rotation and translation) represented by another ChFrameMoving T. This is equivalent to pre-multiply this frame by the other frame T: this'= T * this; or this' = this >> T

template<class Real = double>
ChMatrix33<Real> chrono::ChFrameMoving< Real >::GetA_dt ( )

Computes and returns an Adt matrix (-note: prefer using Compute_Adt() directly for better performance)

template<class Real = double>
ChMatrix33<Real> chrono::ChFrameMoving< Real >::GetA_dtdt ( )

Computes and returns an Adt matrix (-note: prefer using Compute_Adtdt() directly for better performance)

template<class Real = double>
ChCoordsys<Real> chrono::ChFrameMoving< Real >::GetCoord_dt ( )

Return both current rotation and translation speeds as a coordsystem object, with vector and quaternion

template<class Real = double>
ChCoordsys<Real> chrono::ChFrameMoving< Real >::GetCoord_dtdt ( )

Return both current rotation and translation accelerations as a coordsystem object, with vector and quaternion

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::Invert ( ) [virtual]

The trasformation (also for speeds, accelerations) is inverted in place. That is if w=A*v, then A.Invert();v=A*w;

Reimplemented from chrono::ChFrame< Real >.

template<class Real = double>
ChFrameMoving<Real>& chrono::ChFrameMoving< Real >::operator%= ( const ChFrameMoving< Real > &  T)

Performs pre-multiplication of this frame by another frame, for example: A%=T means A'=T*A ; or A'=A >> T

template<class Real = double>
ChFrameMoving<Real> chrono::ChFrameMoving< Real >::operator* ( const ChFrameMoving< Real > &  Fb) const

The '*' operator transforms a coordinate system, so transformations can be represented with this syntax: new_frame = tr_frame * old_frame; For a sequence of transformations, i.e. a chain of coordinate systems, you can also write this (just like you would do with a sequence of Denavitt-Hartemberg matrix multiplications!) new_frame = frame1to0 * frame2to1 * frame3to2 * old_frame; This operation is not commutative. Also speeds and accelerations are transformed.

template<class Real = double>
ChFrameMoving<Real>& chrono::ChFrameMoving< Real >::operator*= ( const ChFrameMoving< Real > &  T)

Performs post-multiplication of this frame by another frame, for example: A*=T means A'=A*T ; or A'=T >> A

template<class Real = double>
ChFrameMoving<Real> chrono::ChFrameMoving< Real >::operator>> ( const ChFrameMoving< Real > &  Fb) const

The '>>' operator transforms a coordinate system, so transformations can be represented with this syntax: new_frame = old_frame >> tr_frame; For a sequence of transformations, i.e. a chain of coordinate systems, you can also write this (like you would do with a sequence of Denavitt-Hartemberg matrix multiplications, but in the _opposite_ order...) new_frame = old_frame >> frame3to2 >> frame2to1 >> frame1to0; This operation is not commutative. Also speeds and accelerations are transformed.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointAccelerationLocalToParent ( const ChVector< Real > &  localpos) const

Given the position of a point in local frame coords, and assuming it is sticky to frame, return the acceleration in parent coords.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointAccelerationLocalToParent ( const ChVector< Real > &  localpos,
const ChVector< Real > &  localspeed,
const ChVector< Real > &  localacc 
) const

Given the position of a point in local frame coords, and assuming it has a frame-relative speed localspeed and frame-relative acceleration localacc, return the acceleration in parent coords.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointAccelerationParentToLocal ( const ChVector< Real > &  parentpos,
const ChVector< Real > &  parentspeed,
const ChVector< Real > &  parentacc 
) const

Given the position of a point in parent frame coords, and assuming it has an absolute speed parentspeed and absolute acceleration parentacc, return the acceleration in local coords.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointSpeedLocalToParent ( const ChVector< Real > &  localpos) const

Given the position of a point in local frame coords, and assuming it is sticky to frame, return the speed in parent coords.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointSpeedLocalToParent ( const ChVector< Real > &  localpos,
const ChVector< Real > &  localspeed 
) const

Given the position of a point in local frame coords, and assuming it has a frame-relative speed localspeed, return the speed in parent coords.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::PointSpeedParentToLocal ( const ChVector< Real > &  parentpos,
const ChVector< Real > &  parentspeed 
) const

Given the position of a point in parent frame coords, and assuming it has an absolute speed parentspeed, return the speed in local coords.

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetCoord_dt ( const ChCoordsys< Real > &  mcoord_dt) [virtual]

Set both linear speed and rotation speed as a single ChCoordsys derivative.

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetCoord_dtdt ( const ChCoordsys< Real > &  mcoord_dtdt) [virtual]

Set both linear acceleration and rotation acceleration as a single ChCoordsys derivative.

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetRot_dt ( const ChQuaternion< Real > &  mrot_dt) [virtual]

Set the rotation speed as a quaternion. Note: the quaternion must already satisfy dot(q,q_dt)=0

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetRot_dtdt ( const ChQuaternion< Real > &  mrot_dtdt) [virtual]

Set the rotation acceleration as a quaternion derivative. Note: the quaternion must already satisfy dot(q,q_dt)=0

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetWacc_loc ( const ChVector< Real > &  al) [virtual]

Set the rotation acceleration from given angular acceleration (expressed in local csys)

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetWacc_par ( ChVector< Real > &  ap) [virtual]

Set the rotation speed from given angular speed (expressed in parent csys)

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetWvel_loc ( const ChVector< Real > &  wl) [virtual]

Set the rotation speed from given angular speed (expressed in local csys)

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::SetWvel_par ( const ChVector< Real > &  wp) [virtual]

Set the rotation speed from given angular speed (expressed in parent csys)

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::StreamIN ( ChStreamInBinary mstream) [virtual]

Operator to allow deserializing a persistent binary archive (ex: a file) into transient data.

Reimplemented from chrono::ChFrame< Real >.

Reimplemented in chrono::ChBody, chrono::ChMarker, chrono::ChConveyor, chrono::ChBodyDEM, chrono::ChBodyAuxRef, chrono::ChBodyDEMMPI, and chrono::ChBodyMPI.

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::StreamOUT ( ChStreamOutAscii mstream) [virtual]

Method to allow serializing transient data into in ascii as a readable item, for example "chrono::GetLog() << myobject;"

Reimplemented from chrono::ChFrame< Real >.

Reimplemented in chrono::ChBody, and chrono::ChMarker.

template<class Real = double>
virtual void chrono::ChFrameMoving< Real >::StreamOUT ( ChStreamOutBinary mstream) [virtual]

Method to allow serializing transient data into a persistent binary archive (ex: a file).

Reimplemented from chrono::ChFrame< Real >.

Reimplemented in chrono::ChBody, chrono::ChMarker, chrono::ChConveyor, chrono::ChBodyDEM, chrono::ChBodyAuxRef, chrono::ChBodyDEMMPI, and chrono::ChBodyMPI.

template<class Real = double>
void chrono::ChFrameMoving< Real >::TrasformLocalToParent ( const ChFrameMoving< Real > &  local,
ChFrameMoving< Real > &  parent 
) const

This function transforms a frame from 'this' local coordinate system to parent frame coordinate system, and also transforms the speed and acceleration of the frame.

Parameters:
localframe to transform, given in local frame coordinates
parenttransformed frame, in parent coordinates, will be stored here
template<class Real = double>
void chrono::ChFrameMoving< Real >::TrasformParentToLocal ( const ChFrameMoving< Real > &  parent,
ChFrameMoving< Real > &  local 
) const

This function transforms a frame from the parent coordinate system to 'this' local frame coordinate system.

Parameters:
parentframe to transform, given in parent coordinates
localtransformed frame, in local coordinates, will be stored here

CHRONO::ENGINE
C++ library for multibody simulation, (C) Alessandro Tasora
This API documentation has been generated on Tue Jul 10 2012 by Doxygen