QwtSpline Class Referenceabstract

Base class for all splines. More...

`#include <qwt_spline.h>`

Inheritance diagram for QwtSpline:

## Public Types

enum | BoundaryType { ConditionalBoundaries , PeriodicPolygon , ClosedPolygon }
enum | BoundaryPosition { AtBeginning , AtEnd }
enum | BoundaryCondition { Clamped1 , Clamped2 , Clamped3 , LinearRunout }
| Boundary condition. More...

## Public Member Functions

| QwtSpline ()
| Constructor. More...
virtual | ~QwtSpline ()
| Destructor.
void | setParametrization (int type)
void | setParametrization (QwtSplineParametrization *)
const QwtSplineParametrization * | parametrization () const
void | setBoundaryType (BoundaryType)
BoundaryType | boundaryType () const
void | setBoundaryValue (BoundaryPosition, double value)
| Define the boundary value. More...
double | boundaryValue (BoundaryPosition) const
void | setBoundaryCondition (BoundaryPosition, int condition)
| Define the condition for an endpoint of the spline. More...
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. More...
virtual QPolygonF | polygon (const QPolygonF &, double tolerance) const
| Interpolate a curve by a polygon. More...
virtual QPainterPath | painterPath (const QPolygonF &) const =0
virtual uint | locality () const

## Detailed Description

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
  - G0: polynomials are joined
  - G1: first derivatives are proportional at the join point The curve tangents thus have the same direction, but not necessarily the same magnitude. i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
  - G2: first and second derivatives are proportional at join point
- Parametric Continuity
  - C0: curves are joined
  - C1: first derivatives equal
  - C2: first and second derivatives are equal

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.

Definition at line 57 of file qwt_spline.h.

## Member Enumeration Documentation

## BoundaryCondition

enum QwtSpline::BoundaryCondition

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.

See also
  boundaryCondition(), boundaryValue()
  QwtSplineC2::BoundaryConditionC2

Enumerator

Clamped1

The first derivative at the end point is given

See also
  boundaryValue()

Clamped2

The second derivative at the end point is given

See also
  boundaryValue()

Note
  a condition having a second derivative of 0 is also called "natural".

Clamped3

The third derivative at the end point is given

See also
  boundaryValue()

Note
  a condition having a third derivative of 0 is also called "parabolic runout".

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.

See also
  boundaryValue().

Definition at line 119 of file qwt_spline.h.

## BoundaryPosition

enum QwtSpline::BoundaryPosition

position of a boundary condition

See also
  boundaryCondition(), boundaryValue()

Enumerator
AtBeginning | the condition is at the beginning of the polynomial
AtEnd | the condition is at the end of the polynomial

Definition at line 99 of file qwt_spline.h.

## BoundaryType

enum QwtSpline::BoundaryType

Boundary type specifying the spline at its endpoints

See also
  setBoundaryType(), boundaryType()

Enumerator

ConditionalBoundaries

The polynomials at the start/endpoint depend on specific conditions

See also
  QwtSpline::BoundaryCondition

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.

Note
  Only works for parametrizations, where the parameter increment for the the final closing line is positive. This excludes QwtSplineParametrization::ParameterX and QwtSplineParametrization::ParameterY

Definition at line 65 of file qwt_spline.h.

## Constructor & Destructor Documentation

## QwtSpline()

QwtSpline::QwtSpline | ( |  | ) |

Constructor.

The default setting is a non closing spline with chordal parametrization

See also
  setParametrization(), setBoundaryType()

Definition at line 540 of file qwt_spline.cpp.

## Member Function Documentation

## boundaryCondition()

int QwtSpline::boundaryCondition | ( | BoundaryPosition | position | ) | const

Returns
  Condition for an endpoint of the spline

Parameters

  position | At the beginning or the end of the spline

See also
  setBoundaryCondition(), boundaryValue(), setBoundaryConditions()

Definition at line 651 of file qwt_spline.cpp.

## boundaryType()

QwtSpline::BoundaryType QwtSpline::boundaryType | ( |  | ) | const

