Branch data Line data Source code
1 : : /*************************************************************************** 2 : : Vector3D.h - description 3 : : ------------------- 4 : : copyright : (C) 2004 by Marco Hugentobler 5 : : email : mhugent@geo.unizh.ch 6 : : ***************************************************************************/ 7 : : 8 : : /*************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : 17 : : #ifndef VECTOR3D_H 18 : : #define VECTOR3D_H 19 : : 20 : : #include <cmath> 21 : : #include "qgis_analysis.h" 22 : : 23 : : #define SIP_NO_FILE 24 : : 25 : : /** 26 : : * \ingroup analysis 27 : : * \brief Class Vector3D represents a 3D-Vector, capable to store x-,y- and 28 : : * z-coordinates in double values. 29 : : * 30 : : * In fact, the class is the same as QgsPoint. 31 : : * The name 'vector' makes it easier to understand the programs. 32 : : * \note Not available in Python bindings 33 : : */ 34 : : 35 : : class ANALYSIS_EXPORT Vector3D 36 : : { 37 : : protected: 38 : : //! X-component of the vector 39 : 0 : double mX = 0; 40 : : //! Y-component of the vector 41 : 0 : double mY = 0; 42 : : //! Z-component of the vector 43 : 0 : double mZ = 0; 44 : : 45 : : public: 46 : : //! Constructor taking the three components as arguments 47 : : Vector3D( double x, double y, double z ); 48 : : //! Default constructor 49 : 0 : Vector3D() = default; 50 : : 51 : : bool operator==( const Vector3D &v ) const; 52 : : bool operator!=( const Vector3D &v ) const; 53 : : //! Returns the x-component of the vector 54 : : double getX() const; 55 : : //! Returns the y-component of the vector 56 : : double getY() const; 57 : : //! Returns the z-component of the vector 58 : : double getZ() const; 59 : : //! Returns the length of the vector 60 : : double getLength() const; 61 : : //! Sets the x-component of the vector 62 : : void setX( double x ); 63 : : //! Sets the y-component of the vector 64 : : void setY( double y ); 65 : : //! Sets the z-component of the vector 66 : : void setZ( double z ); 67 : : //! Standardises the vector 68 : : void standardise(); 69 : : 70 : : private: 71 : : #ifdef SIP_RUN 72 : : Vector3D( const Vector3D &v ); 73 : : #endif 74 : : }; 75 : : 76 : : #ifndef SIP_RUN 77 : : 78 : : //------------------------------------------constructors------------------------------------ 79 : : 80 : 0 : inline Vector3D::Vector3D( double x, double y, double z ) 81 : 0 : : mX( x ) 82 : 0 : , mY( y ) 83 : 0 : , mZ( z ) 84 : : { 85 : : 86 : 0 : } 87 : : 88 : : //-------------------------------------------setter and getters------------------------------- 89 : : 90 : 0 : inline double Vector3D::getX() const 91 : : { 92 : 0 : return mX; 93 : : } 94 : : 95 : 0 : inline double Vector3D::getY() const 96 : : { 97 : 0 : return mY; 98 : : } 99 : : 100 : 0 : inline double Vector3D::getZ() const 101 : : { 102 : 0 : return mZ; 103 : : } 104 : : 105 : 0 : inline void Vector3D::setX( double x ) 106 : : { 107 : 0 : mX = x; 108 : 0 : } 109 : : 110 : 0 : inline void Vector3D::setY( double y ) 111 : : { 112 : 0 : mY = y; 113 : 0 : } 114 : : 115 : 0 : inline void Vector3D::setZ( double z ) 116 : : { 117 : 0 : mZ = z; 118 : 0 : } 119 : : 120 : : #endif 121 : : #endif