home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / sharewar / quake106 / utils / common / mathlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-12  |  1.1 KB  |  49 lines

  1. #ifndef __MATHLIB__
  2. #define __MATHLIB__
  3.  
  4. // mathlib.h
  5.  
  6. #include <math.h>
  7.  
  8. #ifdef DOUBLEVEC_T
  9. typedef double vec_t;
  10. #else
  11. typedef float vec_t;
  12. #endif
  13. typedef vec_t vec3_t[3];
  14.  
  15. #define    SIDE_FRONT        0
  16. #define    SIDE_ON            2
  17. #define    SIDE_BACK        1
  18. #define    SIDE_CROSS        -2
  19.  
  20. #define    Q_PI    3.14159265358979323846
  21.  
  22. extern vec3_t vec3_origin;
  23.  
  24. #define    EQUAL_EPSILON    0.001
  25.  
  26. qboolean VectorCompare (vec3_t v1, vec3_t v2);
  27.  
  28. #define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
  29. #define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];}
  30. #define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
  31. #define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
  32.  
  33. vec_t Q_rint (vec_t in);
  34. vec_t _DotProduct (vec3_t v1, vec3_t v2);
  35. void _VectorSubtract (vec3_t va, vec3_t vb, vec3_t out);
  36. void _VectorAdd (vec3_t va, vec3_t vb, vec3_t out);
  37. void _VectorCopy (vec3_t in, vec3_t out);
  38.  
  39. double VectorLength(vec3_t v);
  40.  
  41. void VectorMA (vec3_t va, double scale, vec3_t vb, vec3_t vc);
  42.  
  43. void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
  44. vec_t VectorNormalize (vec3_t v);
  45. void VectorInverse (vec3_t v);
  46. void VectorScale (vec3_t v, vec_t scale, vec3_t out);
  47.  
  48. #endif
  49.