31436bfb7c
- aggiunta funzione Pow per potenze con esponente intere caclolate in modo efficiente - aggiunti prototipi di funzioni per impostazione tolleranze per superfici di Bezier.
58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
//----------------------------------------------------------------------------
|
|
// EgalTech 2016-2023
|
|
//----------------------------------------------------------------------------
|
|
// File : EgtNumUtils.h Data : 16.08.23 Versione : 2.5h2
|
|
// Contenuto : Funzioni numeriche di base.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 05.11.16 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include <cmath>
|
|
|
|
//----------------------------------------------------------------------------
|
|
inline
|
|
int Clamp( int nVal, int nMin, int nMax)
|
|
{
|
|
return ( nVal < nMin ? nMin : ( nVal > nMax ? nMax : nVal)) ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
inline
|
|
double Clamp( double dVal, double dMin, double dMax)
|
|
{
|
|
return ( dVal < dMin ? dMin : ( dVal > dMax ? dMax : dVal)) ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
inline
|
|
bool IsEven( int nVal)
|
|
{
|
|
return ( ( nVal % 2) == 0) ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
inline
|
|
double Pow( double dBase, int nExp)
|
|
{
|
|
if ( nExp == 0)
|
|
return 1 ;
|
|
else if ( nExp < 0) {
|
|
if ( dBase < -DBL_EPSILON || dBase > DBL_EPSILON)
|
|
return Pow( 1 / dBase, -nExp) ;
|
|
else
|
|
return NAN ;
|
|
}
|
|
else {
|
|
double dVal = 1 ;
|
|
for ( int i = 1 ; i <= nExp ; ++ i)
|
|
dVal *= dBase ;
|
|
return dVal ;
|
|
}
|
|
}
|