Math.h File Reference

Some useful math functions (Mostly documented in French. More...

#include <PVLE/Util/Assert.h>
#include <boost/math/special_functions/fpclassify.hpp>

Include dependency graph for Math.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define computePolynom1   computePolynom1T<float>
#define computePolynom1f   computePolynom1T<float>
#define computePolynom1d   computePolynom1T<double>
#define get_y_polynom1   get_y_polynom1T<float>
#define get_y_polynom1f   get_y_polynom1T<float>
#define get_y_polynom1d   get_y_polynom1T<double>
#define computePolynom1_surface   computePolynom1_surfaceT<float>
#define computePolynom1_surfacef   computePolynom1_surfaceT<float>
#define computePolynom1_surfaced   computePolynom1_surfaceT<double>
#define computePolynom2   computePolynom2T<float>
#define computePolynom2f   computePolynom2T<float>
#define computePolynom2d   computePolynom2T<double>
#define get_y_polynom2   get_y_polynom2T<float>
#define get_y_polynom2f   get_y_polynom2T<float>
#define get_y_polynom2d   get_y_polynom2T<double>

Functions

bool equivalent (const float &a, const float &b, const float &error=1e-6f)
 Renvoie true si les deux flottants a et b sont égaux, à une marge d'erreur près.
bool equivalent (const double &a, const double &b, const double &error=1e-14)
 Renvoie true si les deux flottants double précision a et b sont égaux, à une marge d'erreur près.
int round (const float &v)
 Arrondi simple d'un flottant en entier, au plus proche (12.754841 => 13).
int round (const double &v)
 Arrondi simple d'un flottant double en entier, au plus proche (12.754841 => 13).
template<typename T >
round (const T &v, int nb_chiffres_significatifs)
 Arrondit au plus proche un nombre en gardant un nombre donné de chiffres significatifs (12703 => 13000 pour 2 chiffres significatifs). Fonctionne pour n'importe quel réel (2.35 => 2.4 ; 0.0221 => 0.022 ; etc.).
template<typename T >
round_inf (const T &v, int nb_chiffres_significatifs)
 Comme arrondi(), mais effectue un arrondi par défaut (12703 => 12000).
template<typename T >
round_sup (const T &v, int nb_chiffres_significatifs)
 Comme arrondi(), mais effectue un arrondi par excès (12103 => 13000).
template<typename T >
sigmoid (const T &x)
 Fonction sigmoïde : 1/(1+e(-x)).
template<class T >
clamp_copy (const T &val, const T &min, const T &max)
 Tronque (clamp) une valeur entre deux bornes et en renvoie une copie.
template<class T >
void clamp (T &val, const T &min, const T &max)
 Comme clamp_copy(), mais agit directement sur la valeur passée en paramètre.
template<class T >
void clampl (T &val, const T &min)
 Clamp "lower" : tronque si la valeur est inférieure à la borne minimale.
template<class T >
void clampu (T &val, const T &max)
 Clamp "upper" : tronque si la valeur est supérieure à la borne maximale.
template<class T >
_min (T a, T b)
 Definition of max() that has no problem across platforms...
template<class T >
_max (T a, T b)
 Definition of min() that has no problem across platforms...
unsigned int log2 (unsigned int val)
 Mathematical log2 (gives the power of 2 that gives the number - Ex: 2^3=8 => log2(8)=3).
unsigned long log2 (unsigned long val)
template<class T >
void computePolynom1T (T ax, T ay, T bx, T by, T &out_a, T &out_b)
 Détermine les coefficients d'un polynôme de degré 1 (= une droite du plan) passant par 2 points donnés.
template<class T >
get_y_polynom1T (T ax, T ay, T bx, T by, T x)
 Donne l'ordonnée d'un point appartenant à une droite du plan dont on connaît deux points.
template<class T >
static void computePolynom1_surfaceT (T A, T x1, T x2, T y2, T &out_a, T &out_b)
 Calcule les coefficients d'une droite dont on connait :
  • L'intégrale entre deux bornes x1 et x2 (= l'aire entre la droite, l'axe des abscisses et les 2 bornes)
  • Un point "à droite" (x2, y2).

template<class T >
void computePolynom2T (T ax, T ay, T bx, T by, T cx, T cy, T &out_a, T &out_b, T &out_c)
 Détermine les coefficients d'un polynôme de degré 2 (= une parabole du plan) passant par 3 points donnés.
template<class T >
get_y_polynom2T (T ax, T ay, T bx, T by, T cx, T cy, T x)
 Donne l'ordonnée d'un point appartenant à une parabole du plan dont on connaît trois points.
template<class T >
applique_mult (T val, T mult)
 Applique un multiplicateur pour un coefficient dont la valeur neutre est 1 ((val-1)*mult+1).
template<class T >
applique_mult (T val, T mult, T centre)
 Applique un multiplicateur pour un coefficient dont la valeur neutre est donnée ((val-centre)*mult+centre).
double math_fmod (double a, double b)
 Mathematical modulus (result is >=0).
float math_fmod (float a, float b)
 Mathematical modulus (result is >=0).
float math_fmodf (float a, float b)
 Mathematical modulus (result is >=0).
int math_mod (int a, int b)
 Mathematical modulus (result is >=0).
unsigned int math_mod (unsigned int a, unsigned int b)
 Mathematical modulus (result is >=0).


Detailed Description

Some useful math functions (Mostly documented in French.

.. sorry ! But they're obvious)

Definition in file Math.h.


Define Documentation

#define computePolynom1   computePolynom1T<float>

Definition at line 138 of file Math.h.

#define computePolynom1_surface   computePolynom1_surfaceT<float>

Definition at line 167 of file Math.h.

#define computePolynom1_surfaced   computePolynom1_surfaceT<double>

Definition at line 169 of file Math.h.

#define computePolynom1_surfacef   computePolynom1_surfaceT<float>

Definition at line 168 of file Math.h.

#define computePolynom1d   computePolynom1T<double>

Definition at line 140 of file Math.h.

#define computePolynom1f   computePolynom1T<float>

Definition at line 139 of file Math.h.

#define computePolynom2   computePolynom2T<float>

Definition at line 193 of file Math.h.

#define computePolynom2d   computePolynom2T<double>

Definition at line 195 of file Math.h.

#define computePolynom2f   computePolynom2T<float>

Definition at line 194 of file Math.h.

#define get_y_polynom1   get_y_polynom1T<float>

Definition at line 152 of file Math.h.

#define get_y_polynom1d   get_y_polynom1T<double>

Definition at line 154 of file Math.h.

#define get_y_polynom1f   get_y_polynom1T<float>

Definition at line 153 of file Math.h.

#define get_y_polynom2   get_y_polynom2T<float>

Definition at line 207 of file Math.h.

#define get_y_polynom2d   get_y_polynom2T<double>

Definition at line 209 of file Math.h.

#define get_y_polynom2f   get_y_polynom2T<float>

Definition at line 208 of file Math.h.


Function Documentation

template<class T >
T _max ( a,
b 
) [inline]

Definition of min() that has no problem across platforms...

Definition at line 112 of file Math.h.

template<class T >
T _min ( a,
b 
) [inline]

Definition of max() that has no problem across platforms...

Definition at line 109 of file Math.h.

template<class T >
T applique_mult ( val,
mult,
centre 
) [inline]

Applique un multiplicateur pour un coefficient dont la valeur neutre est donnée ((val-centre)*mult+centre).

Ex : applique_mult(1.2, 2., .5) vaut 1.9 ; et applique_mult(9, 3, 10) vaut 7.

Definition at line 220 of file Math.h.

template<class T >
T applique_mult ( val,
mult 
) [inline]

Applique un multiplicateur pour un coefficient dont la valeur neutre est 1 ((val-1)*mult+1).

Ex : applique_mult(1.2, 2.) vaut 1.4 ; et applique_mult(0.9, 3.) vaut 0.7.

Definition at line 215 of file Math.h.

template<class T >
void clamp ( T &  val,
const T &  min,
const T &  max 
) [inline]

Comme clamp_copy(), mais agit directement sur la valeur passée en paramètre.

Definition at line 99 of file Math.h.

Referenced by createHeightColorization(), Explosion::hitBefore(), and Explosion::step().

template<class T >
T clamp_copy ( const T &  val,
const T &  min,
const T &  max 
) [inline]

Tronque (clamp) une valeur entre deux bornes et en renvoie une copie.

Exemple : -8 entre 0 et 100 renverra 0.

Definition at line 95 of file Math.h.

Referenced by spotLightProcessing().

template<class T >
void clampl ( T &  val,
const T &  min 
) [inline]

Clamp "lower" : tronque si la valeur est inférieure à la borne minimale.

Definition at line 102 of file Math.h.

Referenced by create1DTextureHeightColorization(), and CartographyColorizator::valsFromHF().

template<class T >
void clampu ( T &  val,
const T &  max 
) [inline]

Clamp "upper" : tronque si la valeur est supérieure à la borne maximale.

Definition at line 105 of file Math.h.

Referenced by create1DTextureHeightColorization(), LightSourceManager::request(), and CartographyColorizator::valsFromHF().

template<class T >
static void computePolynom1_surfaceT ( A,
x1,
x2,
y2,
T &  out_a,
T &  out_b 
) [inline, static]

Calcule les coefficients d'une droite dont on connait :

  • L'intégrale entre deux bornes x1 et x2 (= l'aire entre la droite, l'axe des abscisses et les 2 bornes)
  • Un point "à droite" (x2, y2).

Definition at line 161 of file Math.h.

template<class T >
void computePolynom1T ( ax,
ay,
bx,
by,
T &  out_a,
T &  out_b 
) [inline]

Détermine les coefficients d'un polynôme de degré 1 (= une droite du plan) passant par 2 points donnés.

PS : C'est quand on a pas envie de se souvenir, parce que c'est vraiment pas bien compliqué ! ;p

Definition at line 131 of file Math.h.

References ASSERT.

template<class T >
void computePolynom2T ( ax,
ay,
bx,
by,
cx,
cy,
T &  out_a,
T &  out_b,
T &  out_c 
) [inline]

Détermine les coefficients d'un polynôme de degré 2 (= une parabole du plan) passant par 3 points donnés.

Definition at line 174 of file Math.h.

References ASSERT.

bool equivalent ( const double &  a,
const double &  b,
const double &  error = 1e-14 
) [inline]

Renvoie true si les deux flottants double précision a et b sont égaux, à une marge d'erreur près.

Definition at line 39 of file Math.h.

bool equivalent ( const float &  a,
const float &  b,
const float &  error = 1e-6f 
) [inline]

Renvoie true si les deux flottants a et b sont égaux, à une marge d'erreur près.

Definition at line 37 of file Math.h.

Referenced by Physics::NearCallback::operator()().

template<class T >
T get_y_polynom1T ( ax,
ay,
bx,
by,
x 
) [inline]

Donne l'ordonnée d'un point appartenant à une droite du plan dont on connaît deux points.

Pour plusieurs points sur la même droite, mieux vaut utiliser computePolynom1T<>() pour éviter des calculs inutiles.

Definition at line 146 of file Math.h.

References ASSERT.

template<class T >
T get_y_polynom2T ( ax,
ay,
bx,
by,
cx,
cy,
x 
) [inline]

Donne l'ordonnée d'un point appartenant à une parabole du plan dont on connaît trois points.

Pour plusieurs points sur la même parabole, mieux vaut utiliser computePolynom2T<>() pour éviter des calculs inutiles.

Definition at line 201 of file Math.h.

unsigned long log2 ( unsigned long  val  )  [inline]

Definition at line 121 of file Math.h.

unsigned int log2 ( unsigned int  val  )  [inline]

Mathematical log2 (gives the power of 2 that gives the number - Ex: 2^3=8 => log2(8)=3).

For values that do not have only one bit set, the most weighted set bit is the only taken into account (log2(15)=3).

Definition at line 116 of file Math.h.

float math_fmod ( float  a,
float  b 
) [inline]

Mathematical modulus (result is >=0).

Definition at line 226 of file Math.h.

double math_fmod ( double  a,
double  b 
) [inline]

Mathematical modulus (result is >=0).

Definition at line 224 of file Math.h.

float math_fmodf ( float  a,
float  b 
) [inline]

Mathematical modulus (result is >=0).

Definition at line 228 of file Math.h.

Referenced by CameraShake::updateCameras().

unsigned int math_mod ( unsigned int  a,
unsigned int  b 
) [inline]

Mathematical modulus (result is >=0).

Definition at line 232 of file Math.h.

int math_mod ( int  a,
int  b 
) [inline]

Mathematical modulus (result is >=0).

Definition at line 230 of file Math.h.

template<typename T >
T round ( const T &  v,
int  nb_chiffres_significatifs 
) [inline]

Arrondit au plus proche un nombre en gardant un nombre donné de chiffres significatifs (12703 => 13000 pour 2 chiffres significatifs). Fonctionne pour n'importe quel réel (2.35 => 2.4 ; 0.0221 => 0.022 ; etc.).

Definition at line 62 of file Math.h.

References ASSERT.

int round ( const double &  v  )  [inline]

Arrondi simple d'un flottant double en entier, au plus proche (12.754841 => 13).

Definition at line 50 of file Math.h.

int round ( const float &  v  )  [inline]

Arrondi simple d'un flottant en entier, au plus proche (12.754841 => 13).

Definition at line 43 of file Math.h.

template<typename T >
T round_inf ( const T &  v,
int  nb_chiffres_significatifs 
) [inline]

Comme arrondi(), mais effectue un arrondi par défaut (12703 => 12000).

Definition at line 71 of file Math.h.

References ASSERT.

template<typename T >
T round_sup ( const T &  v,
int  nb_chiffres_significatifs 
) [inline]

Comme arrondi(), mais effectue un arrondi par excès (12103 => 13000).

Definition at line 79 of file Math.h.

References ASSERT.

template<typename T >
T sigmoid ( const T &  x  )  [inline]

Fonction sigmoïde : 1/(1+e(-x)).

La "véritable" fonction est 1/(1+e(lambda*-x)), mais il suffit pour cela de multiplier le paramètre par une constante lambda.

Definition at line 89 of file Math.h.


Generated on Sun Jan 17 11:39:10 2010 for PVLE (Pro-Vocation Light Engine) by  doxygen 1.5.9