Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

QwtDiMap Class Reference

Map a double interval into an integer interval. More...

#include <qwt_dimap.h>

Inherited by QwtScaleDraw.

Inheritance diagram for QwtDiMap

Inheritance graph
[legend]
List of all members.

Public Methods

 QwtDiMap ()
 QwtDiMap (int i1, int i2, double d1, double d2, bool lg = FALSE)
 ~QwtDiMap ()
bool contains (double x) const
bool contains (int x) const
void setIntRange (int i1, int i2)
void setDblRange (double d1, double d2, bool lg = FALSE)
int transform (double x) const
double invTransform (int i) const
int limTransform (double x) const
double xTransform (double x) const
double d1 () const
double d2 () const
int i1 () const
int i2 () const
bool logarithmic () const

Static Public Attributes

const double LogMin = 1.0e-150
const double LogMax = 1.0e150

Detailed Description

Map a double interval into an integer interval.

The QwtDiMap class maps an interval of type double into an interval of type int. It consists of two intervals D = [d1, d2] (double) and I = [i1, i2] (int), which are specified with the QwtDiMap::setDblRange and QwtDiMap::setIntRange members. The point d1 is mapped to the point i1, and d2 is mapped to i2. Any point inside or outside D can be mapped to a point inside or outside I using QwtDiMap::transform or QwtDiMap::limTransform or vice versa using QwtPlot::invTransform. D can be scaled linearly or logarithmically, as specified with QwtDiMap::setDblRange.

Usage

#include <qwt_dimap.h>

QwtDiMap map;
int ival;
double dval;

map.setDblRange(0.0, 3.1415);   // Assign an interval of type double with
        // linear mapping
map.setIntRange(0,100);         // Assign an integer interval

ival = map.transform(1.0);      // obtain integer value corresponding to 1.0
dval = map.invTransform(77);    // obtain double value corresponding to 77


Constructor & Destructor Documentation

QwtDiMap::QwtDiMap ( )
 

Constructor.

The double and integer intervals are both set to [0,1].

QwtDiMap::QwtDiMap ( int i1,
int i2,
double d1,
double d2,
bool logarithmic = FALSE )
 

Constructor.

Constructs a QwtDiMap instance with initial integer and double intervals

Parameters:
i1   first border of integer interval
i2   second border of integer interval
d1   first border of double interval
d2   second border of double interval \bool logarithmic logarithmic mapping, TRUE or FALSE.

QwtDiMap::~QwtDiMap ( )
 

Destructor.


Member Function Documentation

bool QwtDiMap::contains ( int x ) const
 

\eturn TRUE if a value x lies inside or at the border of the map's integer range

Parameters:
x   value

bool QwtDiMap::contains ( double x ) const
 

Returns:
TRUE if a value x lies inside or at the border of the map's double range.
Parameters:
x   value

double QwtDiMap::d1 ( ) const
 

Returns:
the first border of the double interval

double QwtDiMap::d2 ( ) const
 

Returns:
the second border of the double interval

int QwtDiMap::i1 ( ) const
 

Returns:
the second border of the integer interval

int QwtDiMap::i2 ( ) const
 

Returns:
the second border of the integer interval

double QwtDiMap::invTransform ( int y ) const
 

Transform an integer value into a double value.

Parameters:
integer   value to be transformed
Returns:
linear mapping:
d1 + (d2 - d1) / (i2 - i1) * (y - i1)
logarithmic mapping:
d1 + (d2 - d1) / log(i2 / i1) * log(y / i1)

int QwtDiMap::limTransform ( double x ) const
 

Transform and limit.

The function is similar to QwtDiMap::transform, but limits the input value to the nearest border of the map's double interval if it lies outside that interval.

Parameters:
x   value to be transformed
Returns:
transformed value

bool QwtDiMap::logarithmic ( ) const
 

Returns:
TRUE if the double interval is scaled logarithmically

void QwtDiMap::setDblRange ( double d1,
double d2,
bool lg = FALSE )
 

Specify the borders of the double interval.

Parameters:
d1   first border
d2   second border
lg   logarithmic (TRUE) or linear (FALSE) scaling

void QwtDiMap::setIntRange ( int i1,
int i2 )
 

Specify the borders of the integer interval.

Parameters:
i1   first border
i2   second border

int QwtDiMap::transform ( double x ) const
 

Transform a point in double interval into an point in the integer interval.

Parameters:
x   value
Returns:
linear mapping:
rint(i1 + (i2 - i1) / (d2 - d1) * (x - d1))
logarithmic mapping:
rint(i1 + (i2 - i1) / log(d2 / d1) * log(x / d1))
Warning:
The specified point is allowed to lie outside the intervals. If you want to limit the returned value, use QwtDiMap::limTransform.

double QwtDiMap::xTransform ( double x ) const
 

Exact transformation.

This function is similar to QwtDiMap::transform, but makes the integer interval appear to be double.

Parameters:
x   value to be transformed
Returns:
linear mapping:
i1 + (i2 - i1) / (d2 - d1) * (x - d1)
logarithmic mapping:
i1 + (i2 - i1) / log(d2 / d1) * log(x / d1)


The documentation for this class was generated from the following files:
Generated at Thu Dec 14 00:27:15 2000 for Qwt User's Guide by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000