home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 58 / pcpp58a.iso / extras / quake 3 source / Q3A_ToolSource.exe / Main / mathlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-01-02  |  1.9 KB  |  66 lines

  1. #ifndef __MATHLIB__
  2. #define __MATHLIB__
  3.  
  4. // mathlib.h
  5.  
  6. #include <math.h>
  7.  
  8. typedef float vec_t;
  9. typedef vec_t vec3_t[3];
  10. typedef vec_t vec5_t[5];
  11.  
  12. #define    SIDE_FRONT        0
  13. #define    SIDE_ON            2
  14. #define    SIDE_BACK        1
  15. #define    SIDE_CROSS        -2
  16.  
  17. #define    Q_PI    3.14159265358979323846
  18.  
  19. extern vec3_t vec3_origin;
  20.  
  21. #define    EQUAL_EPSILON    0.001
  22.  
  23. qboolean VectorCompare (vec3_t v1, vec3_t v2);
  24.  
  25. #define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
  26. #define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];}
  27. #define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
  28. #define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
  29. #define VectorSet(v, a, b, c) {v[0]=a;v[1]=b;v[2]=c;}
  30.  
  31. vec_t Q_rint (vec_t in);
  32. vec_t _DotProduct (vec3_t v1, vec3_t v2);
  33. void _VectorSubtract (vec3_t va, vec3_t vb, vec3_t out);
  34. void _VectorAdd (vec3_t va, vec3_t vb, vec3_t out);
  35. void _VectorCopy (vec3_t in, vec3_t out);
  36.  
  37. float VectorLength(vec3_t v);
  38.  
  39. void VectorMA (vec3_t va, float scale, vec3_t vb, vec3_t vc);
  40.  
  41. void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
  42. vec_t VectorNormalize (vec3_t v);
  43. void VectorInverse (vec3_t v);
  44. void VectorScale (vec3_t v, vec_t scale, vec3_t out);
  45. void VectorPolar(vec3_t v, float radius, float theta, float phi);
  46. void VectorSnap(vec3_t v);
  47.  
  48. void _Vector53Copy (vec5_t in, vec3_t out);
  49. void _Vector5Scale (vec5_t v, vec_t scale, vec5_t out);
  50. void _Vector5Add (vec5_t va, vec5_t vb, vec5_t out);
  51.  
  52. // NOTE: added these from Ritual's Q3Radiant
  53. void ClearBounds (vec3_t mins, vec3_t maxs);
  54. void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
  55.  
  56. void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
  57. void VectorToAngles( vec3_t vec, vec3_t angles );
  58. #define VectorClear(x) {x[0] = x[1] = x[2] = 0;}
  59.  
  60. #define ZERO_EPSILON 1.0E-6
  61. #define RAD2DEG( a ) ( ( (a) * 180.0f ) / Q_PI )
  62. #define DEG2RAD( a ) ( ( (a) * Q_PI ) / 180.0f )
  63.  
  64.  
  65. #endif
  66.