![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: vrfObjGeom.h,v $ $Revision: 1.31 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef vrfObjGeom_H_ 00009 #define vrfObjGeom_H_ 00010 00013 00014 #include "vrfutil/boundingGeom.h" 00015 #include "vrfutil/rwBoolean.h" 00016 #include "vrfutil/rdrWritr.h" 00017 00018 #include "vrfutil/lclVecIter.h" 00019 #include "vrfutil/lclVtxList.h" 00020 00021 class Coordinate_System; 00022 class DtRwVectorIterator; 00023 class DtLocalVertexIterator; 00024 class DtSimObjectStateRepository; 00025 00030 #include "vrfobjcore/vrfobjcoreDefines.h" 00031 class DT_DLL_vrfobjcore DtVrfObjectGeometry : public DtReaderWriter 00032 { 00033 private: 00035 DtVrfObjectGeometry(); 00036 00037 public: 00038 00040 DtVrfObjectGeometry(DtSimObjectStateRepository* sr, 00041 const DtString& rwName = DtString::nullString(), 00042 DtReaderWriterRegistry* parentRegistry = 0); 00043 00045 DtVrfObjectGeometry(const DtVrfObjectGeometry& orig, 00046 const DtString& rwName = DtString::nullString(), 00047 DtReaderWriterRegistry* parentRegistry = 0); 00048 00050 const DtVrfObjectGeometry& operator=(DtVrfObjectGeometry& orig); 00051 00053 virtual ~DtVrfObjectGeometry(); 00054 00056 virtual DtVrfObjectGeometry* clone( 00057 const DtString& rwName = DtString::nullString(), 00058 DtReaderWriterRegistry* parentRegistry = 0) const; 00059 00061 virtual const DtSimBoundingGeometry& boundingGeometry() const; 00062 virtual DtSimBoundingGeometry& boundingGeometry(); 00063 virtual void setBoundingGeometry(const DtSimBoundingGeometry& bounds); 00064 00067 virtual bool closedFigure() const; 00068 virtual void setClosedFigure(bool closed); 00069 00072 virtual bool projection() const; 00073 virtual void setProjection(bool projection); 00074 00076 virtual void removeAllObjectVertices(); 00077 00082 virtual void setObjectVertices(const DtLocalVertexList& vertices); 00083 virtual void setObjectVertices(const DtList& vertices); 00084 virtual const DtLocalVertexList& objectVertices() const; 00085 virtual DtLocalVertexList& objectVertices(); 00087 00088 virtual const DtLocalVectorIterator& objectVertexIterator() const; 00089 00090 00091 //****** 00092 const DtVertexList& oldWorld() const; 00093 00096 virtual bool worldPointInsideBoundingGeometry( 00097 const DtVector& worldPoint, const DtVector& objectWorldLocation, 00098 const DtTaitBryan& objectWorldOrientation) const; 00099 00103 virtual double worldDistSquaredTo(const DtVector& point) const; 00104 00107 virtual bool worldGetClosestVertex(const DtVector& point, 00108 DtVector& vertex) const; 00109 00112 virtual bool localGetClosestVertex(const DtVector& point, DtVector& vertex) const; 00113 00118 virtual bool worldGetClosestLine(const DtVector& point, 00119 DtVector& linePt1, DtVector& linePt2) const; 00120 00125 virtual bool localGetClosestLine(const DtVector& point, 00126 DtVector& linePt1, DtVector& linePt2) const; 00127 00132 virtual const DtSimBoundingGeometry& worldBoundingGeometry() const; 00133 virtual DtSimBoundingGeometry& worldBoundingGeometry(); 00134 virtual void setWorldBoundingGeometry(const DtSimBoundingGeometry& bounds); 00136 00137 virtual void removeVertex(int iIndex); 00138 00152 virtual bool calculateBoundingVolume(const DtVertexList& vertices, 00153 DtSimBoundingGeometry& boundingGeometry); 00154 00165 00166 virtual const DtSimBoundingGeometry& localBoundingGeometry() const; 00167 virtual DtSimBoundingGeometry& localBoundingGeometry(); 00168 virtual void setLocalBoundingGeometry(const DtSimBoundingGeometry& bounds); 00169 00170 virtual double distSquaredTo(const DtVector& testPoint) const; 00171 00172 protected: 00173 00175 virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath, 00176 const DtVariableBindingsList& variableBindings); 00177 00179 void removeAllOldWorldVertices(); 00180 00181 protected: 00182 00183 DtLocalVertexList myObjectVertices; 00184 DtSimBoundingGeometry myBoundingGeometry; 00185 00186 DtRwBoolean myClosedFigure; 00187 DtRwBoolean myProjection; 00188 00191 DtVertexList myOldWorld; 00192 00193 DtSimObjectStateRepository* myStateRep; 00194 }; 00195 00196 inline const DtVertexList& DtVrfObjectGeometry::oldWorld() const 00197 { 00198 return myOldWorld; 00199 } 00200 00201 #endif