From e62817b8252974b8a98393275874ee303840bf13 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 12 May 2017 18:49:50 +0500 Subject: 2017-05-12 --- depedencies/include/glm/gtx/transform2.inl | 126 +++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 depedencies/include/glm/gtx/transform2.inl (limited to 'depedencies/include/glm/gtx/transform2.inl') diff --git a/depedencies/include/glm/gtx/transform2.inl b/depedencies/include/glm/gtx/transform2.inl new file mode 100644 index 0000000..6e0ab31 --- /dev/null +++ b/depedencies/include/glm/gtx/transform2.inl @@ -0,0 +1,126 @@ +/// @ref gtx_transform2 +/// @file glm/gtx/transform2.inl + +namespace glm +{ + template + GLM_FUNC_QUALIFIER tmat3x3 shearX2D(tmat3x3 const& m, T s) + { + tmat3x3 r(1); + r[1][0] = s; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat3x3 shearY2D(tmat3x3 const& m, T s) + { + tmat3x3 r(1); + r[0][1] = s; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 shearX3D(tmat4x4 const& m, T s, T t) + { + tmat4x4 r(1); + r[0][1] = s; + r[0][2] = t; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 shearY3D(tmat4x4 const& m, T s, T t) + { + tmat4x4 r(1); + r[1][0] = s; + r[1][2] = t; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 shearZ3D(tmat4x4 const& m, T s, T t) + { + tmat4x4 r(1); + r[2][0] = s; + r[2][1] = t; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat3x3 reflect2D(tmat3x3 const& m, tvec3 const& normal) + { + tmat3x3 r(static_cast(1)); + r[0][0] = static_cast(1) - static_cast(2) * normal.x * normal.x; + r[0][1] = -static_cast(2) * normal.x * normal.y; + r[1][0] = -static_cast(2) * normal.x * normal.y; + r[1][1] = static_cast(1) - static_cast(2) * normal.y * normal.y; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 reflect3D(tmat4x4 const& m, tvec3 const& normal) + { + tmat4x4 r(static_cast(1)); + r[0][0] = static_cast(1) - static_cast(2) * normal.x * normal.x; + r[0][1] = -static_cast(2) * normal.x * normal.y; + r[0][2] = -static_cast(2) * normal.x * normal.z; + + r[1][0] = -static_cast(2) * normal.x * normal.y; + r[1][1] = static_cast(1) - static_cast(2) * normal.y * normal.y; + r[1][2] = -static_cast(2) * normal.y * normal.z; + + r[2][0] = -static_cast(2) * normal.x * normal.z; + r[2][1] = -static_cast(2) * normal.y * normal.z; + r[2][2] = static_cast(1) - static_cast(2) * normal.z * normal.z; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat3x3 proj2D( + const tmat3x3& m, + const tvec3& normal) + { + tmat3x3 r(static_cast(1)); + r[0][0] = static_cast(1) - normal.x * normal.x; + r[0][1] = - normal.x * normal.y; + r[1][0] = - normal.x * normal.y; + r[1][1] = static_cast(1) - normal.y * normal.y; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 proj3D( + const tmat4x4& m, + const tvec3& normal) + { + tmat4x4 r(static_cast(1)); + r[0][0] = static_cast(1) - normal.x * normal.x; + r[0][1] = - normal.x * normal.y; + r[0][2] = - normal.x * normal.z; + r[1][0] = - normal.x * normal.y; + r[1][1] = static_cast(1) - normal.y * normal.y; + r[1][2] = - normal.y * normal.z; + r[2][0] = - normal.x * normal.z; + r[2][1] = - normal.y * normal.z; + r[2][2] = static_cast(1) - normal.z * normal.z; + return m * r; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 scaleBias(T scale, T bias) + { + tmat4x4 result; + result[3] = tvec4(tvec3(bias), static_cast(1)); + result[0][0] = scale; + result[1][1] = scale; + result[2][2] = scale; + return result; + } + + template + GLM_FUNC_QUALIFIER tmat4x4 scaleBias(tmat4x4 const& m, T scale, T bias) + { + return m * scaleBias(scale, bias); + } +}//namespace glm + -- cgit v1.2.3