diff options
Diffstat (limited to 'src/Math/MVP.cpp')
| -rw-r--r-- | src/Math/MVP.cpp | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/Math/MVP.cpp b/src/Math/MVP.cpp index de771d3..2f00b8e 100644 --- a/src/Math/MVP.cpp +++ b/src/Math/MVP.cpp @@ -4,56 +4,5 @@ namespace Math::MVP { -Matrix<4, 4> model(Vector<3> position, Rotation angles) { - auto transformation = Matrix<4, 4>::transformation(position); - auto rotation = Matrix<4, 4>::rotation(angles); - - return transformation * rotation; -} - -Matrix<4, 4> view(Vector<3> position, Rotation angles) { - auto rotation = Matrix<4, 4>::rotation(angles); - auto transformation = Matrix<4, 4>::transformation(-position); - - return rotation * transformation; -} - -Matrix<4, 4> perspective_projection(float aspect, float fov, float near, float far) { - auto fov_radians = radians(fov); - - float x_scale = 1.0f / (tan(fov_radians / 2.0f) * aspect); - float y_scale = 1.0f / tan(fov_radians / 2.0f); - - float frustum_length = far - near; - float z_near = -(far + near) / frustum_length; - float z_far = -(2 * far * near) / frustum_length; - - Matrix<4, 4> projection{ - x_scale, 0.0f, 0.0f, 0.0f, - 0.0f, y_scale, 0.0f, 0.0f, - 0.0f, 0.0f, z_near, z_far, - 0.0f, 0.0f, -1.0f, 0.0f, - }; - - return projection; -} - -Matrix<4, 4> orthographic_projection(float width, float height, float near, float far) { - float x_scale = 2.0f / width; - float y_scale = 2.0f / -height; - - float frustum_length = far - near; - float z_near = -(far + near) / frustum_length; - float z_far = -2 / frustum_length; - - Matrix<4, 4> projection{ - x_scale, 0.0f, 0.0f, -1.0f, - 0.0f, y_scale, 0.0f, 1.0f, - 0.0f, 0.0f, z_near, z_far, - 0.0f, 0.0f, 0.0f, 1.0f, - }; - - return projection; -} } |
