#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 scale(Vector3 facs); 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+() const; Matrix4 operator-() const; Matrix4 operator+(Matrix4 m) const; Matrix4 operator-(Matrix4 m) const; Matrix4 operator*(Matrix4 m) const; Vector4 operator*(Vector4 v) const; std::array to_vecs() const; }; Matrix4 operator*(float fac, Matrix4 m); } #endif // MATH_MAT4_H