![]() |
VR-Link API Documentation for HLA 1516
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00006 #ifndef Dt3dPoint_H 00007 #define Dt3dPoint_H 00008 00012 00013 #include <vlutil/vlMachineTypes.h> 00014 00015 #include <iosfwd> 00016 00017 #ifdef DtUSE_UTILITIES_NAMESPACE 00018 namespace DtUSE_UTILITIES_NAMESPACE 00019 { 00020 #endif 00021 00022 class DtVector; 00023 class Dt4dPoint; 00024 00025 00028 class Dt3dPoint; 00029 typedef Dt3dPoint Dt3dVertex; 00030 00042 00043 class DT_DLL_MATRIX Dt3dPoint 00044 { 00045 public: 00046 00048 inline Dt3dPoint(); 00049 00051 inline Dt3dPoint( const double& x, const double& y, const double& z); 00052 00054 inline Dt3dPoint(const Dt3dPoint& orig); 00055 00057 inline ~Dt3dPoint(); 00058 00059 Dt3dPoint& operator=(const Dt3dPoint& rhs); 00060 00062 00063 const double& operator[](const int index) const; 00064 double& operator[](const int index); 00066 00067 inline bool operator==(const Dt3dPoint& rhs) const; 00068 inline bool operator!=(const Dt3dPoint& rhs) const; 00069 00071 00072 inline Dt3dPoint operator*(const double& rhs) const; 00073 inline Dt3dPoint& operator*=(const double& rhs); 00075 00077 00078 00079 00080 inline Dt3dPoint operator/(const double& rhs) const; 00081 inline Dt3dPoint& operator/=(const double& rhs); 00083 00084 inline Dt3dPoint operator+(const DtVector& rhs) const; 00085 inline Dt3dPoint& operator+=(const DtVector& rhs); 00086 00087 inline DtVector operator-(const Dt3dPoint & rhs) const; 00088 inline Dt3dPoint operator-(const DtVector& rhs) const; 00089 inline Dt3dPoint& operator-=(const DtVector& rhs); 00090 00092 Dt3dPoint differenceAs3dPoint(const Dt3dPoint& rhs) const; 00093 00095 DtVector difference(const Dt3dPoint& rhs) const; 00096 00099 bool approxEq(const Dt3dPoint& p, const double& tolerance) const; 00100 00102 inline const double& x() const; 00103 00105 inline const double& y() const; 00106 00108 inline const double& z() const; 00109 00110 inline void set( const double& x, const double& y, const double& z); 00111 00113 inline void setX(const double& x); 00114 00116 inline void setY(const double& y); 00117 00119 inline void setZ(const double& z); 00120 00121 inline void setFromVector( const DtVector & vector ); 00122 00124 inline void setFrom4dPoint( const Dt4dPoint & point ); 00125 00127 double distanceTo(const Dt3dPoint & end) const; 00128 00130 double distanceSquaredTo(const Dt3dPoint & end) const; 00131 00133 double xyDistanceTo(const Dt3dPoint & end) const; 00134 00136 double xyDistanceSquaredTo(const Dt3dPoint & end) const; 00137 00139 double xyDistanceToLine(const Dt3dPoint& pointA, const Dt3dPoint& pointB) const; 00142 double xyDistanceToLineSquared(const Dt3dPoint& pointA, const Dt3dPoint& pointB) const; 00143 00145 double magnitudeSquared() const; 00146 00150 void normalize(); 00151 00154 Dt3dPoint(const DtVector& orig); 00155 00158 Dt3dPoint& operator=(const DtVector& rhs); 00159 00162 Dt3dPoint operator+(const Dt3dPoint& rhs) const; 00163 00166 Dt3dPoint& operator+=(const Dt3dPoint& rhs); 00167 00170 Dt3dPoint& operator-=(const Dt3dPoint& rhs); 00171 00172 00173 protected: 00174 00175 //no not change the order of this classes data memebers 00176 //VR-Forces depends on the current ordering. 00177 double myX; 00178 double myY; 00179 double myZ; 00180 }; 00181 00182 00183 DT_DLL_MATRIX std::ostream& operator<<(std::ostream& os, const Dt3dPoint& point); 00184 DT_DLL_MATRIX std::istream& operator>>(std::istream& is, Dt3dPoint& point); 00185 00186 #ifdef DtUSE_UTILITIES_NAMESPACE 00187 } 00188 #endif 00189 00190 #define _3dPoint_inl 00191 #include "3dPoint.inl" 00192 #undef _3dPoint_inl 00193 00194 00195 #endif 00196