mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
* require qwt >=6.2 (and fallback to internal 6.3 if system's qwt doesn't suffice) * debian doesn't have qwt for Qt6 and won't have it for trixie
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
/******************************************************************************
|
|
* 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_LOCAL_H
|
|
#define QWT_SPLINE_LOCAL_H
|
|
|
|
#include "qwt_global.h"
|
|
#include "qwt_spline.h"
|
|
|
|
/*!
|
|
\brief A spline with C1 continuity
|
|
|
|
QwtSplineLocal offers several standard algorithms for interpolating
|
|
a curve with polynomials having C1 continuity at the control points.
|
|
All algorithms are local in a sense, that changing one control point
|
|
only few polynomials.
|
|
*/
|
|
class QWT_EXPORT QwtSplineLocal : public QwtSplineC1
|
|
{
|
|
public:
|
|
/*!
|
|
\brief Spline interpolation type
|
|
|
|
All type of spline interpolations are lightweight algorithms
|
|
calculating the slopes at a point by looking 1 or 2 points back
|
|
and ahead.
|
|
*/
|
|
enum Type
|
|
{
|
|
/*!
|
|
A cardinal spline
|
|
|
|
The cardinal spline interpolation is a very cheap calculation with
|
|
a locality of 1.
|
|
*/
|
|
Cardinal,
|
|
|
|
/*!
|
|
Parabolic blending is a cheap calculation with a locality of 1. Sometimes
|
|
it is also called Cubic Bessel interpolation.
|
|
*/
|
|
ParabolicBlending,
|
|
|
|
/*!
|
|
The algorithm of H.Akima is a calculation with a locality of 2.
|
|
*/
|
|
Akima,
|
|
|
|
/*!
|
|
Piecewise Cubic Hermite Interpolating Polynomial (PCHIP) is an algorithm
|
|
that is popular because of being offered by MATLAB.
|
|
|
|
It preserves the shape of the data and respects monotonicity. It has a
|
|
locality of 1.
|
|
*/
|
|
PChip
|
|
};
|
|
|
|
QwtSplineLocal( Type type );
|
|
virtual ~QwtSplineLocal();
|
|
|
|
Type type() const;
|
|
|
|
virtual uint locality() const QWT_OVERRIDE;
|
|
|
|
virtual QPainterPath painterPath( const QPolygonF& ) const QWT_OVERRIDE;
|
|
virtual QVector< QLineF > bezierControlLines( const QPolygonF& ) const QWT_OVERRIDE;
|
|
|
|
// calculating the parametric equations
|
|
virtual QVector< QwtSplinePolynomial > polynomials( const QPolygonF& ) const QWT_OVERRIDE;
|
|
virtual QVector< double > slopes( const QPolygonF& ) const QWT_OVERRIDE;
|
|
|
|
private:
|
|
const Type m_type;
|
|
};
|
|
|
|
#endif
|