glui_internal.h
上传用户:gb3593
上传日期:2022-01-07
资源大小:3028k
文件大小:3k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #ifndef GLUI_INTERNAL_H
  2. #define GLUI_INTERNAL_H
  3. #include <cstdio>
  4. #include <cmath>
  5. #ifndef AND
  6. #define AND &&
  7. #define OR  ||
  8. #define NOT !
  9. #endif
  10. #ifndef MAX
  11. #define MAX(a,b)  ((a)>(b) ? (a) : (b))
  12. #define MIN(a,b)  ((a)<(b) ? (a) : (b))
  13. #endif
  14. #ifndef ABS
  15. #define ABS(a) ((a)>=0 ? (a) : (-(a)))
  16. #endif
  17. /********************  bit comparisons and operations ***************/
  18. #ifndef TEST_BIT
  19. #define TEST_BIT( x, b )   (((x) & (1<<(b))) != 0 )
  20. #define SET_BIT( x, b )    ((x) |= (1 << (b)))
  21. #define CLEAR_BIT( x, b )  ((x) &= ~(1 << (b)))
  22. #define TOGGLE_BIT( x, b ) ((TEST_BIT(x,b)) ?(CLEAR_BIT(x,b)):(SET_BIT(x,b)))
  23. #endif
  24. #ifndef TEST_AND
  25. #define TEST_AND( a, b ) ((a&b)==b)
  26. #endif
  27. #ifndef M_PI
  28. #define M_PI 3.141592654
  29. #endif
  30. /*********** flush the stdout and stderr output streams *************/
  31. #ifndef flushout
  32. #define flushout fflush(stdout)
  33. #define flusherr fflush(stderr)
  34. #endif
  35. /********** Debugging functions *************************************/
  36. #ifndef error_return
  37. #define error_return( c ); {fprintf(stderr,c);return;}
  38. #endif
  39. /************************* floating-point random ********************/
  40. #ifndef randf
  41. #define randf()  ((float) rand() / (float)RAND_MAX )
  42. #endif
  43. #ifndef SIGN
  44. #define SIGN(x) ((x)>=0 ?  1  :  -1)
  45. #endif
  46. /****************** conversion between degrees and radians **********/
  47. #ifndef DEG2RAD
  48. #define DEG2RAD(x) ((x)/180.0*M_PI)
  49. #define RAD2DEG(x) ((x)/M_PI*180.0)
  50. #endif
  51. /***************** clamp a value to some fixed interval *************/
  52. #ifndef CLAMP
  53. #define CLAMP(x,lo,hi)  {if ((x) < (lo)) {(x)=(lo);} else if((x) > (hi)) {(x)=(hi);}}
  54. #endif
  55. /************ check if a value lies within a closed interval *********/
  56. #ifndef IN_BOUNDS
  57. #define IN_BOUNDS( x, lo, hi ) ( (x) >= (lo) AND (x) <= (hi) )
  58. #endif
  59. /************ check if a 2D point lies within a 2D box ***************/
  60. #ifndef PT_IN_BOX
  61. #define PT_IN_BOX( x, y, lo_x, hi_x, lo_y, hi_y ) 
  62. ( IN_BOUNDS(x,lo_x,hi_x) AND IN_BOUNDS(y,lo_y,hi_y) )
  63. #endif
  64. /****** check if value lies on proper side of another value     *****/
  65. /*** if side is positive => proper side is positive, else negative **/
  66. #ifndef CHECK_PROPER_SIDE
  67. #define CHECK_PROPER_SIDE(x,val,side) ((side) > 0 ? (x) > (val) : (x) < (val))
  68. #endif
  69. /***** Small value when we want to do a comparison to 'close to zero' *****/
  70. #ifndef FUDGE
  71. #define FUDGE .00001
  72. #endif
  73. /******************* swap two values, using a temp variable *********/
  74. #ifndef SWAP2
  75. #define SWAP2(a,b,t) {t=a;a=b;b=t;}     
  76. #endif
  77. #define VEC3_TO_ARRAY(v,a)  a[0]=v[0], a[1]=v[1], a[2]=v[2]
  78. /**** Return the ASCII control code given the non-control ASCII character */
  79. #define CTRL(c) ( (c>=('a'-1)) ? (c-'a'+1) : (c-'A'+1) )
  80. #endif /* GLUI_INTERNAL_H */