VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/attachedTerrain.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00010 
00011 #pragma once
00012 
00015 
00016 #include "vrfobjcore/vrfobjcoreDefines.h"
00017 #include "vrfutil/rwInt.h"
00018 #include "vrfutil/rwString.h"
00019 #include "vrfutil/rdrWritr.h"
00020 #include "vrfutil/rwObjType.h"
00021 #include <matrix/vlDcm.h>
00022 #include <geometry/intersectionRecord.h>
00023 #include <geometry/point.h>
00024 #include <geometry/chord.h>
00025 #include "vrfobjcore/objectGeometricModel.h"
00026 
00027 class Coordinate_System;
00028 class DtVectorNetworkRecord;
00029 class DtVectorNetworkIntersectionRecord;
00030 class DtObjectGeometricModelEntry;
00031 class DtPhysicalWorld;
00032 class DtGdbNode;
00033 class DtTerrainDatabase;
00034 class DtVrfObject;
00035 class DtChordIntersectionRecord;
00036 class DtSurface;
00037 class DtVectorNetwork;
00038 
00039 class DT_DLL_vrfobjcore DtAttachedTerrain : public DtReaderWriter
00040 {
00041 public:
00042 
00044    DtAttachedTerrain();
00045 
00047    DtAttachedTerrain(const DtString& name, 
00048       DtReaderWriterRegistry* const parentRegistry = 0);
00049 
00050    DtAttachedTerrain(const DtSymbolString& name, 
00051       DtReaderWriterRegistry* const parentRegistry = 0);
00052 
00054    DtAttachedTerrain(const DtString& name, const DtAttachedTerrain& orig, 
00055                       DtReaderWriterRegistry* const parentRegistry = 0);
00056 
00057    DtAttachedTerrain(const DtSymbolString& name, const DtAttachedTerrain& 
00058       from, DtReaderWriterRegistry* const parentRegistry = 0);
00059 
00061    virtual ~DtAttachedTerrain();
00062 
00064    DtAttachedTerrain& operator=(const DtAttachedTerrain & orig);
00065    DtAttachedTerrain& operator=(const DtObjectGeometricModelEntry& orig);
00066 
00070    virtual const char* readerWriterType() const;
00071 
00072    DtAttachedTerrain& operator=(const DtObjectType& type);
00073 
00074 public:
00075    virtual const Coordinate_System* coordinateSystem() const;
00076    virtual Coordinate_System* coordinateSystem();
00077    virtual const Coordinate_System* objectModelCoordinateSystem() const;
00078 
00079 
00080    virtual double terrainHeight(const DtVector& localLocation, 
00081       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00082    virtual bool terrainHeight(const DtVector& localLocation, 
00083       double& terrainHeight, bool* dataAvailable = 0, 
00084       bool overrideBlockingAssert = false) const;
00085 
00086    virtual bool terrainHeightAndSurface(const DtVector& localLocation, 
00087       double& terrainHeight, DtSurface& surface, bool* dataAvailable = 0,
00088       bool overrideBlockingAssert = false) const;
00089 
00090 
00091    virtual bool closestIntersection(const DtVector& localLocation, 
00092       DtPoint& intersectionPoint, 
00093       DtVectorNetworkRecord* vectorNetworkRecord = 0, 
00094       DtVectorNetworkIntersectionRecord* vecNetworkIntersectionRecord = 0,
00095       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00096 
00097    virtual bool closestIntersection(const DtVector& localLocation, 
00098       DtVector& intersectionPoint,
00099       DtVectorNetworkRecord* vectorNetworkRecord = 0, 
00100       DtVectorNetworkIntersectionRecord* vecNetworkIntersectionRecord = 0,
00101       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00102 
00103    virtual bool closestIntersection(const DtVector& localLocation, 
00104       DtChordIntersectionRecord& record,
00105       DtIntersectionRecord::DtIntersectionType irtFlag = 
00106       DtIntersectionRecord::INT_ALL_DATA,
00107       DtVectorNetworkRecord* vectorDatarecord = 0, 
00108       DtVectorNetworkIntersectionRecord* vectorIntersectionRecord = 0,
00109       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00110 
00111    virtual bool intersect(const DtChord& chord, DtPoint& intersectionPoint, 
00112       double& intersectionTime, DtVectorNetworkRecord *record = 0, 
00113       DtVectorNetworkIntersectionRecord *intersectionRecord = 0,
00114       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00115     
00116    virtual bool intersect(const DtChord& chord, 
00117       DtChordIntersectionRecord& record,
00118       DtIntersectionRecord::DtIntersectionType irtFlag = 
00119       DtIntersectionRecord::INT_ALL_DATA,
00120       DtVectorNetworkRecord *vectorDatarecord = 0, 
00121       DtVectorNetworkIntersectionRecord *vectorIntersectionRecord = 0,
00122       bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
00123 
00130    virtual bool closestIntersection(const DtVector& curPosition, 
00131       DtVector& intersection, bool ignoreWater, bool* dataAvailable = 0,
00132       bool overrideBlockingAssert = false) const;
00133 
00135    virtual const DtVectorNetwork* vectorNetwork() const;
00136 
00137 protected:
00138    bool testInvariant() const;
00139 
00142    virtual double setOriginToDatabase();
00143 
00145    virtual const DtDcm& rotateToDcm() const;
00146    virtual const DtDcm& rotateBackDcm() const;
00147 
00149    virtual DtVector rotateTerrainLocation(const DtVector& source) const;
00150 
00153    virtual DtChord convertAndRotateChordToLocal(const DtChord& source) const;
00154 
00156    virtual DtPoint convertLocalToSimTerrain(const DtPoint&, double addHeight = 0.) const;
00157 
00160    virtual void convertLocalToSimTerrain(DtChordIntersectionRecord&, double addHeight = 0.) const;
00161 
00162 public:
00163    void setObjectName(const DtString&);
00164    const DtString objectName() const;
00165 
00166    void setObjectType(const DtObjectType&);
00167    const DtObjectType& objectType() const;
00168 
00169    void addRef();
00170    void removeRef();
00171    int referenceCount() const;
00172 
00173    void setObjectGeometricModel(const DtObjectGeometricModel* newObjGeomModel);
00174    const DtObjectGeometricModel* objectGeometricModel() const;
00175 
00176    void setEntity(const DtVrfObject*);
00177    const DtVrfObject* entity() const;
00178 
00179    void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
00180    DtPhysicalWorld* physicalWorld();
00181    const DtPhysicalWorld* physicalWorld() const;
00182 
00183    void clear();
00184 
00185    virtual DtAttachedTerrain* clone(const DtString& name, DtReaderWriterRegistry* const parentRegistry = 0) const;
00186 
00187 protected:
00188    DtRwString                 myObjectName;
00189    DtRwObjectType             myObjectType;
00190    int                        myReferenceCount;
00191 
00193    const DtObjectGeometricModel*   myObjectGeometricModel;
00194 
00197    const DtVrfObject*         myEntity;
00198 
00201    DtPhysicalWorld*           myPhysicalWorld;
00202 
00205    mutable DtTaitBryan        myLastEntityOrientation;
00206    mutable DtDcm              myRotateToDcm;
00207    mutable DtDcm              myRotateBackDcm;
00208 };
00209 

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)