mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -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
55 lines
1.8 KiB
C++
55 lines
1.8 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_CUBIC_H
|
|
#define QWT_SPLINE_CUBIC_H
|
|
|
|
#include "qwt_global.h"
|
|
#include "qwt_spline.h"
|
|
|
|
/*!
|
|
\brief A cubic spline
|
|
|
|
A cubic spline is a spline with C2 continuity at all control points.
|
|
It is a non local spline, what means that all polynomials are changing
|
|
when one control point has changed.
|
|
|
|
The implementation is based on the fact, that the continuity condition
|
|
means an equation with 3 unknowns for 3 adjacent points. The equation
|
|
system can be resolved by defining start/end conditions, that allow
|
|
substituting of one of the unknowns for the start/end equations.
|
|
|
|
Resolving the equation system is a 2 pass algorithm, requiring more CPU costs
|
|
than all other implemented type of splines.
|
|
|
|
\todo The implementation is not numerical stable
|
|
*/
|
|
class QWT_EXPORT QwtSplineCubic : public QwtSplineC2
|
|
{
|
|
public:
|
|
QwtSplineCubic();
|
|
virtual ~QwtSplineCubic();
|
|
|
|
virtual uint locality() const QWT_OVERRIDE;
|
|
|
|
virtual QPainterPath painterPath( const QPolygonF& ) const QWT_OVERRIDE;
|
|
virtual QVector< QLineF > bezierControlLines( const QPolygonF& points ) 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;
|
|
virtual QVector< double > curvatures( const QPolygonF& ) const QWT_OVERRIDE;
|
|
|
|
private:
|
|
class PrivateData;
|
|
PrivateData* m_data;
|
|
};
|
|
|
|
#endif
|