Loading...
Searching...
No Matches
QwtWeedingCurveFitter Class Reference

A curve fitter implementing Douglas and Peucker algorithm. More...

`#include <qwt_weeding_curve_fitter.h>`

Inheritance diagram for QwtWeedingCurveFitter:

## 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 override
virtual QPainterPath | fitCurvePath (const QPolygonF &) const override
Public Member Functions inherited from QwtCurveFitter
virtual | ~QwtCurveFitter ()
| Destructor.
Mode | mode () const

## Additional Inherited Members

Public Types inherited from QwtCurveFitter
enum | Mode { Polygon , Path }
| Preferred mode of the fitting algorithm. More...
Protected Member Functions inherited from QwtCurveFitter
| QwtCurveFitter (Mode mode)

## Detailed Description

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.

Definition at line 38 of file qwt_weeding_curve_fitter.h.

## Constructor & Destructor Documentation

## QwtWeedingCurveFitter()

QwtWeedingCurveFitter::QwtWeedingCurveFitter | ( | double | tolerance = 1.0 | ) |

explicit

Constructor

Parameters

  tolerance | Tolerance

See also
  setTolerance(), tolerance()

Definition at line 50 of file qwt_weeding_curve_fitter.cpp.

## ~QwtWeedingCurveFitter()

QwtWeedingCurveFitter::~QwtWeedingCurveFitter | ( |  | ) |

virtual

Destructor.

Definition at line 58 of file qwt_weeding_curve_fitter.cpp.

## Member Function Documentation

## chunkSize()

uint QwtWeedingCurveFitter::chunkSize | ( |  | ) | const

Returns
  Maximum for the number of points passed to a run of the algorithm - or 0, when unlimited

See also
  setChunkSize()

Definition at line 114 of file qwt_weeding_curve_fitter.cpp.

## fitCurve()

QPolygonF QwtWeedingCurveFitter::fitCurve | ( | const QPolygonF & | points | ) | const

overridevirtual

Parameters

  points | Series of data points

Returns
  Curve points

See also
  fitCurvePath()

Implements QwtCurveFitter.

Definition at line 124 of file qwt_weeding_curve_fitter.cpp.

## fitCurvePath()

QPainterPath QwtWeedingCurveFitter::fitCurvePath | ( | const QPolygonF & | points | ) | const

overridevirtual

Parameters

  points | Series of data points

Returns
  Curve path

See also
  fitCurve()

Implements QwtCurveFitter.

Definition at line 151 of file qwt_weeding_curve_fitter.cpp.

## setChunkSize()

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.

Parameters

  numPoints | Maximum for the number of points passed to the algorithm

See also
  chunkSize()

Definition at line 101 of file qwt_weeding_curve_fitter.cpp.

## setTolerance()

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.

Parameters

  tolerance | Tolerance

See also
  tolerance()

Definition at line 76 of file qwt_weeding_curve_fitter.cpp.

## simplify()

QPolygonF QwtWeedingCurveFitter::simplify | ( | const QPolygonF & | points | ) | const

privatevirtual

Definition at line 158 of file qwt_weeding_curve_fitter.cpp.

## tolerance()

double QwtWeedingCurveFitter::tolerance | ( |  | ) | const

Returns
  Tolerance

See also
  setTolerance()

Definition at line 85 of file qwt_weeding_curve_fitter.cpp.