Matrix.h 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. #ifndef CORE_MATRIX_H
  2. #define CORE_MATRIX_H
  3. #include "core/Quaternion.h"
  4. #include "core/Vector.h"
  5. typedef struct {
  6. Vector4 data[4];
  7. } Matrix;
  8. #define ZERO_MATRIX ((Matrix){0})
  9. #define UNIT_MATRIX \
  10. ((Matrix){{{{1, 0, 0, 0}}, {{0, 1, 0, 0}}, {{0, 0, 1, 0}}, {{0, 0, 0, 1}}}})
  11. Matrix* transposeMatrix(Matrix* m);
  12. Matrix* mulSetMatrix(Matrix* m, const Matrix* a);
  13. Matrix* mulMatrix(Matrix* m, const Matrix* a, const Matrix* b);
  14. Vector3* mulMatrixV3(Vector3* v, const Matrix* m, const Vector3* a);
  15. Matrix* scaleMatrix(Matrix* m, const Vector3* v);
  16. Matrix* scaleMatrixF(Matrix* m, float f);
  17. Matrix* translateMatrix(Matrix* m, const Vector3* v);
  18. Matrix* translateMatrixX(Matrix* m, float tx);
  19. Matrix* translateMatrixY(Matrix* m, float ty);
  20. Matrix* translateMatrixZ(Matrix* m, float tz);
  21. Matrix* translateMatrixTo(Matrix* m, const Vector3* v);
  22. Matrix* rotateMatrixX(Matrix* m, float radians);
  23. Matrix* rotateMatrixY(Matrix* m, float radians);
  24. Matrix* rotateMatrixZ(Matrix* m, float radians);
  25. Matrix* rotateMatrix(Matrix* m, const Quaternion* q);
  26. size_t toStringMatrix(const Matrix* m, char* buffer, size_t n);
  27. #endif