mat.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #ifndef SR_MATH_H
  2. #define SR_MATH_H
  3. #include "sr.h"
  4. #include <string.h>
  5. #include <math.h>
  6. /**
  7. * sr_math.h
  8. * --------
  9. * provides an internal matrix representation (mat4)
  10. * and associated operations for the sr lib
  11. *
  12. */
  13. /*********************************************************************
  14. * *
  15. * 4 by 4 matrix struct *
  16. * *
  17. *********************************************************************/
  18. struct mat4 {
  19. float e00, e01, e02, e03;
  20. float e10, e11, e12, e13;
  21. float e20, e21, e22, e23;
  22. float e30, e31, e32, e33;
  23. };
  24. /*********************************************************************
  25. * *
  26. * public declarations *
  27. * *
  28. *********************************************************************/
  29. extern void
  30. matmul(struct mat4* a, struct mat4* b);
  31. extern int
  32. invert(struct mat4* a);
  33. extern void
  34. transpose(struct mat4* a);
  35. extern void
  36. upper_3x3(struct mat4* a);
  37. extern void
  38. vec4_matmul(float* a, struct mat4* b, float* c);
  39. extern void
  40. vec4_mul(float* a, float* b, float* c);
  41. extern void
  42. vec4_add(float* a, float* b, float* c);
  43. extern void
  44. vec4_scale(float* a, float* b, float c);
  45. extern void
  46. lerp(float* a, float* b, float* c, float alpha);
  47. extern void
  48. vec3_sub(float* a, float* b, float* c);
  49. extern void
  50. vec3_add(float* a, float* b, float* c);
  51. extern void
  52. vec3_scale(float* a, float* b, float c);
  53. extern void
  54. reflect(float* r, float* n, float* v);
  55. extern float
  56. dot(float* a, float* b);
  57. extern void
  58. cross(float* a, float* b, float* c);
  59. extern float
  60. magnitude(float* a);
  61. extern void
  62. normalize(float* a);
  63. extern float
  64. radians(float deg);
  65. #endif /* SR_MATH_H */