#pragma once
#include "matrix.hpp"
#include "quaternion.hpp"
#include "vector.hpp"
namespace prism {
Matrix4x4 perspective(float field_of_view, float aspect, float z_near, float z_far);
Matrix4x4 infinite_perspective(float field_of_view, float aspect, float z_near);
Matrix4x4 orthographic(float left, float right, float bottom, float top, float zNear, float zFar);
Matrix4x4 look_at(float3 eye, float3 center, float3 up);
Quaternion quat_look_at(float3 eye, float3 center, float3 up);
Matrix4x4 translate(Matrix4x4 matrix, float3 translation);
Matrix4x4 rotate(Matrix4x4 matrix, float angle, float3 axis);
Matrix4x4 scale(Matrix4x4 matrix, float3 scale);
} // namespace prism