VR-Forces 4.0.4 Class Documentation
include/vrfmodel/missileCntlr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 1999 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: missileCntlr.h,v $ $Revision: 1.27 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef DtMissileControllerComponent_H_
00016 #define DtMissileControllerComponent_H_
00017 
00018 
00019 #include "vrfobjcore/singleTaskControllerComponent.h"
00020 #include <matrix/vlVector.h>
00021 
00022 class DtString;
00023 class DtSimManager;
00024 class DtConstrainedAnalogOutputPort;
00025 class DtBooleanOutputPort;
00026 class DtMissileStateRepository;
00027 class DtTaitBryan;
00028 class DtMissileFlightPSR;
00029 
00036 #include "vrfmodel/vrfmodelDefines.h"
00037 class DT_DLL_vrfmodel DtMissileControllerComponent : public DtSingleTaskControllerComponent
00038 {
00039 public:
00040 
00043    DtMissileControllerComponent(const DtString& name, 
00044       DtVrfObject* owner,
00045       DtSimManager* simManager, 
00046       DtComponentDescriptor* desc = 0,
00047       DtReaderWriterRegistry* parentRegistry = 0);
00048 
00050    virtual ~DtMissileControllerComponent();
00051 
00053    virtual bool init();
00054 
00057    virtual DtString type() const;
00058 
00059    virtual double distanceToTarget() const;
00060 
00064    virtual double approximateThrust(double speed) const;
00065 
00088    virtual void calculateSteering(const DtVector &relativeVelocity,
00089       const DtVector &localPosition,
00090       const DtVector &targetVelocity,
00091       const DtVector &targetPoint, 
00092       double& maneuverAccelXOut,
00093       double& maneuverAccelYOut,
00094       double& maneuverAccelZOut) = 0;
00095 
00100    virtual void calculateSteeringToPoint(const DtVector &relativeVelocity,
00101       const DtVector &localPosition,
00102       const DtVector &targetPoint, 
00103       double& maneuverAccelXOut,
00104       double& maneuverAccelYOut,
00105       double& maneuverAccelZOut);
00106 
00112    virtual void calculateSteeringUsingPropNav(const DtVector &relativeVelocity,
00113       const DtVector &localPosition,
00114       const DtVector &targetVelocity,
00115       const DtVector &targetPoint, 
00116       double& maneuverAccelXOut,
00117       double& maneuverAccelYOut,
00118       double& maneuverAccelZOut);
00119 
00122    virtual bool createMissileControlPortGroup();
00123    virtual bool createThrustPort();
00124    virtual bool createManeuverAccelXPort();
00125    virtual bool createManeuverAccelYPort();
00126    virtual bool createManeuverAccelZPort();
00127    virtual bool createSelfDestructPort();
00128 
00129    virtual DtConstrainedAnalogOutputPort * thrustPort();
00130    virtual DtConstrainedAnalogOutputPort * maneuverAccelXPort();
00131    virtual DtConstrainedAnalogOutputPort * maneuverAccelYPort();
00132    virtual DtConstrainedAnalogOutputPort * maneuverAccelZPort();
00133    virtual DtBooleanOutputPort *           selfDestructPort();
00134 
00135 protected:
00136    
00138    virtual bool createPortGroups();
00139 
00141    virtual bool createPorts();
00142 
00150    virtual void calculateTargetErrorOffset();
00151 
00159    virtual void lookupAndCacheProcessSR();
00160 
00163    virtual bool postAddComponentsInit();
00164 
00166    virtual void addRangeItems();
00167 
00168 protected:
00170    DtMissileControllerComponent();
00171 
00173    DtMissileControllerComponent(const DtMissileControllerComponent & 
00174       orig);
00175 
00177    const DtMissileControllerComponent & operator=(const 
00178       DtMissileControllerComponent & orig);
00179 
00180 
00181 protected:
00182 
00183    DtMissileStateRepository *       myMissileState;
00184 
00185    double                           myDistanceToTarget;
00186 
00189 
00192    DtOutputPortGroup *                    myMissileControlPortGroup;
00193 
00199    DtConstrainedAnalogOutputPort *        myThrustPort;
00200 
00206    DtConstrainedAnalogOutputPort *        myManeuverAccelXPort;
00207 
00213    DtConstrainedAnalogOutputPort *        myManeuverAccelYPort;
00214 
00220    DtConstrainedAnalogOutputPort *        myManeuverAccelZPort;
00221 
00227    DtBooleanOutputPort *                  mySelfDestructPort;
00228 
00230 
00231    DtVector                         myTargetErrorOffset;
00232 
00238    DtMissileFlightPSR*           myProcessState;
00239 };
00240 #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)