home *** CD-ROM | disk | FTP | other *** search
/ World of Graphics / WOGRAPH.BIN / 729.SOURCE.ZIP / VECT.H < prev   
C/C++ Source or Header  |  1993-04-28  |  1KB  |  42 lines

  1. #ifndef __VECT_H
  2. #define __VECT_H
  3.  
  4. #include <stdio.h>
  5.  
  6. typedef float Vector[3];
  7.  
  8. #define X 0
  9. #define Y 1
  10. #define Z 2
  11.  
  12. /* Transformation matrix */
  13. typedef float Matrix[4][4];
  14.  
  15. void vect_init (Vector v, float x, float y, float z);
  16. void vect_copy (Vector v1, Vector v2);
  17. int vect_equal (Vector v1, Vector v2);
  18. void vect_add (Vector v1, Vector v2, Vector v3);
  19. void vect_sub (Vector v1, Vector v2, Vector v3);
  20. void vect_scale (Vector v1, Vector v2, float k);
  21. float vect_mag (Vector v);
  22. void vect_normalize (Vector v);
  23. float vect_dot (Vector v1, Vector v2);
  24. void vect_cross (Vector v1, Vector v2, Vector v3);
  25. void vect_min (Vector v1, Vector v2, Vector v3);
  26. void vect_max (Vector v1, Vector v2, Vector v3);
  27. float vect_angle (Vector v1, Vector v2);
  28. void vect_print (FILE *f, Vector v, int dec, char sep);
  29. void vect_rotate (Vector v1, Vector v2, int axis, float angle);
  30. void vect_axis_rotate (Vector v1, Vector v2, Vector axis, float angle);
  31. void mat_identity (Matrix mat);
  32. void mat_copy (Matrix mat1, Matrix mat2);
  33. void mat_rotate (Matrix mat1, Matrix mat2, int axis, float angle);
  34. void mat_axis_rotate (Matrix mat1, Matrix mat2, Vector axis, float angle);
  35. void mat_mult (Matrix mat1, Matrix mat2, Matrix mat3);
  36. void vect_transform (Vector v1, Vector v2, Matrix mat);
  37. void mat_decode (Matrix mat, Vector scale, Vector shear, Vector rotate, Vector
  38.      transl);
  39. float mat_inv (Matrix mat1, Matrix mat2);
  40.  
  41. #endif
  42.