| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** * Qwt Widget Library * Copyright (C) 1997   Josef Wilgen * Copyright (C) 2002   Uwe Rathmann * * This library is free software; you can redistribute it and/or * modify it under the terms of the Qwt License, Version 1.0 *****************************************************************************/#ifndef QWT_SPLINE_H#define QWT_SPLINE_H#include "qwt_global.h"#include <qpolygon.h>#include <qvector.h>/*!  \brief A class for spline interpolation  The QwtSpline class is used for cubical spline interpolation.  Two types of splines, natural and periodic, are supported.  \par Usage:  <ol>  <li>First call setPoints() to determine the spline coefficients      for a tabulated function y(x).  <li>After the coefficients have been set up, the interpolated      function value for an argument x can be determined by calling      QwtSpline::value().  </ol>  \par Example:  \code#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;}  \endcode*/class QWT_EXPORT QwtSpline{public:    //! Spline type    enum SplineType    {        Natural,        Periodic    };    QwtSpline();    QwtSpline( const QwtSpline & );    ~QwtSpline();    QwtSpline &operator=( const QwtSpline & );    void setSplineType( SplineType );    SplineType splineType() const;    bool setPoints( const QPolygonF& points );    QPolygonF points() const;    void reset();    bool isValid() const;    double value( double x ) const;    const QVector<double> &coefficientsA() const;    const QVector<double> &coefficientsB() const;    const QVector<double> &coefficientsC() const;protected:    bool buildNaturalSpline( const QPolygonF & );    bool buildPeriodicSpline( const QPolygonF & );private:    class PrivateData;    PrivateData *d_data;};#endif
 |