VR-Forces 4.0.4 Class Documentation
include/vrfmodel/simpRotWngPlt.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2006 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: simpRotWngPlt.h,v $ $Revision: 1.28 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef simpRotWngPlt_H_
00016 #define simpRotWngPlt_H_
00017 
00018 #include "vrfmodel/rotWngPltCtl.h"
00019 #include <matrix/vlDcm.h>
00020 #include <matrix/vlVector.h>
00021 #include "vrfmodel/vrfmodelDefines.h"
00022 
00023 class DtString;
00024 class DtSimManager;
00025 class DtRotaryWingPilotDescriptor;
00026 class Coordinate_System;
00027 class DtVectorInputPort;
00028 
00039 class DT_DLL_vrfmodel DtSimpleRotaryWingPilot : public DtRotaryWingPilotController
00040 {
00041 public:
00042 
00045    DtSimpleRotaryWingPilot(const DtString& name, 
00046       DtVrfObject* owner,
00047       DtSimManager* simManager, 
00048       DtComponentDescriptor* desc = 0,
00049       DtReaderWriterRegistry* parentRegistry = 0);
00050 
00052    virtual ~DtSimpleRotaryWingPilot();
00053 
00055 
00057    virtual void setDesiredInertialPos(
00058       DtReal localX, 
00059       DtReal localY, 
00060       DtReal localZ);
00061    virtual void setDesiredInertialPos(const DtVector& localPosition);
00062 
00064    virtual void setDesiredInertialVel(
00065       DtReal vx,
00066       DtReal vy,
00067       DtReal vz);
00068    virtual void setDesiredInertialVel(
00069       const DtVector& vel);
00070 
00073    virtual bool init();
00074 
00077    virtual DtString type() const;
00078 
00080    static void vectorBound(DtVector& vec, DtReal bound);
00081 
00083    virtual void tick();
00084 
00088    static DtSimComponent * creator(const DtString& name, 
00089       DtVrfObject* owner,
00090       DtSimManager* simManager, 
00091       DtComponentDescriptor* desc = 0,
00092       DtReaderWriterRegistry* parentRegistry = 0);
00093 
00094 private:
00096    DtSimpleRotaryWingPilot();
00097 
00099    DtSimpleRotaryWingPilot(const DtSimpleRotaryWingPilot& orig);
00100 
00102    DtSimpleRotaryWingPilot& operator=(const DtSimpleRotaryWingPilot& orig);
00103 
00104 protected:
00106    virtual void getTransformationMatrices();
00107 
00109    virtual void checkLandNoFuel();
00110 
00115    void calculateDesiredAndActualLinearVelocity(DtVector& desiredBodyVel,
00116       DtVector& topoDesiredInertialVel, DtVector& actualBodyVel);
00117 
00120    virtual void calculateDesiredLinearAcceleration(const DtVector& topoDesiredInertialVel,
00121       DtVector& desiredBodyAcc);
00122 
00124    virtual void calculateDesiredAngularVelocity(const DtVector& desiredBodyAcc,
00125       const DtVector& desiredBodyVel, const DtVector& actualBodyVel,
00126       DtVector& desiredAngularVel);
00127 
00130    virtual void calculateDesiredAngularAcceleration(
00131       const DtVector& desiredAngularVel, DtVector& desiredAngularAcc);
00132 
00136    virtual double calculateWhiteNoiseScaleFactor();
00137 
00140    virtual void setCyclic(const DtVector& desiredAngularAcc, double noiseFactor);
00141 
00143    virtual void setCollective(const DtVector& desiredBodyAcc, double noiseFactor);
00144 
00147    virtual void setPedal(const DtVector& desiredAngularAcc, double noiseFactor);
00148 
00150    virtual void setThrottle();
00151 
00156    virtual void boundAcceleration(DtVector & vec);
00157 
00160    virtual DtReal terrainAvoidanceVelocity() const;
00161 
00167    virtual void calculateControlAlignmentAngle(DtReal& alignmentAngle,
00168                                         bool& selector) const;
00169 
00175    virtual void calculateTargetAlignmentAngle(DtReal& alignmentAngle,
00176                                         bool& selector) const;
00177 
00178    virtual bool createPorts();
00179 
00180 protected:
00182 
00183 
00184 
00185 
00186 
00187 
00188    DtVectorInputPort* myTargetLocationInputPort;
00190 
00192    DtRotaryWingPilotDescriptor *myPilotDescriptor;
00193 
00195    DtDcm myBodyToRef;
00196 
00198    DtDcm myLocalToTopoDcm;
00199 
00201    DtDcm myTopoToLocalDcm;
00202 
00203 public:
00204 
00207    static DtReal xyDistSquared(DtVector a, DtVector b);
00208 
00209 };
00210 
00211 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)