#ifndef MATH_MAT4_H #define MATH_MAT4_H #include #include "math/vector.h" namespace engine::math { class Matrix4 { public: static Matrix4 idty(); static Matrix4 translate(Vector3 v); static Matrix4 scale(float fac); static Matrix4 rot_x(float a); static Matrix4 rot_y(float a); static Matrix4 rot_z(float a); static Matrix4 projection(float aspect_ratio, float min_z, float max_z); std::array values; Matrix4 operator+(); Matrix4 operator-(); Matrix4 operator+(Matrix4 m); Matrix4 operator-(Matrix4 m); Matrix4 operator*(Matrix4 m); Vector4 operator*(Vector4 v); std::array to_vecs(); }; Matrix4 operator*(float fac, Matrix4 m); } #endif // MATH_MAT4_H