qwt_math.cpp 1.6 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
5
 *
pixhawk's avatar
pixhawk committed
6 7 8 9 10 11 12 13 14 15 16
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

#include "qwt_math.h"

/*!
  \brief Find the smallest value in an array
  \param array Pointer to an array
  \param size Array size
*/
Bryant's avatar
Bryant committed
17
double qwtGetMin( const double *array, int size )
pixhawk's avatar
pixhawk committed
18
{
Bryant's avatar
Bryant committed
19
    if ( size <= 0 )
20
        return 0.0;
pixhawk's avatar
pixhawk committed
21 22

    double rv = array[0];
Bryant's avatar
Bryant committed
23 24
    for ( int i = 1; i < size; i++ )
        rv = qMin( rv, array[i] );
pixhawk's avatar
pixhawk committed
25 26 27 28 29 30 31 32 33 34

    return rv;
}


/*!
  \brief Find the largest value in an array
  \param array Pointer to an array
  \param size Array size
*/
Bryant's avatar
Bryant committed
35
double qwtGetMax( const double *array, int size )
pixhawk's avatar
pixhawk committed
36
{
Bryant's avatar
Bryant committed
37
    if ( size <= 0 )
38 39
        return 0.0;

pixhawk's avatar
pixhawk committed
40
    double rv = array[0];
Bryant's avatar
Bryant committed
41 42
    for ( int i = 1; i < size; i++ )
        rv = qMax( rv, array[i] );
pixhawk's avatar
pixhawk committed
43 44 45

    return rv;
}
Bryant's avatar
Bryant committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

/*!
  \brief Normalize an angle to be int the range [0.0, 2 * PI[
  \param radians Angle in radians
  \return Normalized angle in radians
*/
double qwtNormalizeRadians( double radians )
{
    double a = ::fmod( radians, 2.0 * M_PI );
    if ( a < 0.0 )
        a += 2.0 * M_PI;

    return a;

}

/*!
  \brief Normalize an angle to be int the range [0.0, 360.0[
  \param radians Angle in degrees
  \return Normalized angle in degrees
*/
double qwtNormalizeDegrees( double degrees )
{
    double a = ::fmod( degrees, 360.0 );
    if ( a < 0.0 )
        a += 360.0;

    return a;
}