qwt_spline_parametrization.h
Go to the documentation of this file.
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_SPLINE_PARAMETRIZATION_H
00011 #define QWT_SPLINE_PARAMETRIZATION_H 1
00012 
00013 #include "qwt_global.h"
00014 #include <qmath.h>
00015 #include <qpoint.h>
00016 
00043 class QWT_EXPORT QwtSplineParametrization
00044 {
00045 public:
00047     enum Type
00048     {
00053         ParameterX,
00054 
00059         ParameterY,
00060 
00071         ParameterUniform,
00072 
00081         ParameterChordal,
00082 
00093         ParameterCentripetal,
00094 
00095 
00104         ParameterManhattan
00105     };
00106 
00107     explicit QwtSplineParametrization( int type );
00108     virtual ~QwtSplineParametrization();
00109 
00110     int type() const;
00111 
00112     virtual double valueIncrement( const QPointF &, const QPointF & ) const;
00113     
00114     static double valueIncrementX( const QPointF &, const QPointF & );
00115     static double valueIncrementY( const QPointF &, const QPointF & );
00116     static double valueIncrementUniform( const QPointF &, const QPointF & );
00117     static double valueIncrementChordal( const QPointF &, const QPointF & );
00118     static double valueIncrementCentripetal( const QPointF &, const QPointF & );
00119     static double valueIncrementManhattan( const QPointF &, const QPointF & );
00120 
00121 private:
00122     const int d_type;
00123 };
00124 
00133 inline double QwtSplineParametrization::valueIncrementX( 
00134     const QPointF &point1, const QPointF &point2 ) 
00135 {
00136     return point2.x() - point1.x();
00137 }
00138 
00147 inline double QwtSplineParametrization::valueIncrementY(
00148     const QPointF &point1, const QPointF &point2 )
00149 {
00150     return point2.y() - point1.y();
00151 }
00152 
00161 inline double QwtSplineParametrization::valueIncrementUniform(
00162     const QPointF &point1, const QPointF &point2 )
00163 {
00164     Q_UNUSED( point1 )
00165     Q_UNUSED( point2 )
00166 
00167     return 1.0;
00168 }
00169 
00178 inline double QwtSplineParametrization::valueIncrementChordal( 
00179     const QPointF &point1, const QPointF &point2 ) 
00180 {
00181     const double dx = point2.x() - point1.x();
00182     const double dy = point2.y() - point1.y();
00183 
00184     return qSqrt( dx * dx + dy * dy );
00185 }
00186 
00195 inline double QwtSplineParametrization::valueIncrementCentripetal(
00196     const QPointF &point1, const QPointF &point2 )
00197 {
00198     return qSqrt( valueIncrementChordal( point1, point2 ) );
00199 }
00200 
00209 inline double QwtSplineParametrization::valueIncrementManhattan(
00210     const QPointF &point1, const QPointF &point2 )
00211 {
00212     return qAbs( point2.x() - point1.x() ) + qAbs( point2.y() - point1.y() );
00213 }
00214 
00215 #endif


plotjuggler
Author(s): Davide Faconti
autogenerated on Fri Sep 1 2017 02:41:56