QGIS API Documentation  2.2.0-Valmiera
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CloughTocherInterpolator.h
Go to the documentation of this file.
1 /***************************************************************************
2  CloughTocherInterpolator.h - description
3  -------------------
4  copyright : (C) 2004 by Marco Hugentobler
5  email : [email protected]
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 CLOUGHTOCHERINTERPOLATOR_H
18 #define CLOUGHTOCHERINTERPOLATOR_H
19 
20 #include "NormVecDecorator.h"
21 #include "TriangleInterpolator.h"
22 #include "Point3D.h"
23 #include "Vector3D.h"
24 #include "MathUtils.h"
25 #include "Bezier3D.h"
26 
28 class ANALYSIS_EXPORT CloughTocherInterpolator : public TriangleInterpolator
29 {
30  protected:
58  double der1X;
60  double der1Y;
62  double der2X;
64  double der2Y;
66  double der3X;
68  double der3Y;
76  void init( double x, double y );
78  double calcBernsteinPoly( int n, int i, int j, int k, double u, double v, double w );
79 
80  public:
86  virtual ~CloughTocherInterpolator();
88  virtual bool calcNormVec( double x, double y, Vector3D* result );
90  virtual bool calcPoint( double x, double y, Point3D* result );
91  virtual void setTriangulation( NormVecDecorator* tin );
92 };
93 
94 
95 inline CloughTocherInterpolator::CloughTocherInterpolator() : mTIN( 0 ), mEdgeTolerance( 0.00001 )
96 {
97 
98 }
99 
100 inline CloughTocherInterpolator::CloughTocherInterpolator( NormVecDecorator* tin ) : mTIN( tin ), mEdgeTolerance( 0.00001 )
101 {
102 
103 }
104 
106 {
107  //nothing to do
108 }
109 
111 {
112  mTIN = tin;
113 }
114 
115 #endif
116 
117 
118