#pragma once #include #include #include #include namespace Matrix3D { using Vec3 = std::array; using Vec4 = std::array; using Mat4 = std::array, 4>; class gameMatrix { public: static Mat4 identity(); static Mat4 matmul(const Mat4& A, const Mat4& B); static Mat4 translate(const Vec3& pos); static Mat4 rot3D(double angle_deg, char axis); }; Mat4 operator*(const Mat4& A, const Mat4& B); Vec3 operator*(const Mat4& m, const Vec3& v); }