home *** CD-ROM | disk | FTP | other *** search
/ The Party 1994: Try This At Home / disk_image.bin / source / vexsrc / matrix.h < prev    next >
C/C++ Source or Header  |  1994-07-04  |  2KB  |  45 lines

  1. #ifndef __MATRIX_H
  2. #define __MATRIX_H
  3.  
  4. struct vector
  5. {
  6.   long v[3];
  7.   long operator [](int i) const { return v[i]; }
  8.   long& operator [](int i) { return v[i]; }
  9. };
  10.  
  11. struct matrix
  12. {
  13.   long m[3][4];
  14. //  const long (&operator [](int i) const)[4] { return m[i]; }
  15. //  long (&operator [](int i))[4] { return m[i]; }
  16. };
  17.  
  18. extern "C"
  19. {
  20.   vector &vecmove(vector& r, const vector* p, long t, int lev);
  21.   void vecscl(vector& r, const vector& a, long s);
  22.   void vecadd(vector& r, const vector& a, const vector& b);
  23.   void vecsub(vector& r, const vector& a, const vector& b);
  24.   long vecmul(const vector& a, const vector& b);
  25.   long vecsqr(const vector& a);
  26.   void vecnorm(vector &a);
  27.   void vecxmul(vector& r, const vector& a, const vector& b);
  28.   void veccopy(vector* r, const vector* v, int n);
  29.   vector* vecxform(vector* r, const vector* v, const matrix& m, int n);
  30.   vector* vecxformvec(vector* r, const vector* v, const matrix& m, int n);
  31.   vector* vecxlate(vector* v, int n, const vector& dv);
  32.   void vectsqr(matrix& r, const vector &v, long v4);
  33.   matrix& matmul(matrix& r, const matrix& a, const matrix& b);
  34.   matrix& matscl(matrix& r, const matrix& a, long b);
  35.   matrix& matadd(matrix& r, const matrix& a, const matrix& b);
  36.   matrix& matxlate(matrix& m, const vector& v);
  37.   matrix& makematnorm(matrix& m);
  38.   matrix& makematxlate(matrix& m, const vector& v);
  39.   matrix& makematrotx(matrix& m, int a);
  40.   matrix& makematroty(matrix& m, int a);
  41.   matrix& makematrotz(matrix& m, int a);
  42. }
  43.  
  44. #endif
  45.