Qwt User's Guide
6.1.3

A curve fitter implementing Douglas and Peucker algorithm. More...
#include <qwt_curve_fitter.h>
Public Member Functions  
QwtWeedingCurveFitter (double tolerance=1.0)  
virtual  ~QwtWeedingCurveFitter () 
Destructor.  
void  setTolerance (double) 
double  tolerance () const 
void  setChunkSize (uint) 
uint  chunkSize () const 
virtual QPolygonF  fitCurve (const QPolygonF &) const 
Public Member Functions inherited from QwtCurveFitter  
virtual  ~QwtCurveFitter () 
Destructor.  
Additional Inherited Members  
Protected Member Functions inherited from QwtCurveFitter  
QwtCurveFitter ()  
Constructor.  
A curve fitter implementing Douglas and Peucker algorithm.
The purpose of the Douglas and Peucker algorithm is that given a 'curve' composed of line segments to find a curve not too dissimilar but that has fewer points. The algorithm defines 'too dissimilar' based on the maximum distance (tolerance) between the original curve and the smoothed curve.
The runtime of the algorithm increases non linear ( worst case O( n*n ) ) and might be very slow for huge polygons. To avoid performance issues it might be useful to split the polygon ( setChunkSize() ) and to run the algorithm for these smaller parts. The disadvantage of having no interpolation at the borders is for most use cases irrelevant.
The smoothed curve consists of a subset of the points that defined the original curve.
In opposite to QwtSplineCurveFitter the Douglas and Peucker algorithm reduces the number of points. By adjusting the tolerance parameter according to the axis scales QwtSplineCurveFitter can be used to implement different level of details to speed up painting of curves of many points.
QwtWeedingCurveFitter::QwtWeedingCurveFitter  (  double  tolerance = 1.0  ) 
uint QwtWeedingCurveFitter::chunkSize  (  )  const 

virtual 
void QwtWeedingCurveFitter::setChunkSize  (  uint  numPoints  ) 
Limit the number of points passed to a run of the algorithm
The runtime of the Douglas Peucker algorithm increases non linear with the number of points. For a chunk size > 0 the polygon is split into pieces passed to the algorithm one by one.
numPoints  Maximum for the number of points passed to the algorithm 
void QwtWeedingCurveFitter::setTolerance  (  double  tolerance  ) 
Assign the tolerance
The tolerance is the maximum distance, that is acceptable between the original curve and the smoothed curve.
Increasing the tolerance will reduce the number of the resulting points.
tolerance  Tolerance 
double QwtWeedingCurveFitter::tolerance  (  )  const 