Matrix.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef MATRIX_H
  2. #define MATRIX_H
  3. #include "math/Vector.h"
  4. #include "utils/StringBuffer.h"
  5. class Matrix final {
  6. Vector4 data[4];
  7. Matrix& rotate(float degrees, int a, int b);
  8. public:
  9. Matrix();
  10. Matrix& set(int index, const Vector4& v);
  11. Matrix transpose();
  12. const float* getValues() const;
  13. Matrix& operator*=(const Matrix& other);
  14. Matrix operator*(const Matrix& other) const;
  15. Vector3 operator*(const Vector3& v) const;
  16. Matrix& scale(const Vector3& v);
  17. Matrix& scale(float f);
  18. Matrix& translate(const Vector3& v);
  19. Matrix& translateX(float tx);
  20. Matrix& translateY(float ty);
  21. Matrix& translateZ(float tz);
  22. Matrix& translateTo(const Vector3& v);
  23. Matrix& rotateX(float degrees);
  24. Matrix& rotateY(float degrees);
  25. Matrix& rotateZ(float degrees);
  26. template<int L>
  27. void toString(StringBuffer<L>& s) const {
  28. s.append('[').append(data[0]).append(", ");
  29. s.append(data[1]).append(", ");
  30. s.append(data[2]).append(", ");
  31. s.append(data[3]).append("]");
  32. }
  33. };
  34. #endif