Matrix.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef CORE_MATRIX_H
  2. #define CORE_MATRIX_H
  3. #include "core/Quaternion.h"
  4. #include "core/Vector.h"
  5. typedef struct {
  6. CoreVector4 data[4];
  7. } CoreMatrix;
  8. #define CORE_ZERO_MATRIX ((CoreMatrix){0})
  9. #define CORE_UNIT_MATRIX \
  10. ((CoreMatrix){ \
  11. {{{1, 0, 0, 0}}, {{0, 1, 0, 0}}, {{0, 0, 1, 0}}, {{0, 0, 0, 1}}}})
  12. CoreMatrix* coreTransposeMatrix(CoreMatrix* m);
  13. CoreMatrix* coreMulSetMatrix(CoreMatrix* m, const CoreMatrix* a);
  14. CoreMatrix* coreMulMatrix(CoreMatrix* m, const CoreMatrix* a,
  15. const CoreMatrix* b);
  16. CoreVector3* coreMulMatrixV3(CoreVector3* v, const CoreMatrix* m,
  17. const CoreVector3* a);
  18. CoreMatrix* coreScaleMatrix(CoreMatrix* m, const CoreVector3* v);
  19. CoreMatrix* coreScaleMatrixF(CoreMatrix* m, float f);
  20. CoreMatrix* coreTranslateMatrix(CoreMatrix* m, const CoreVector3* v);
  21. CoreMatrix* coreTranslateMatrixX(CoreMatrix* m, float tx);
  22. CoreMatrix* coreTranslateMatrixY(CoreMatrix* m, float ty);
  23. CoreMatrix* coreTranslateMatrixZ(CoreMatrix* m, float tz);
  24. CoreMatrix* coreTranslateMatrixTo(CoreMatrix* m, const CoreVector3* v);
  25. CoreMatrix* coreRotateMatrixX(CoreMatrix* m, float degrees);
  26. CoreMatrix* coreRotateMatrixY(CoreMatrix* m, float degrees);
  27. CoreMatrix* coreRotateMatrixZ(CoreMatrix* m, float degrees);
  28. CoreMatrix* coreRotateMatrix(CoreMatrix* m, const CoreQuaternion* q);
  29. size_t coreToStringMatrix(const CoreMatrix* m, char* buffer, size_t n);
  30. #endif