---
name: "QwtSpline"
section: "3"
platform: "linux"
package: "libqwt-doc"
version: "6.1.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/QwtSpline"
---

# QwtSpline(3)

A class for spline interpolation.

## NAME

QwtSpline - A class for spline interpolation.

## SYNOPSIS

`#include <qwt_spline.h>`

### Public Types

enum **SplineType** { **Natural**, **Periodic** }\
 Spline type.

### Public Member Functions

**QwtSpline** ()\
 Constructor.  **QwtSpline** (const **QwtSpline** &)\
 **~QwtSpline** ()\
 Destructor.  **QwtSpline** & **operator=** (const **QwtSpline** &)\
 void **setSplineType** (**SplineType**)\
 **SplineType** **splineType** () const\
 bool **setPoints** (const QPolygonF &**points**)\
 Calculate the spline coefficients.  QPolygonF **points** () const\
 void **reset** ()\
 Free allocated memory and set size to 0.  bool **isValid** () const\
 True if valid.  double **value** (double x) const\
 const QVector\< double \> & **coefficientsA** () const\
 const QVector\< double \> & **coefficientsB** () const\
 const QVector\< double \> & **coefficientsC** () const\

### Protected Member Functions

bool **buildNaturalSpline** (const QPolygonF &)\
 Determines the coefficients for a natural spline.  bool **buildPeriodicSpline** (const QPolygonF &)\
 Determines the coefficients for a periodic spline.

## Detailed Description

A class for spline interpolation.

The **QwtSpline** class is used for cubical spline interpolation. Two types of splines, natural and periodic, are supported.

**Usage:**

- 1\.

  First call **setPoints()** to determine the spline coefficients for a tabulated function y(x).

- 2\.

  After the coefficients have been set up, the interpolated function value for an argument x can be determined by calling **QwtSpline::value()**.

**Example:**

```
#include <qwt_spline.h>
QPolygonF interpolate(const QPolygonF& points, int numValues)
{
    QwtSpline spline;
    if ( !spline.setPoints(points) )
        return points;
    QPolygonF interpolatedPoints(numValues);
    const double delta =
        (points[numPoints - 1].x() - points[0].x()) / (points.size() - 1);
    for(i = 0; i < points.size(); i++)  / interpolate
    {
        const double x = points[0].x() + i * delta;
        interpolatedPoints[i].setX(x);
        interpolatedPoints[i].setY(spline.value(x));
    }
    return interpolatedPoints;
}
```

## Member Enumeration Documentation

### enum QwtSpline::SplineType

Spline type.

**Enumerator**

- *Natural*

  *A natural spline.*

- *Periodic*

  *A periodic spline.*

## Constructor & Destructor Documentation

### QwtSpline::QwtSpline (const QwtSpline & other)

*Copy constructor*

**Parameters:**

*other Spline used for initialization*

## Member Function Documentation

### bool QwtSpline::buildNaturalSpline (const QPolygonF & points)` [protected]`

*Determines the coefficients for a natural spline.*

**Returns:**

*true if successful*

### bool QwtSpline::buildPeriodicSpline (const QPolygonF & points)` [protected]`

*Determines the coefficients for a periodic spline.*

**Returns:**

*true if successful*

### const QVector\< double \> & QwtSpline::coefficientsA () const

**Returns:**

*A coefficients*

### const QVector\< double \> & QwtSpline::coefficientsB () const

**Returns:**

*B coefficients*

### const QVector\< double \> & QwtSpline::coefficientsC () const

**Returns:**

*C coefficients*

### QwtSpline & QwtSpline::operator= (const QwtSpline & other)

*Assignment operator*

**Parameters:**

*other Spline used for initialization*

**Returns:**

*\*this*

### QPolygonF QwtSpline::points () const

**Returns:**

*Points, that have been by* **setPoints()**

### bool QwtSpline::setPoints (const QPolygonF & points)

*Calculate the spline coefficients. Depending on the value of periodic, this function will determine the coefficients for a natural or a periodic spline and store them internally.*

**Parameters:**

*points Points*

**Returns:**

*true if successful*

**Warning:**

*The sequence of x (but not y) values has to be strictly monotone increasing, which means* `points[i].x() < points[i+1].x()`*. If this is not the case, the function will return false*

### void QwtSpline::setSplineType (SplineType splineType)

*Select the algorithm used for calculating the spline*

**Parameters:**

*splineType Spline type*

**See also:**

**splineType()**

### QwtSpline::SplineType QwtSpline::splineType () const

**Returns:**

*the spline type*

**See also:**

**setSplineType()**

### double QwtSpline::value (double x) const

*Calculate the interpolated function value corresponding to a given argument x.*

**Parameters:**

*x Coordinate*

**Returns:**

*Interpolated coordinate*

## Author

*Generated automatically by Doxygen for Qwt User's Guide from the source code.*
