Classes | Public Member Functions | Private Member Functions | Private Attributes
QwtWeedingCurveFitter Class Reference

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

#include <qwt_weeding_curve_fitter.h>

Inheritance diagram for QwtWeedingCurveFitter:
Inheritance graph
[legend]

List of all members.

Classes

class  Line
class  PrivateData

Public Member Functions

uint chunkSize () const
virtual QPolygonF fitCurve (const QPolygonF &) const
virtual QPainterPath fitCurvePath (const QPolygonF &) const
 QwtWeedingCurveFitter (double tolerance=1.0)
void setChunkSize (uint)
void setTolerance (double)
double tolerance () const
virtual ~QwtWeedingCurveFitter ()
 Destructor.

Private Member Functions

virtual QPolygonF simplify (const QPolygonF &) const

Private Attributes

PrivateDatad_data

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 ( double  tolerance = 1.0) [explicit]

Constructor

Parameters:
toleranceTolerance
See also:
setTolerance(), tolerance()

Definition at line 51 of file qwt_weeding_curve_fitter.cpp.

Destructor.

Definition at line 59 of file qwt_weeding_curve_fitter.cpp.


Member Function Documentation

Returns:
Maximum for the number of points passed to a run of the algorithm - or 0, when unlimited
See also:
setChunkSize()

Definition at line 116 of file qwt_weeding_curve_fitter.cpp.

QPolygonF QwtWeedingCurveFitter::fitCurve ( const QPolygonF &  points) const [virtual]
Parameters:
pointsSeries of data points
Returns:
Curve points
See also:
fitCurvePath()

Implements QwtCurveFitter.

Definition at line 126 of file qwt_weeding_curve_fitter.cpp.

QPainterPath QwtWeedingCurveFitter::fitCurvePath ( const QPolygonF &  points) const [virtual]
Parameters:
pointsSeries of data points
Returns:
Curve path
See also:
fitCurve()

Implements QwtCurveFitter.

Definition at line 151 of file qwt_weeding_curve_fitter.cpp.

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:
numPointsMaximum for the number of points passed to the algorithm
See also:
chunkSize()

Definition at line 102 of file qwt_weeding_curve_fitter.cpp.

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:
toleranceTolerance
See also:
tolerance()

Definition at line 77 of file qwt_weeding_curve_fitter.cpp.

QPolygonF QwtWeedingCurveFitter::simplify ( const QPolygonF &  points) const [private, virtual]

Definition at line 158 of file qwt_weeding_curve_fitter.cpp.

Returns:
Tolerance
See also:
setTolerance()

Definition at line 86 of file qwt_weeding_curve_fitter.cpp.


Member Data Documentation

Definition at line 58 of file qwt_weeding_curve_fitter.h.


The documentation for this class was generated from the following files:


plotjuggler
Author(s): Davide Faconti
autogenerated on Fri Sep 1 2017 02:41:58