![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: boundingVolumesManager.h,v $ $Revision: 1.7 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DTBOUNDINGVOLUMESMANAGER_H_ 00013 #define DTBOUNDINGVOLUMESMANAGER_H_ 00014 00015 #include "geometry/point.h" 00016 #include "ngutil/entityMapperKey.h" 00017 #include "geometry/tdbextent.h" 00018 #include "ngutil/orderedKeyList.h" 00019 00020 #include <matrix/3dBoundingVolume.h> 00021 00022 class DtModelData; 00023 class Coordinate_System; 00024 class DtDcm; 00025 00026 #include "terrainqt/terrainqtDefines.h" 00027 class DT_DLL_terrainqt DtBoundingVolumeInfo : public DtEntityMapperKey 00028 { 00029 public: 00030 DtBoundingVolumeInfo(const DtEntityMapperKey& key, const DtPoint& volume, 00031 const DtPoint& offset); 00032 DtBoundingVolumeInfo(const DtBoundingVolumeInfo& orig); 00033 00034 virtual void setVolume(const DtPoint& volume); 00035 virtual const DtPoint& volume() const; 00036 00037 virtual void setOffset(const DtPoint& offset); 00038 virtual const DtPoint& offset() const; 00039 00040 virtual DtBoundingVolumeInfo& operator=(const DtBoundingVolumeInfo& orig); 00041 00042 virtual DtBoundingVolumeInfo* clone(); 00043 00044 protected: 00045 DtPoint myBoundingVolume; 00046 DtPoint myOffset; 00047 }; 00048 00049 class DT_DLL_terrainqt DtBoundingVolumesManager 00050 { 00051 public: 00052 DtBoundingVolumesManager(); 00053 virtual ~DtBoundingVolumesManager(); 00054 00055 virtual bool init(const QString& boundingVolumesFile); 00056 virtual DtBoundingVolumeInfo* boundingVolume(const DtEntityMapperKey& data) const; 00057 virtual bool addBoundingVolume(DtBoundingVolumeInfo* volume); 00058 00062 virtual DtBoundingVolumeInfo boundingVolume(const DtModelData& data) const; 00063 00067 virtual Dt3dBoundingVolume computeExtent(const DtPoint& boudingVolume, 00068 const DtPoint& offset, const DtPoint& symbolOrigin, const DtModelData& data) const; 00069 00071 virtual void computeBoundingBox(const DtPoint& boundingVolume, 00072 const DtPoint& offset, const DtPoint& symbolOrigin, const DtModelData& data, 00073 DtVector& ul, DtVector& ll, DtVector& ur, DtVector& lr, const Coordinate_System* cs, const DtDcm& bodyToGeoc) const; 00074 00077 virtual bool intersectLineOfChord(Dt3dBoundingVolume& source, 00078 const DtModelData* data, const DtVector& targetOrigin, const DtVector& start, 00079 const DtVector& end, const DtDcm& bodyToGeoc, DtVector* pointIn = NULL, DtVector* pointOut = NULL); 00080 00081 public: 00082 static DtBoundingVolumesManager* create(); 00083 00084 protected: 00085 DtOrderedKeyList<DtBoundingVolumeInfo*> myBoundingVolumes; 00086 }; 00087 00088 #endif