Returns
  Boundary type

See also
  setBoundaryType()

Definition at line 626 of file qwt_spline.cpp.

## boundaryValue()

double QwtSpline::boundaryValue | ( | BoundaryPosition | position | ) | const

Returns
  Boundary value

Parameters

  position | At the beginning or the end of the spline

See also
  setBoundaryValue(), boundaryCondition()

Definition at line 682 of file qwt_spline.cpp.

## locality()

uint QwtSpline::locality | ( |  | ) | const

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 ).

Returns
  Order of locality

Reimplemented in QwtSplinePleasing, QwtSplineLocal, QwtSplineCubic, and QwtSplineBasis.

Definition at line 564 of file qwt_spline.cpp.

## painterPath()

QPainterPath QwtSpline::painterPath | ( | const QPolygonF & | points | ) | const

pure virtual

Approximates a polygon piecewise with cubic Bezier curves and returns them as QPainterPath.

Parameters

  points | Control points

Returns
  Painter path, that can be rendered by QPainter

See also
  polygon(), QwtBezier

Implemented in QwtSplinePleasing, QwtSplineLocal, QwtSplineCubic, QwtSplineBasis, QwtSplineC2, QwtSplineC1, and QwtSplineInterpolating.

## parametrization()

const QwtSplineParametrization * QwtSpline::parametrization | ( |  | ) | const

Returns
  parametrization

See also
  setParametrization()

Definition at line 605 of file qwt_spline.cpp.

## polygon()

QPolygonF QwtSpline::polygon | ( | const QPolygonF & | points,
|  | double | tolerance
| ) |  | 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 )

Parameters

  points | Control points
  tolerance | Maximum for the accepted error of the approximation

Returns
  polygon approximating the interpolating polynomials

See also
  bezierControlLines(), QwtBezier

Reimplemented in QwtSplineInterpolating.

Definition at line 496 of file qwt_spline.cpp.

## setBoundaryCondition()

void QwtSpline::setBoundaryCondition | ( | BoundaryPosition | position,
|  | int | condition
| ) |  |

Define the condition for an endpoint of the spline.

Parameters

  position | At the beginning or the end of the spline
  condition | Condition

See also
  BoundaryCondition, QwtSplineC2::BoundaryCondition, boundaryCondition()

Definition at line 639 of file qwt_spline.cpp.

## setBoundaryConditions()

void QwtSpline::setBoundaryConditions | ( | int | condition,
|  | double | valueBegin = `0.0`,
|  | double | valueEnd = `0.0`
| ) |  |

Define the condition at the endpoints of a spline.

Parameters

  condition | Condition
  valueBegin | Used for the condition at the beginning of te spline
  valueEnd | Used for the condition at the end of te spline

See also
  BoundaryCondition, QwtSplineC2::BoundaryCondition, testBoundaryCondition(), setBoundaryValue()

Definition at line 700 of file qwt_spline.cpp.

## setBoundaryType()

void QwtSpline::setBoundaryType | ( | BoundaryType | boundaryType | ) |

Define the boundary type for the endpoints of the approximating spline.

Parameters

  boundaryType | Boundary type

See also
  boundaryType()

Definition at line 617 of file qwt_spline.cpp.

## setBoundaryValue()

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.

Parameters

  position | At the beginning or the end of the spline
  value | Value used for the condition at the end point

See also
  boundaryValue(), setBoundaryCondition()

Definition at line 670 of file qwt_spline.cpp.

## setParametrization() [1/2]

void QwtSpline::setParametrization | ( | int | type | ) |

Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization.

Parameters

  type | Type of parametrization, usually one of QwtSplineParametrization::Type

See also
  parametrization()

Definition at line 576 of file qwt_spline.cpp.

## setParametrization() [2/2]

void QwtSpline::setParametrization | ( | QwtSplineParametrization * | parametrization | ) |

Define the parametrization for a parametric spline approximation The default setting is a chordal parametrization.

Parameters

  parametrization | Parametrization

See also
  parametrization()

Definition at line 592 of file qwt_spline.cpp.