Static Public Member Functions

QwtScaleArithmetic Class Reference

Arithmetic including a tolerance. More...

#include <qwt_scale_engine.h>

List of all members.

Static Public Member Functions

static int compareEps (double value1, double value2, double intervalSize)
 Compare 2 values, relative to an interval.
static double ceilEps (double value, double intervalSize)
static double floorEps (double value, double intervalSize)
static double divideEps (double interval, double steps)
 Divide an interval into steps.
static double ceil125 (double x)
static double floor125 (double x)
 Find the largest value out of {1,2,5}*10^n with an integer number n which is smaller than or equal to x.

Detailed Description

Arithmetic including a tolerance.

Definition at line 22 of file qwt_scale_engine.h.


Member Function Documentation

double QwtScaleArithmetic::ceil125 ( double  x ) [static]

Find the smallest value out of {1,2,5}*10^n with an integer number n which is greater than or equal to x

Parameters:
xInput value

Definition at line 98 of file qwt_scale_engine.cpp.

References QuadProgPP::pow(), and sign().

Referenced by QwtScaleEngine::divideInterval().

{
    if (x == 0.0) 
        return 0.0;

    const double sign = (x > 0) ? 1.0 : -1.0;
    const double lx = log10(fabs(x));
    const double p10 = floor(lx);
    
    double fr = pow(10.0, lx - p10);
    if (fr <=1.0)
       fr = 1.0; 
    else if (fr <= 2.0)
       fr = 2.0;
    else if (fr <= 5.0) 
       fr = 5.0;
    else
       fr = 10.0;

    return sign * fr * pow(10.0, p10);
}
double QwtScaleArithmetic::ceilEps ( double  value,
double  intervalSize 
) [static]

Ceil a value, relative to an interval

Parameters:
valueValue to ceil
intervalSizeInterval size
See also:
floorEps()

Definition at line 50 of file qwt_scale_engine.cpp.

References _eps.

Referenced by QwtLinearScaleEngine::align().

{
    const double eps = _eps * intervalSize;

    value = (value - eps) / intervalSize;
    return ceil(value) * intervalSize;
}
int QwtScaleArithmetic::compareEps ( double  value1,
double  value2,
double  intervalSize 
) [static]

Compare 2 values, relative to an interval.

Values are "equal", when : $\cdot value2 - value1 <= abs(intervalSize * 10e^{-6})$

Parameters:
value1First value to compare
value2Second value to compare
intervalSizeinterval size
Returns:
0: if equal, -1: if value2 > value1, 1: if value1 > value2

Definition at line 28 of file qwt_scale_engine.cpp.

References _eps, and qwtAbs.

Referenced by QwtScaleEngine::contains().

{
    const double eps = qwtAbs(_eps * intervalSize);

    if ( value2 - value1 > eps )
        return -1;

    if ( value1 - value2 > eps )
        return 1;

    return 0;
}
double QwtScaleArithmetic::divideEps ( double  intervalSize,
double  numSteps 
) [static]

Divide an interval into steps.

$stepSize = (intervalSize - intervalSize * 10e^{-6}) / numSteps$

Parameters:
intervalSizeInterval size
numStepsNumber of steps
Returns:
Step size

Definition at line 84 of file qwt_scale_engine.cpp.

References _eps.

Referenced by QwtScaleEngine::divideInterval().

{
    if ( numSteps == 0.0 || intervalSize == 0.0 )
        return 0.0;

    return (intervalSize - (_eps * intervalSize)) / numSteps;
} 
double QwtScaleArithmetic::floor125 ( double  x ) [static]

Find the largest value out of {1,2,5}*10^n with an integer number n which is smaller than or equal to x.

Parameters:
xInput value

Definition at line 126 of file qwt_scale_engine.cpp.

References QuadProgPP::pow(), and sign().

{
    if (x == 0.0)
        return 0.0;

    double sign = (x > 0) ? 1.0 : -1.0;
    const double lx = log10(fabs(x));
    const double p10 = floor(lx);

    double fr = pow(10.0, lx - p10);
    if (fr >= 10.0)
       fr = 10.0;
    else if (fr >= 5.0)
       fr = 5.0;
    else if (fr >= 2.0)
       fr = 2.0;
    else
       fr = 1.0;

    return sign * fr * pow(10.0, p10);
}
double QwtScaleArithmetic::floorEps ( double  value,
double  intervalSize 
) [static]

Floor a value, relative to an interval

Parameters:
valueValue to floor
intervalSizeInterval size
See also:
floorEps()

Definition at line 67 of file qwt_scale_engine.cpp.

References _eps.

Referenced by QwtLinearScaleEngine::align().

{
    const double eps = _eps * intervalSize;

    value = (value + eps) / intervalSize;
    return floor(value) * intervalSize;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines