|
QWT 7.0.1
|
Base class for all splines. More...
#include <qwt_spline.h>
Classes | |
| class | PrivateData |
Public Types | |
| enum | BoundaryType { ConditionalBoundaries , PeriodicPolygon , ClosedPolygon } |
| Boundary type specifying the spline at its endpoints. More... | |
| enum | BoundaryPosition { AtBeginning , AtEnd } |
| position of a boundary condition More... | |
| enum | BoundaryCondition { Clamped1 , Clamped2 , Clamped3 , LinearRunout } |
| Boundary condition. More... | |
Public Member Functions | |
| QwtSpline () | |
| Constructor. | |
| virtual | ~QwtSpline () |
| Destructor. | |
| void | setParametrization (int type) |
| Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization. | |
| void | setParametrization (QwtSplineParametrization *) |
| Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization. | |
| const QwtSplineParametrization * | parametrization () const |
| void | setBoundaryType (BoundaryType) |
| Define the boundary type for the endpoints of the approximating spline. | |
| BoundaryType | boundaryType () const |
| void | setBoundaryValue (BoundaryPosition, double value) |
| Define the boundary value. | |
| double | boundaryValue (BoundaryPosition) const |
| void | setBoundaryCondition (BoundaryPosition, int condition) |
| Define the condition for an endpoint of the spline. | |
| int | boundaryCondition (BoundaryPosition) const |
| void | setBoundaryConditions (int condition, double valueBegin=0.0, double valueEnd=0.0) |
| Define the condition at the endpoints of a spline. | |
| virtual QPolygonF | polygon (const QPolygonF &, double tolerance) const |
| Interpolate a curve by a polygon. | |
| virtual QPainterPath | painterPath (const QPolygonF &) const =0 |
| Approximates a polygon piecewise with cubic Bezier curves and returns them as QPainterPath. | |
| virtual uint | locality () const |
| The locality of an spline interpolation identifies how many adjacent polynomials are affected, when changing the position of one point. | |
Base class for all splines.
A spline is a curve represented by a sequence of polynomials. Spline approximation is the process of finding polynomials for a given set of points. When the algorithm preserves the initial points it is called interpolating.
Splines can be classified according to conditions of the polynomials that are met at the start/endpoints of the pieces:
Geometric continuity requires the geometry to be continuous, while parametric continuity requires that the underlying parameterization be continuous as well. Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.
QwtSpline is the base class for spline approximations of any continuity.
Boundary condition.
A spline algorithm calculates polynomials by looking a couple of points back/ahead ( locality() ). At the ends additional rules are necessary to compensate the missing points.
| Enumerator | |
|---|---|
| Clamped1 | The first derivative at the end point is given.
|
| Clamped2 | The second derivative at the end point is given.
|
| Clamped3 | The third derivative at the end point is given.
|
| LinearRunout | The first derivate at the endpoint is related to the first derivative at its neighbour by the boundary value. F,e when the boundary value at the end is 1.0 then the slope at the last 2 points is the same.
|
position of a boundary condition
| Enumerator | |
|---|---|
| AtBeginning | the condition is at the beginning of the polynomial |
| AtEnd | the condition is at the end of the polynomial |
Boundary type specifying the spline at its endpoints.
| Enumerator | |
|---|---|
| ConditionalBoundaries | The polynomials at the start/endpoint depend on specific conditions.
|
| PeriodicPolygon | The polynomials at the start/endpoint are found by using imaginary additional points. Additional points at the end are found by translating points from the beginning or v.v. |
| ClosedPolygon | ClosedPolygon is similar to PeriodicPolygon beside, that the interpolation includes the connection between the last and the first control point.
|
| QwtSpline::QwtSpline | ( | ) |
Constructor.
The default setting is a non closing spline with chordal parametrization
| int QwtSpline::boundaryCondition | ( | BoundaryPosition | position | ) | const |
| position | At the beginning or the end of the spline |
| QwtSpline::BoundaryType QwtSpline::boundaryType | ( | ) | const |
| double QwtSpline::boundaryValue | ( | BoundaryPosition | position | ) | const |
| position | At the beginning or the end of the spline |
|
virtual |
The locality of an spline interpolation identifies how many adjacent polynomials are affected, when changing the position of one point.
A locality of 'n' means, that changing the coordinates of a point has an effect on 'n' leading and 'n' following polynomials. Those polynomials can be calculated from a local subpolygon.
A value of 0 means, that the interpolation is not local and any modification of the polygon requires to recalculate all polynomials ( f.e cubic splines ).
Reimplemented in QwtSplineBasis, QwtSplineCubic, QwtSplineLocal, and QwtSplinePleasing.
|
pure virtual |
Approximates a polygon piecewise with cubic Bezier curves and returns them as QPainterPath.
| points | Control points |
Implemented in QwtSplineInterpolating, QwtSplineC1, QwtSplineC2, QwtSplineBasis, QwtSplineCubic, QwtSplineLocal, and QwtSplinePleasing.
| const QwtSplineParametrization * QwtSpline::parametrization | ( | ) | const |
|
virtual |
Interpolate a curve by a polygon.
Interpolates a polygon piecewise with Bezier curves interpolating them in a 2nd pass by polygons.
The interpolation is based on "Piecewise Linear Approximation of Bézier Curves" by Roger Willcocks ( http://www.rops.org )
| points | Control points |
| tolerance | Maximum for the accepted error of the approximation |
Reimplemented in QwtSplineInterpolating.
| void QwtSpline::setBoundaryCondition | ( | BoundaryPosition | position, |
| int | condition | ||
| ) |
Define the condition for an endpoint of the spline.
| position | At the beginning or the end of the spline |
| condition | Condition |
| void QwtSpline::setBoundaryConditions | ( | int | condition, |
| double | valueBegin = 0.0, |
||
| double | valueEnd = 0.0 |
||
| ) |
Define the condition at the endpoints of a spline.
| condition | Condition |
| valueBegin | Used for the condition at the beginning of te spline |
| valueEnd | Used for the condition at the end of te spline |
| void QwtSpline::setBoundaryType | ( | BoundaryType | boundaryType | ) |
Define the boundary type for the endpoints of the approximating spline.
| boundaryType | Boundary type |
| void QwtSpline::setBoundaryValue | ( | BoundaryPosition | position, |
| double | value | ||
| ) |
Define the boundary value.
The boundary value is an parameter used in combination with the boundary condition. Its meaning depends on the condition.
| position | At the beginning or the end of the spline |
| value | Value used for the condition at the end point |
| void QwtSpline::setParametrization | ( | int | type | ) |
Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization.
| type | Type of parametrization, usually one of QwtSplineParametrization::Type |
| void QwtSpline::setParametrization | ( | QwtSplineParametrization * | parametrization | ) |
Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization.
| parametrization | Parametrization |