VR-Forces 4.0.4 Class Documentation
include/vrfmodel/fixWingAct.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 1999-2000 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: fixWingAct.h,v $ $Revision: 1.44 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef fixWingAct_H_
00015 #define fixWingAct_H_
00016 
00017 #include <vlpi/disEnums.h>
00018 #include "vrfobjcore/actCmpnt.h"
00019 #include <matrix/LibMatrix.h>
00020 
00021 class DtString;
00022 class DtSimManager;
00023 class DtFixedWingEntityStateRepository;
00024 class DtFixedWingActuatorDescriptor;
00025 class DtFixedWingFlightPSR;
00026 
00028 class DtInputPortGroup;
00029 class DtConstrainedAnalogInputPort;
00030 class DtConstrainedDualAxisAnalogInputPort;
00031 class DtBooleanInputPort;
00032 
00043 #include "vrfmodel/vrfmodelDefines.h"
00044 class DT_DLL_vrfmodel DtFixedWingActuatorComponent : public DtActuatorComponent
00045 {
00046 
00047 public:
00048 
00051    DtFixedWingActuatorComponent(const DtString& name, 
00052       DtVrfObject* owner,
00053       DtSimManager* simManager, 
00054       DtComponentDescriptor* desc = 0,
00055       DtReaderWriterRegistry* parentRegistry = 0);
00056 
00057 
00061    virtual ~DtFixedWingActuatorComponent();
00062 
00065    virtual bool init();
00066 
00069    virtual DtString type() const;
00070 
00073    virtual void tick();
00074 
00078    static DtSimComponent * creator(const DtString& name, 
00079       DtVrfObject* owner,
00080       DtSimManager* simManager, 
00081       DtComponentDescriptor* desc = 0,
00082       DtReaderWriterRegistry* parentRegistry = 0);
00083 
00084 public:
00088    virtual void calculateBodyVelocity(const DtVector& oldRelativeVelocity, 
00089       const DtDcm& newLocalOrientation, DtVector& newBodyVelocity);
00090 
00094    virtual void calculateAirborneAcceleration(const DtVector oldLocalPosition, 
00095       double oldSpeed, const DtDcm& newLocalOrientation, 
00096       const DtVector& newBodyVelocity, double throttle, 
00097       DtVector& newRelativeAcceleration);
00098 
00099 protected:
00100    
00102    virtual void doFlying();
00103 
00105    virtual void doTaxiing();
00106    
00109    virtual bool isTouchingDown(const DtVector& newLocalPosition,
00110       const DtVector& newRelativeVelocity);
00111 
00114    virtual bool isTakingOff(bool isOnGround, double speed);
00115 
00116    virtual bool updateGroundInteractionPoints(
00117       DtGroundInteractionPt *left, 
00118       DtGroundInteractionPt *right, 
00119       DtGroundInteractionPt *nose, 
00120       DtGroundInteractionPt *center,
00121       const DtDcm& localOrientation,
00122       const DtVector& localPosition,
00123       double halfHeightOfTerrainIntersectChord);
00124 
00129    virtual double calculateYawRate(double pedal);
00130 
00132    virtual double calculatePitchRate(double stickYValue);
00133 
00135    virtual double calculateRollRate(double stickXValue);
00136 
00137    virtual void calculateBodyRotationRates(double pedal, double stickXValue,
00138       double stickYValue, DtVector& newBodyRotationRates);
00139 
00142    virtual void calculateOrientation(const DtDcm&
00143       oldLocalOrientation, const DtVector& newBodyRotationRates,
00144       DtDcm& newLocalOrientation);
00145 
00147    virtual void calculateBodyGravity(const DtVector oldLocalPosition, 
00148       const DtDcm& newLocalOrientation, DtVector& newBodyGravityAcceleration);
00149 
00152    virtual void calculateThrustAcceleration(double throttle,
00153    DtVector& newBodyThrustAccleration);
00154 
00159    virtual void calculateDragAcceleration(double oldSpeed,
00160       const DtVector& newBodyVelocity, bool flapsDeployed,
00161       DtVector& newBodyDragAccleration);
00162 
00167    virtual void fallFromSky(const DtString& reason = DtString::nullString());
00168 
00169    //virtual bool collidesWithGround(
00172 
00173    virtual bool collidesWithGround(const DtVector& oldLocalPosition,
00174       const DtVector& newLocalPosition, DtVector& localCenterGoundPosition);
00175 
00177    void integrate(const DtVector& oldLocalPosition, 
00178       const DtVector& oldRelativeVelocity, 
00179       const DtVector& newRelativeAcceleration, DtVector& newLocalPosition, 
00180       DtVector& newRelativeVelocity);
00181 
00183 
00186    virtual void useFuel(double fuelUsed);
00187    virtual double fuelLeft() const;
00188 
00189 
00193    virtual double calculateHeading(double oldHeading, 
00194       double steering, double dT, double speed, double turningRadius);
00195    virtual void  calculateScalarVelocityAndAcceleration(
00196       double oldPitch, double &scalarVelocity, double &scalarAcceleration);
00197    virtual double calculateMaxGroundSpeed();
00198    virtual double calculateMaxGroundAcceleration();
00199    virtual double calculateAcceleration(double pitch, double maxSpeed, 
00200       double maxAccel);
00201    virtual double calculateAccelerationFromThrottle();
00202 
00203    virtual double calculateAccelerationFromSlope(double slope);
00204       
00205    virtual double calculateAccelerationFromResistance(double maxSpeed, 
00206       double maxAccel);
00207    virtual double calculateAccelerationFromBrake(double otherAccels);
00208 
00209    virtual DtVector calculateProjectedLocation(
00210       const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
00211       const DtVector& oldBodyVelocity, double newHeading);
00212 
00213    virtual void calculateOrientationAndPositionOnGround(
00214       const DtVector& newLocalProjectedLocation, double newHeading, 
00215       DtDcm& newLocalOrientation, DtVector& newLocalPosition);
00217 
00218    virtual void updateRepository(const DtVector& newLocalPosition,
00219       const DtVector& newRelativeVelocity, 
00220       const DtVector& newRelativeAcceleration, 
00221       const DtDcm& newLocalOrientation, const DtVector& newBodyRotationRates,
00222       bool isOnGround, const DtAppearance& newAppearance);
00223 
00224    virtual void updateDisplay() const;
00225 
00228    virtual double maxThrustAcceleration() const;
00229    virtual double maxClimbRate() const;
00230    virtual double maxYawVelocity() const;
00231    virtual double maxPitchVelocity() const;
00232    virtual double maxRollVelocity() const;
00233    virtual double maxAltitude() const;
00234 
00236    virtual bool createPortGroups();
00237 
00239    virtual bool createPorts();
00240 
00246    virtual bool createPSR();
00247 
00248    virtual void sendDetonation(const DtVector& geocentricPosition);
00249 
00250 protected:
00251    
00253    DtFixedWingActuatorComponent();
00254 
00256    DtFixedWingActuatorComponent(const DtFixedWingActuatorComponent & orig);
00257 
00259    const DtFixedWingActuatorComponent & operator=(const 
00260       DtFixedWingActuatorComponent & orig);
00261 
00262 protected:
00263 
00264    DtFixedWingEntityStateRepository * myFixedWingEntityState;
00265    DtFixedWingActuatorDescriptor * myFixedWingActuatorDescriptor;
00266 
00269 
00273    DtInputPortGroup* myFixedWingControlPortGroup;
00274 
00280    DtConstrainedAnalogInputPort* myThrottlePort;
00281 
00287    DtConstrainedDualAxisAnalogInputPort*  myStickPort;
00288 
00294    DtConstrainedAnalogInputPort* myPedalPort;
00295 
00301    DtConstrainedAnalogInputPort* myBrakePort;
00302 
00308    DtBooleanInputPort*           myFlapsDeployedPort;
00309 
00311 
00314    DtFixedWingFlightPSR* myProcessState;
00315 
00316    bool           myFirstTick;
00318    bool           mySentFallingMessage;
00319 };
00320 
00321 #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)