QWT API (中文) 7.0.1
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_spline.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *
9 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_SPLINE_H
28#define QWT_SPLINE_H
29
30#include "qwt_global.h"
31#include "qwt_spline.h"
32
35class QPainterPath;
36class QLineF;
37class QPolygonF;
38
39#if QT_VERSION < 0x060000
40template< typename T > class QVector;
41#endif
42
100class QWT_EXPORT QwtSpline
101{
102 public:
116 {
130
143
166 ClosedPolygon
167 };
168
180 {
183
185 AtEnd
186 };
187
211 {
223
240
257
274 LinearRunout
275 };
276
278 QwtSpline();
280 virtual ~QwtSpline();
281
283 void setParametrization( int type );
285 void setParametrization( QwtSplineParametrization* );
287 const QwtSplineParametrization* parametrization() const;
288
290 void setBoundaryType( BoundaryType );
292 BoundaryType boundaryType() const;
293
295 void setBoundaryValue( BoundaryPosition, double value );
297 double boundaryValue( BoundaryPosition ) const;
298
300 void setBoundaryCondition( BoundaryPosition, int condition );
302 int boundaryCondition( BoundaryPosition ) const;
303
305 void setBoundaryConditions( int condition,
306 double valueBegin = 0.0, double valueEnd = 0.0 );
307
309 virtual QPolygonF polygon( const QPolygonF&, double tolerance ) const;
311 virtual QPainterPath painterPath( const QPolygonF& ) const = 0;
312
314 virtual uint locality() const;
315
316 private:
317 Q_DISABLE_COPY(QwtSpline)
318
319 class PrivateData;
320 PrivateData* m_data;
321};
322
337class QWT_EXPORT QwtSplineInterpolating : public QwtSpline
338{
339 public:
341 virtual ~QwtSplineInterpolating();
342
343 virtual QPolygonF equidistantPolygon( const QPolygonF&,
344 double distance, bool withNodes ) const;
345
346 virtual QPolygonF polygon(
347 const QPolygonF&, double tolerance ) const override;
348
349 virtual QPainterPath painterPath( const QPolygonF& ) const override;
350 virtual QVector< QLineF > bezierControlLines( const QPolygonF& ) const = 0;
351
352 private:
353 Q_DISABLE_COPY(QwtSplineInterpolating)
354};
355
369class QWT_EXPORT QwtSplineG1 : public QwtSplineInterpolating
370{
371 public:
372 QwtSplineG1();
373 virtual ~QwtSplineG1();
374};
375
399class QWT_EXPORT QwtSplineC1 : public QwtSplineG1
400{
401 public:
402 QwtSplineC1();
403 virtual ~QwtSplineC1();
404
405 virtual QPainterPath painterPath( const QPolygonF& ) const override;
406 virtual QVector< QLineF > bezierControlLines( const QPolygonF& ) const override;
407
408 virtual QPolygonF equidistantPolygon( const QPolygonF&,
409 double distance, bool withNodes ) const override;
410
411 // these methods are the non parametric part
412 virtual QVector< QwtSplinePolynomial > polynomials( const QPolygonF& ) const;
413 virtual QVector< double > slopes( const QPolygonF& ) const = 0;
414
415 virtual double slopeAtBeginning( const QPolygonF&, double slopeNext ) const;
416 virtual double slopeAtEnd( const QPolygonF&, double slopeBefore ) const;
417};
418
442class QWT_EXPORT QwtSplineC2 : public QwtSplineC1
443{
444 public:
451 {
458 CubicRunout = LinearRunout + 1,
459
467 NotAKnot
468 };
469
470 QwtSplineC2();
471 virtual ~QwtSplineC2();
472
473 virtual QPainterPath painterPath( const QPolygonF& ) const override;
474 virtual QVector< QLineF > bezierControlLines( const QPolygonF& ) const override;
475
476 virtual QPolygonF equidistantPolygon( const QPolygonF&,
477 double distance, bool withNodes ) const override;
478
479 // calculating the parametric equations
480 virtual QVector< QwtSplinePolynomial > polynomials( const QPolygonF& ) const override;
481 virtual QVector< double > slopes( const QPolygonF& ) const override;
482 virtual QVector< double > curvatures( const QPolygonF& ) const = 0;
483};
484
485#endif
Definition qwt_clipper.h:40
提供 C1(一阶参数)连续性的样条插值基类
Definition qwt_spline.h:400
virtual QVector< double > slopes(const QPolygonF &) const =0
Find the first derivative at the control points
提供 C2(二阶参数)连续性的样条插值基类
Definition qwt_spline.h:443
virtual QVector< double > curvatures(const QPolygonF &) const =0
Find the second derivative at the control points
BoundaryConditionC2
Boundary condition that requires C2 continuity
Definition qwt_spline.h:451
提供 G1(一阶几何)连续性的样条插值基类
Definition qwt_spline.h:370
样条插值基类
Definition qwt_spline.h:338
virtual QVector< QLineF > bezierControlLines(const QPolygonF &) const =0
Interpolate a curve with Bezier curves
用于样条插值的曲线参数化
Definition qwt_spline_parametrization.h:87
无常数项的三次多项式
Definition qwt_spline_polynomial.h:62
所有样条曲线的基类
Definition qwt_spline.h:101
BoundaryPosition
边界条件的位置
Definition qwt_spline.h:180
@ AtBeginning
条件在多项式的起始处
Definition qwt_spline.h:182
virtual QPainterPath painterPath(const QPolygonF &) const =0
Get painter path from polygon (pure virtual)
BoundaryType
指定样条端点处的边界类型
Definition qwt_spline.h:116
@ PeriodicPolygon
Definition qwt_spline.h:142
@ ConditionalBoundaries
Definition qwt_spline.h:129
BoundaryCondition
边界条件
Definition qwt_spline.h:211
@ Clamped2
Definition qwt_spline.h:239
@ Clamped3
Definition qwt_spline.h:256
@ Clamped1
Definition qwt_spline.h:222