aboutsummaryrefslogtreecommitdiffstats
path: root/src/include/glm/gtx/matrix_transform_2d.inl
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/glm/gtx/matrix_transform_2d.inl')
-rw-r--r--src/include/glm/gtx/matrix_transform_2d.inl68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/include/glm/gtx/matrix_transform_2d.inl b/src/include/glm/gtx/matrix_transform_2d.inl
new file mode 100644
index 0000000..755508a
--- /dev/null
+++ b/src/include/glm/gtx/matrix_transform_2d.inl
@@ -0,0 +1,68 @@
+/// @ref gtx_matrix_transform_2d
+/// @author Miguel Ángel Pérez Martínez
+
+#include "../trigonometric.hpp"
+
+namespace glm
+{
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER mat<3, 3, T, Q> translate(
+ mat<3, 3, T, Q> const& m,
+ vec<2, T, Q> const& v)
+ {
+ mat<3, 3, T, Q> Result(m);
+ Result[2] = m[0] * v[0] + m[1] * v[1] + m[2];
+ return Result;
+ }
+
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER mat<3, 3, T, Q> rotate(
+ mat<3, 3, T, Q> const& m,
+ T angle)
+ {
+ T const a = angle;
+ T const c = cos(a);
+ T const s = sin(a);
+
+ mat<3, 3, T, Q> Result;
+ Result[0] = m[0] * c + m[1] * s;
+ Result[1] = m[0] * -s + m[1] * c;
+ Result[2] = m[2];
+ return Result;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER mat<3, 3, T, Q> scale(
+ mat<3, 3, T, Q> const& m,
+ vec<2, T, Q> const& v)
+ {
+ mat<3, 3, T, Q> Result;
+ Result[0] = m[0] * v[0];
+ Result[1] = m[1] * v[1];
+ Result[2] = m[2];
+ return Result;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX(
+ mat<3, 3, T, Q> const& m,
+ T y)
+ {
+ mat<3, 3, T, Q> Result(1);
+ Result[0][1] = y;
+ return m * Result;
+ }
+
+ template<typename T, qualifier Q>
+ GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY(
+ mat<3, 3, T, Q> const& m,
+ T x)
+ {
+ mat<3, 3, T, Q> Result(1);
+ Result[1][0] = x;
+ return m * Result;
+ }
+
+}//namespace glm