MULTIBODY SIMULATION SOFTWARE - API documentation

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 ChFrameMoving< Real > &other)
ChFrameMoving< Real > & operator= (const ChFrameMoving< 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.


Constructor & Destructor Documentation

template<class Real = double>
chrono::ChFrameMoving< Real >::ChFrameMoving ( const ChVector< Real > &  mv = VNULL,
const ChQuaternion< Real > &  mq = QUNIT 
) [explicit]

Construct from pos and rot (as a quaternion).

template<class Real = double>
chrono::ChFrameMoving< Real >::ChFrameMoving ( const ChVector< Real > &  mv,
ChMatrix33< Real > &  ma 
) [explicit]

Construct from pos and rotation (as a 3x3 matrix).

template<class Real = double>
chrono::ChFrameMoving< Real >::ChFrameMoving ( const ChCoordsys< Real > &  mc  )  [explicit]

Construct from a coordsys.

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

Copy constructor, build from another frame.


Member Function Documentation

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

Assignment operator: copy from another frame.

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

Returns true for identical frames.

template<class Real = double>
bool chrono::ChFrameMoving< Real >::operator!= ( const ChFrameMoving< Real > &  other  )  const

Returns true for different frames.

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>
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 pre-multiplication of this frame by another frame, for example: A=T means A'=T*A

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

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>
ChVector<Real> chrono::ChFrameMoving< Real >::GetPos_dt (  ) 

Return the current speed as a 3d vector.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::GetPos_dtdt (  ) 

Return the current acceleration as a 3d vector.

template<class Real = double>
ChQuaternion<Real> chrono::ChFrameMoving< Real >::GetRot_dt (  ) 

Return the current rotation speed as a quaternion.

template<class Real = double>
ChQuaternion<Real> chrono::ChFrameMoving< Real >::GetRot_dtdt (  ) 

Return the current rotation acceleration as a quaternion.

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::GetWvel_loc (  )  const

Computes the actual angular speed (expressed in local coords).

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::GetWvel_par (  )  const

Computes the actual angular speed (expressed in parent coords).

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::GetWacc_loc (  )  const

Computes the actual angular acceleration (expressed in local coords).

template<class Real = double>
ChVector<Real> chrono::ChFrameMoving< Real >::GetWacc_par (  )  const

Computes the actual angular acceleration (expressed in parent 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 >::SetPos_dt ( const ChVector< Real > &  mvel  )  [virtual]

Set the linear speed.

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 >::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 >::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 >::SetPos_dtdt ( const ChVector< Real > &  macc  )  [virtual]

Set the linear acceleration.

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>
void chrono::ChFrameMoving< Real >::Compute_Adt ( ChMatrix33< Real > &  mA_dt  )  const

Computes the time derivative of rotation matrix, mAdt.

template<class Real = double>
void chrono::ChFrameMoving< Real >::Compute_Adtdt ( ChMatrix33< Real > &  mA_dtdt  ) 

Computes the 2nd time derivative of rotation matrix, mAdtdt.

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>
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;

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;

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 >::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 >::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>
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>
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:
local  frame to transform, given in local frame coordinates
parent  transformed 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:
parent  frame to transform, given in parent coordinates
local  transformed frame, in local coordinates, will be stored here

template<class Real = double>
bool chrono::ChFrameMoving< Real >::Equals ( const ChFrameMoving< Real > &  other  )  const

Returns true if coordsys is identical to other coordsys.

template<class Real = double>
bool chrono::ChFrameMoving< Real >::Equals ( const ChFrameMoving< Real > &  other,
Real  tol 
) const

Returns true if coordsys is equal to other coordsys, within a tolerance 'tol'.

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>
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, and chrono::ChMarker.

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, and chrono::ChMarker.


Member Data Documentation

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

Rotation and position speed, as vector+quaternion.

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

Rotation and position acceleration, as vector+quaternion.


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