1 #ifndef GIM_MATH_H_INCLUDED 2 #define GIM_MATH_H_INCLUDED 39 #define GREAL btScalar 42 #define GUINT unsigned int 44 #define GUSHORT unsigned short 45 #define GINT64 long long 46 #define GUINT64 unsigned long long 50 #define G_PI 3.14159265358979f 51 #define G_HALF_PI 1.5707963f 53 #define G_TWO_PI 6.28318530f 55 #define G_ROOT3 1.73205f 56 #define G_ROOT2 1.41421f 57 #define G_UINT_INFINITY 0xffffffff 58 #define G_REAL_INFINITY FLT_MAX 59 #define G_SIGN_BITMASK 0x80000000 60 #define G_EPSILON SIMD_EPSILON 78 #define G_DEGTORAD(X) ((X)*3.1415926f/180.0f) 79 #define G_RADTODEG(X) ((X)*180.0f/3.1415926f) 82 #define GIM_IR(x) ((GUINT&)(x)) 85 #define GIM_SIR(x) ((GINT&)(x)) 88 #define GIM_AIR(x) (GIM_IR(x)&0x7fffffff) 91 #define GIM_FR(x) ((GREAL&)(x)) 93 #define GIM_MAX(a,b) (a<b?b:a) 94 #define GIM_MIN(a,b) (a>b?b:a) 96 #define GIM_MAX3(a,b,c) GIM_MAX(a,GIM_MAX(b,c)) 97 #define GIM_MIN3(a,b,c) GIM_MIN(a,GIM_MIN(b,c)) 99 #define GIM_IS_ZERO(value) (value < G_EPSILON && value > -G_EPSILON) 101 #define GIM_IS_NEGATIVE(value) (value <= -G_EPSILON) 103 #define GIM_IS_POSISITVE(value) (value >= G_EPSILON) 105 #define GIM_NEAR_EQUAL(v1,v2) GIM_IS_ZERO((v1-v2)) 108 #define GIM_CLAMP(number,minval,maxval) (number<minval?minval:(number>maxval?maxval:number)) 110 #define GIM_GREATER(x, y) btFabs(x) > (y) 113 #define GIM_SWAP_NUMBERS(a,b){ \ 119 #define GIM_INV_SQRT(va,isva)\ 123 isva = G_REAL_INFINITY;\ 127 GREAL _x = va * 0.5f;\ 128 GUINT _y = 0x5f3759df - ( GIM_IR(va) >> 1);\ 130 isva = isva * ( 1.5f - ( _x * isva * isva ) );\ 134 #define GIM_SQRT(va,sva)\ 136 GIM_INV_SQRT(va,sva);\ 157 #endif // GIM_MATH_H_INCLUDED
#define GIM_INV_SQRT(va, isva)
#define GIM_SQRT(va, sva)
GREAL gim_inv_sqrt(GREAL f)
Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html.