home *** CD-ROM | disk | FTP | other *** search
- #ifndef MACROS_H
- #define MACROS_H
-
- #define EPSILON 0.00000001
- #define PI_OVER_2 1.570796
-
- /*
- * utility macros
- */
- #define ABS( a ) ( ((a) > 0 )? (a) : (-(a)) )
- #define MIN( a, b ) ( ((a) < (b)) ? (a) : (b) )
- #define MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
- #define MINI( a, b ) ( ((a) < (b)) ? 0 : 1 )
- #define MAXI( a, b ) ( ((a) > (b)) ? 0 : 1 )
- #define CLAMP( n, a, b ) ( MAX( MIN((n),(b)), (a) ) )
- #define SWAP( a, b ) { (a) ^= (b); (b) ^= (a); (a) ^= (b); }
- #define FLOOR( a ) ( ((a) > 0) ? (int)(a) : -(int)(-a) )
- #define CEILING( a ) (((a)==(int)(a))?(a):((a)>0)?1+(int)(a):-((int)(-a)))
- #define ROUND( a ) ( ((a) > 0) ? (int)(a+0.5) : -(int)(0.5-(a)) )
- #define RAND( a, b ) ( (a) + ( random()%(((b)+1)-(a)) ) )
- #define ABSOLUTE( i,j,k ) ( (i-j)*(k = ( (i-j)<0 ? -1 : 1)))
- #define SQR( a ) ( (a)*(a) )
- #define SGN( a ) ( ((a) < 0) ? -1 : 1 )
- #define FLT_EQUAL( a, b ) ( ABS((a) - (b)) < EPSILON )
- #define FLT_ZERO( a ) ( ABS((a)) <= EPSILON )
- #define FLT_LT_ZERO( a ) ( (a) < EPSILON )
- #define FLT_GT_ZERO( a ) ( (a) > EPSILON )
- #define FLT_NON_ZERO( a ) ( ABS((a)) > EPSILON )
- #define DEG2RAD( a ) ( (FLOAT32)((a) * 0.01745329251994329576) )
- #define RAD2DEG( a ) ( (FLOAT32)((a) * 57.29577951308232087684) )
- #define ODD( a ) ( (a)%2 )
- #define EVEN( a ) ( !((a)%2) )
-
- #define SET_VERTEX_TEX( _vp, _u, _v ) \
- { \
- (_vp)->texture[0] = (_u); \
- (_vp)->texture[1] = (_v); \
- (_vp)->field_mask |= TEX_BIT; \
- }
-
- #endif