C Math Abstraction | |
| template<typename T> T | abs (T iValue) |
| template<typename T> T | ceil (T fValue) |
| float | ceil (float fValue) |
| double | ceil (double fValue) |
| template<typename T> T | floor (T fValue) |
| float | floor (float fValue) |
| double | floor (double fValue) |
| template<typename T> int | sign (T iValue) |
| template<typename T> T | zeroClamp (T value, T eps=T(0)) |
| Clamps the given value down to zero if it is within epsilon of zero. More... | |
| template<typename T> T | aCos (T fValue) |
| float | aCos (float fValue) |
| double | aCos (double fValue) |
| template<typename T> T | aSin (T fValue) |
| float | aSin (float fValue) |
| double | aSin (double fValue) |
| template<typename T> T | aTan (T fValue) |
| double | aTan (double fValue) |
| float | aTan (float fValue) |
| template<typename T> T | atan2 (T fY, T fX) |
| float | aTan2 (float fY, float fX) |
| double | aTan2 (double fY, double fX) |
| template<typename T> T | cos (T fValue) |
| float | cos (float fValue) |
| double | cos (double fValue) |
| template<typename T> T | exp (T fValue) |
| float | exp (float fValue) |
| double | exp (double fValue) |
| template<typename T> T | log (T fValue) |
| double | log (double fValue) |
| float | log (float fValue) |
| double | pow (double fBase, double fExponent) |
| float | pow (float fBase, float fExponent) |
| template<typename T> T | sin (T fValue) |
| double | sin (double fValue) |
| float | sin (float fValue) |
| template<typename T> T | tan (T fValue) |
| double | tan (double fValue) |
| float | tan (float fValue) |
| template<typename T> T | sqr (T fValue) |
| template<typename T> T | sqrt (T fValue) |
| double | sqrt (double fValue) |
| void | seedRandom (unsigned int seed) |
| Seeds the pseudorandom number generator with the given seed. More... | |
| float | unitRandom () |
| get a random number between 0 and 1. More... | |
| float | rangeRandom (float x1, float x2) |
| return a random number between x1 and x2 RETURNS: random number between x1 and x2. More... | |
| float | deg2Rad (float fVal) |
| double | deg2Rad (double fVal) |
| float | rad2Deg (float fVal) |
| double | rad2Deg (double fVal) |
| template<class T> bool | isEqual (const T &a, const T &b, const T &tolerance) |
| Is almost equal? test for equality within some tolerance... More... | |
| template<class T> T | trunc (T val) |
| cut off the digits after the decimal place. More... | |
| template<class T> T | round (T p) |
| round to nearest integer. More... | |
| template<class T> T | Min (const T &x, const T &y) |
| min returns the minimum of 2 values. More... | |
| template<class T> T | Min (const T &x, const T &y, const T &z) |
| min returns the minimum of 3 values. More... | |
| template<class T> T | Min (const T &w, const T &x, const T &y, const T &z) |
| min returns the minimum of 4 values. More... | |
| template<class T> T | Max (const T &x, const T &y) |
| max returns the maximum of 2 values. More... | |
| template<class T> T | Max (const T &x, const T &y, const T &z) |
| max returns the maximum of 3 values. More... | |
| template<class T> T | Max (const T &w, const T &x, const T &y, const T &z) |
| max returns the maximum of 4 values. More... | |
| template<class T> T | factorial (T rhs) |
| Compute the factorial. More... | |
Scalar type interpolation (for doubles, floats, etc...) | |
| template<class T, typename U> void | lerp (T &result, const U &lerp, const T &a, const T &b) |
| Linear Interpolation between number [a] and [b]. More... | |
Mathematical constants | |
| const float | PI = 3.14159265358979323846f |
| const float | PI_OVER_2 = 1.57079632679489661923f |
| const float | PI_OVER_4 = 0.78539816339744830962f |
Functions | |
| template<class T> T | clamp (T number, T lo, T hi) |
| clamp "number" to a range between lo and hi. More... | |
| template<class T> bool | quadraticFormula (T &r1, T &r2, const T &a, const T &b, const T &c) |
| Uses the quadratic formula to compute the 2 roots of the given 2nd degree polynomial in the form of Ax^2 + Bx + C. More... | |
|
||||||||||||||||||||
|
clamp "number" to a range between lo and hi.
Definition at line 507 of file Math.h.
00508 {
00509 if (number > hi) number = hi;
00510 else if (number < lo) number = lo;
00511 return number;
00512 }
|
|
||||||||||||||||||||||||||||
|
Uses the quadratic formula to compute the 2 roots of the given 2nd degree polynomial in the form of Ax^2 + Bx + C.
Definition at line 543 of file Math.h.
00544 {
00545 const T q = b*b - T(4)*a*c;
00546
00547 // the result has real roots
00548 if (q >= 0)
00549 {
00550 const T sq = gmtl::Math::sqrt(q);
00551 const T d = T(1) / (T(2) * a);
00552 r1 = (-b + sq) * d;
00553 r2 = (-b - sq) * d;
00554 return true;
00555 }
00556 // the result has complex roots
00557 else
00558 {
00559 return false;
00560 }
00561 }
|
1.2.14 written by Dimitri van Heesch,
© 1997-2002