Branch data Line data Source code
1 : : /*************************************************************************** 2 : : LinTriangleInterpolator.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 LINTRIANGLEINTERPOLATOR_H 18 : : #define LINTRIANGLEINTERPOLATOR_H 19 : : 20 : : #include "TriangleInterpolator.h" 21 : : #include "qgsdualedgetriangulation.h" 22 : : #include "qgis_analysis.h" 23 : : 24 : : #define SIP_NO_FILE 25 : : 26 : : /** 27 : : * \ingroup analysis 28 : : * \brief LinTriangleInterpolator is a class which interpolates linearly on a triangulation. 29 : : * \note Not available in Python bindings. 30 : : */ 31 : 0 : class ANALYSIS_EXPORT LinTriangleInterpolator : public TriangleInterpolator 32 : : { 33 : : public: 34 : : //! Default constructor 35 : : LinTriangleInterpolator() = default; 36 : : //! Constructor with reference to a DualEdgeTriangulation object 37 : : LinTriangleInterpolator( QgsDualEdgeTriangulation *tin ); 38 : : //! Calculates the normal vector and assigns it to vec 39 : : bool calcNormVec( double x, double y, QgsPoint &result SIP_OUT ) override; 40 : : bool calcPoint( double x, double y, QgsPoint &result SIP_OUT ) override; 41 : : //! Returns a pointer to the current Triangulation object 42 : : virtual QgsDualEdgeTriangulation *getTriangulation() const; 43 : : //! Sets a Triangulation 44 : : virtual void setTriangulation( QgsDualEdgeTriangulation *tin ); 45 : : 46 : : 47 : : protected: 48 : : QgsDualEdgeTriangulation *mTIN = nullptr; 49 : : //! Calculates the first derivative with respect to x for a linear surface and assigns it to vec 50 : : virtual bool calcFirstDerX( double x, double y, Vector3D *result SIP_OUT ); 51 : : //! Calculates the first derivative with respect to y for a linear surface and assigns it to vec 52 : : virtual bool calcFirstDerY( double x, double y, Vector3D *result SIP_OUT ); 53 : : }; 54 : : 55 : : #ifndef SIP_RUN 56 : : 57 : 0 : inline LinTriangleInterpolator::LinTriangleInterpolator( QgsDualEdgeTriangulation *tin ): mTIN( tin ) 58 : 0 : { 59 : : 60 : 0 : } 61 : : 62 : 0 : inline QgsDualEdgeTriangulation *LinTriangleInterpolator::getTriangulation() const 63 : : { 64 : 0 : return mTIN; 65 : : } 66 : : 67 : 0 : inline void LinTriangleInterpolator::setTriangulation( QgsDualEdgeTriangulation *tin ) 68 : : { 69 : 0 : mTIN = tin; 70 : 0 : } 71 : : 72 : : #endif 73 : : #endif 74 : : 75 : : 76 : : 77 : : 78 : : 79 : : 80 : :