qwt_spline.h
Go to the documentation of this file.
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * Qwt Widget Library
3  * Copyright (C) 1997 Josef Wilgen
4  * Copyright (C) 2002 Uwe Rathmann
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the Qwt License, Version 1.0
8  *****************************************************************************/
9 
10 #ifndef QWT_SPLINE_H
11 #define QWT_SPLINE_H
12 
13 #include "qwt_global.h"
14 #include "qwt_spline.h"
15 
18 class QPainterPath;
19 class QLineF;
20 class QPolygonF;
21 template <typename T> class QVector;
22 
55 {
56 public:
63  {
70 
77 
89  ClosedPolygon
90  };
91 
97  {
100 
102  AtEnd
103  };
104 
117  {
123 
132 
141 
150  LinearRunout
151  };
152 
153  QwtSpline();
154  virtual ~QwtSpline();
155 
156  void setParametrization( int type );
157  void setParametrization( QwtSplineParametrization * );
158  const QwtSplineParametrization *parametrization() const;
159 
160  void setBoundaryType( BoundaryType );
161  BoundaryType boundaryType() const;
162 
163  void setBoundaryValue( BoundaryPosition, double value );
164  double boundaryValue( BoundaryPosition ) const;
165 
166  void setBoundaryCondition( BoundaryPosition, int condition );
167  int boundaryCondition( BoundaryPosition ) const;
168 
169  void setBoundaryConditions( int condition,
170  double valueBegin = 0.0, double valueEnd = 0.0 );
171 
172  virtual QPolygonF polygon( const QPolygonF &, double tolerance ) const;
173  virtual QPainterPath painterPath( const QPolygonF & ) const = 0;
174 
175  virtual uint locality() const;
176 
177 private:
178  Q_DISABLE_COPY(QwtSpline)
179 
180  class PrivateData;
181  PrivateData *d_data;
182 };
183 
191 {
192 public:
194  virtual ~QwtSplineInterpolating();
195 
196  virtual QPolygonF equidistantPolygon( const QPolygonF &,
197  double distance, bool withNodes ) const;
198 
199  virtual QPolygonF polygon(
200  const QPolygonF &, double tolerance ) const QWT_OVERRIDE;
201 
202  virtual QPainterPath painterPath( const QPolygonF & ) const QWT_OVERRIDE;
203  virtual QVector<QLineF> bezierControlLines( const QPolygonF & ) const = 0;
204 
205 private:
206  Q_DISABLE_COPY(QwtSplineInterpolating)
207 };
208 
214 {
215 public:
216  QwtSplineG1();
217  virtual ~QwtSplineG1();
218 };
219 
233 {
234 public:
235  QwtSplineC1();
236  virtual ~QwtSplineC1();
237 
238  virtual QPainterPath painterPath( const QPolygonF & ) const QWT_OVERRIDE;
239  virtual QVector<QLineF> bezierControlLines( const QPolygonF & ) const QWT_OVERRIDE;
240 
241  virtual QPolygonF equidistantPolygon( const QPolygonF &,
242  double distance, bool withNodes ) const QWT_OVERRIDE;
243 
244  // these methods are the non parametric part
245  virtual QVector<QwtSplinePolynomial> polynomials( const QPolygonF & ) const;
246  virtual QVector<double> slopes( const QPolygonF & ) const = 0;
247 
248  virtual double slopeAtBeginning( const QPolygonF &, double slopeNext ) const;
249  virtual double slopeAtEnd( const QPolygonF &, double slopeBefore ) const;
250 };
251 
265 {
266 public:
273  {
280  CubicRunout = LinearRunout + 1,
281 
289  NotAKnot
290  };
291 
292  QwtSplineC2();
293  virtual ~QwtSplineC2();
294 
295  virtual QPainterPath painterPath( const QPolygonF & ) const QWT_OVERRIDE;
296  virtual QVector<QLineF> bezierControlLines( const QPolygonF & ) const QWT_OVERRIDE;
297 
298  virtual QPolygonF equidistantPolygon( const QPolygonF &,
299  double distance, bool withNodes ) const QWT_OVERRIDE;
300 
301  // calculating the parametric equations
302  virtual QVector<QwtSplinePolynomial> polynomials( const QPolygonF & ) const QWT_OVERRIDE;
303  virtual QVector<double> slopes( const QPolygonF & ) const QWT_OVERRIDE;
304  virtual QVector<double> curvatures( const QPolygonF & ) const = 0;
305 };
306 
307 #endif
Curve parametrization used for a spline interpolation.
enum MQTTPropertyCodes value
virtual QPainterPath painterPath(const QPolygonF &) const QWT_OVERRIDE
Interpolate a curve with Bezier curves.
Definition: qwt_spline.cpp:748
virtual QPolygonF equidistantPolygon(const QPolygonF &, double distance, bool withNodes) const
Find an interpolated polygon with "equidistant" points.
Definition: qwt_spline.cpp:863
#define QWT_EXPORT
Definition: qwt_global.h:38
Base class for all splines.
Definition: qwt_spline.h:54
virtual QVector< QLineF > bezierControlLines(const QPolygonF &) const =0
Interpolate a curve with Bezier curves.
BoundaryCondition
Boundary condition.
Definition: qwt_spline.h:116
virtual QPainterPath painterPath(const QPolygonF &) const QWT_OVERRIDE
Calculate an interpolated painter path.
A cubic polynomial without constant term.
Base class for spline interpolations providing a first order parametric continuity ( C1 ) between adj...
Definition: qwt_spline.h:232
the condiation is at the beginning of the polynomial
Definition: qwt_spline.h:99
Base class for spline interpolations providing a first order geometric continuity ( G1 ) between adjo...
Definition: qwt_spline.h:213
Base class for spline interpolations providing a second order parametric continuity ( C2 ) between ad...
Definition: qwt_spline.h:264
Base class for a spline interpolation.
Definition: qwt_spline.h:190
BoundaryPosition
Definition: qwt_spline.h:96
#define QWT_OVERRIDE
Definition: qwt_global.h:53


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:10