Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

rdMimic.h

00001 // rdMimic.h
00002 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00003 // Copyright 2002 Realistic Dynamics, Inc.
00004 // All rights reserved.
00005 //
00006 // Please do not read, copy, distribute, or use without permission.
00007 // Contact: fca@RealisticDynamics.com
00008 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00009 #ifndef __rdMimic_h__
00010 #define __rdMimic_h__
00011 
00012 
00013 //============================================================================
00014 // INCLUDE
00015 //============================================================================
00016 #include <rdModel.h>
00017 #include "rdMimicDLL.h"
00018 
00019 
00020 //=============================================================================
00021 //=============================================================================
00029 class RDMIMIC_API rdMimic : public rdModel  
00030 {
00031 
00032 //=============================================================================
00033 // DATA
00034 //=============================================================================
00035 public:
00037    static const int GROUND;
00038 protected:
00040    //MimicModel *_mimic;
00041 
00042 //=============================================================================
00043 // METHODS
00044 //=============================================================================
00045    //--------------------------------------------------------------------------
00046    // CONSTRUCTION
00047    //--------------------------------------------------------------------------
00048 public:
00049    rdMimic();
00050    virtual ~rdMimic();
00051 private:
00052    void setNull();
00053    void constructSystemVariables();
00054    void constructNames();
00055 
00056    //--------------------------------------------------------------------------
00057    // GET AND SET
00058    //--------------------------------------------------------------------------
00059 public:
00060    // GRAVITY
00061    virtual void
00062       setGravity(double aGrav[3]);
00063    virtual void
00064       getGravity(double rGrav[3]) const;
00065 
00066    // CONFIGURATION
00067    virtual void
00068       setConfiguration(const double aQ[],const double aU[]);
00069    virtual void
00070       setConfiguration(const double aY[]);
00071 
00072    // BODY INFORMATION
00073    virtual int getGroundID() const;
00074 
00075    // INERTIA
00076    virtual double
00077       getMass(int aBody) const;
00078    virtual int
00079       getInertiaBodyLocal(int aBody,double rI[3][3]) const;
00080    virtual int
00081       getInertiaBodyLocal(int aBody,double *rI) const;
00082    virtual void
00083       getSystemInertia(double *rM,double rCOM[3],double rI[3][3]) const;
00084    virtual void
00085       getSystemInertia(double *rM,double *rCOM,double *rI) const;
00086 
00087    // KINEMATICS
00088    virtual void
00089       getPosition(int aBody,const double aPoint[3],double rPos[3]) const;
00090    virtual void
00091       getVelocity(int aBody,const double aPoint[3],double rVel[3]) const;
00092    virtual void
00093       getAcceleration(int aBody,const double aPoint[3],double rAcc[3]) const;
00094    virtual void
00095       getDirectionCosines(int aBody,double rDirCos[3][3]) const;
00096    virtual void
00097       getDirectionCosines(int aBody,double *rDirCos) const;
00098    virtual void
00099       getAngularVelocity(int aBody,double rAngVel[3]) const;
00100    virtual void
00101       getAngularVelocityBodyLocal(int aBody,double rAngVel[3]) const;
00102    virtual void
00103       getAngularAcceleration(int aBody,double rAngAcc[3]) const;
00104    virtual void
00105       getAngularAccelerationBodyLocal(int aBody,double rAngAcc[3]) const;
00106 
00107    //--------------------------------------------------------------------------
00108    // LOAD APPLICATION
00109    //--------------------------------------------------------------------------
00110    // FORCES EXPRESSED IN INERTIAL FRAME
00111    virtual void 
00112       applyForce(int aBody,const double aPoint[3],const double aForce[3]);
00113    virtual void 
00114       applyForces(int aN,const int aBodies[],const double aPoints[][3],
00115       const double aForces[][3]);
00116    virtual void 
00117       applyForces(int aN,const int aBodies[],const double *aPoints,
00118       const double *aForces);
00119 
00120    // FORCES EXPRESSED IN BODY-LOCAL FRAME
00121    virtual void 
00122       applyForceBodyLocal(int aBody,const double aPoint[3],
00123       const double aForce[3]);
00124    virtual void 
00125       applyForcesBodyLocal(int aN,const int aBodies[],const double aPoints[][3],
00126       const double aForces[][3]);
00127    virtual void 
00128       applyForcesBodyLocal(int aN,const int aBodies[],const double *aPoints,
00129       const double *aForces);
00130 
00131    // TORQUES EXPRESSED IN INERTIAL FRAME
00132    virtual void
00133       applyTorque(int aBody,const double aTorque[3]);
00134    virtual void
00135       applyTorques(int aN,const int aBodies[],const double aTorques[][3]);
00136    virtual void
00137       applyTorques(int aN,const int aBodies[],const double *aTorques);
00138 
00139    // TORQUES EXPRESSED IN BODY-LOCAL FRAME (sdbodyt())
00140    virtual void
00141       applyTorqueBodyLocal(int aBody,const double aTorque[3]);
00142    virtual void
00143       applyTorquesBodyLocal(int aN,const int aBodies[],
00144       const double aTorques[][3]);
00145    virtual void
00146       applyTorquesBodyLocal(int aN,const int aBodies[],const double *aTorques);
00147 
00148    // GENERALIZED FORCES
00149    virtual void 
00150       applyGeneralizedForce(int aU,double aF);
00151    virtual void
00152       applyGeneralizedForces(const double aF[]);
00153    virtual void 
00154       applyGeneralizedForces(int aN,const int aU[],const double aF[]);
00155 
00156    // LOAD ACCESS AND COMPUTATION
00157    virtual double
00158       getNetAppliedGeneralizedForce(int aU) const;
00159    virtual void
00160       computeGeneralizedForces(double aDUDT[],double rF[]) const;
00161 
00162 
00163    //--------------------------------------------------------------------------
00164    // EQUATIONS OF MOTION
00165    //--------------------------------------------------------------------------
00166    virtual int
00167       computeAccelerations(double *dqdt,double *dudt);
00168    virtual void
00169       formMassMatrix(double *rI);
00170    virtual void
00171       formEulerTransform(int aBody,double *rE) const;
00172    virtual void
00173       formJacobianTranslation(int aBody,const double aBodyPoint[3],double *rJ,
00174       int aRefBody=-1) const;
00175    virtual void
00176       formJacobianOrientation(int aBody,double *rJ0,
00177       int aRefBody=-1) const;
00178    virtual void
00179       formJacobianEuler(int aBody,double *rJE,
00180       int aRefBody=-1) const;
00181 
00182    //--------------------------------------------------------------------------
00183    // UTILITY
00184    //--------------------------------------------------------------------------
00185    virtual void
00186       transform(int aBody1,const double aVec1[3],int aBody2,double rVec2[3])
00187       const;
00188 
00189    virtual void
00190       convertQuaternionsToAngles(double *q,double *qang) const;
00191    virtual void
00192       convertAnglesToQuaternions(double *qang,double *q) const;
00193 
00194    virtual void
00195       convertRadiansToDegrees(double *aQRad,double *aQDeg) const;
00196    virtual void
00197       convertDegreesToRadians(double *aQDeg,double *aQRad) const;
00198 
00199    virtual void
00200       convertAnglesToDirectionCosines(double aE1,double aE2,double aE3,
00201       double rDirCos[3][3]) const;
00202    virtual void
00203       convertAnglesToDirectionCosines(double aE1,double aE2,double aE3,
00204       double *rDirCos) const;
00205 
00206    virtual void
00207       convertDirectionCosinesToAngles(double aDirCos[3][3],
00208       double *rE1,double *rE2,double *rE3) const;
00209    virtual void
00210       convertDirectionCosinesToAngles(double *aDirCos,
00211       double *rE1,double *rE2,double *rE3) const;
00212 
00213    virtual void
00214       convertDirectionCosinesToQuaternions(double aDirCos[3][3],
00215       double *rQ1,double *rQ2,double *rQ3,double *rQ4) const;
00216    virtual void
00217       convertDirectionCosinesToQuaternions(double *aDirCos,
00218       double *rQ1,double *rQ2,double *rQ3,double *rQ4) const;
00219 
00220    virtual void
00221       convertQuaternionsToDirectionCosines(
00222       double aQ1,double aQ2,double aQ3,double aQ4,double rDirCos[3][3]) const;
00223    virtual void
00224       convertQuaternionsToDirectionCosines(
00225       double aQ1,double aQ2,double aQ3,double aQ4,double *rDirCos) const;
00226 
00227 
00228 
00229 //=============================================================================
00230 }; // END of class rdMimic
00231 //=============================================================================
00232 //=============================================================================
00233 
00234 #endif // __rdMimic_h__
00235 
00236 

Generated on Wed Aug 20 02:17:06 2003 for Simulation Software by doxygen1.3