Clutter Engine 0.0.1
Loading...
Searching...
No Matches
transform2.inl
1
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T s)
7 {
9 r[1][0] = s;
10 return m * r;
11 }
12
13 template<typename T, qualifier Q>
14 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T s)
15 {
16 mat<3, 3, T, Q> r(1);
17 r[0][1] = s;
18 return m * r;
19 }
20
21 template<typename T, qualifier Q>
22 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T s, T t)
23 {
24 mat<4, 4, T, Q> r(1);
25 r[0][1] = s;
26 r[0][2] = t;
27 return m * r;
28 }
29
30 template<typename T, qualifier Q>
31 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T s, T t)
32 {
33 mat<4, 4, T, Q> r(1);
34 r[1][0] = s;
35 r[1][2] = t;
36 return m * r;
37 }
38
39 template<typename T, qualifier Q>
40 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T s, T t)
41 {
42 mat<4, 4, T, Q> r(1);
43 r[2][0] = s;
44 r[2][1] = t;
45 return m * r;
46 }
47
48 template<typename T, qualifier Q>
49 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> reflect2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal)
50 {
51 mat<3, 3, T, Q> r(static_cast<T>(1));
52 r[0][0] = static_cast<T>(1) - static_cast<T>(2) * normal.x * normal.x;
53 r[0][1] = -static_cast<T>(2) * normal.x * normal.y;
54 r[1][0] = -static_cast<T>(2) * normal.x * normal.y;
55 r[1][1] = static_cast<T>(1) - static_cast<T>(2) * normal.y * normal.y;
56 return m * r;
57 }
58
59 template<typename T, qualifier Q>
60 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> reflect3D(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& normal)
61 {
62 mat<4, 4, T, Q> r(static_cast<T>(1));
63 r[0][0] = static_cast<T>(1) - static_cast<T>(2) * normal.x * normal.x;
64 r[0][1] = -static_cast<T>(2) * normal.x * normal.y;
65 r[0][2] = -static_cast<T>(2) * normal.x * normal.z;
66
67 r[1][0] = -static_cast<T>(2) * normal.x * normal.y;
68 r[1][1] = static_cast<T>(1) - static_cast<T>(2) * normal.y * normal.y;
69 r[1][2] = -static_cast<T>(2) * normal.y * normal.z;
70
71 r[2][0] = -static_cast<T>(2) * normal.x * normal.z;
72 r[2][1] = -static_cast<T>(2) * normal.y * normal.z;
73 r[2][2] = static_cast<T>(1) - static_cast<T>(2) * normal.z * normal.z;
74 return m * r;
75 }
76
77 template<typename T, qualifier Q>
78 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> proj2D(
79 const mat<3, 3, T, Q>& m,
80 const vec<3, T, Q>& normal)
81 {
82 mat<3, 3, T, Q> r(static_cast<T>(1));
83 r[0][0] = static_cast<T>(1) - normal.x * normal.x;
84 r[0][1] = - normal.x * normal.y;
85 r[1][0] = - normal.x * normal.y;
86 r[1][1] = static_cast<T>(1) - normal.y * normal.y;
87 return m * r;
88 }
89
90 template<typename T, qualifier Q>
91 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> proj3D(
92 const mat<4, 4, T, Q>& m,
93 const vec<3, T, Q>& normal)
94 {
95 mat<4, 4, T, Q> r(static_cast<T>(1));
96 r[0][0] = static_cast<T>(1) - normal.x * normal.x;
97 r[0][1] = - normal.x * normal.y;
98 r[0][2] = - normal.x * normal.z;
99 r[1][0] = - normal.x * normal.y;
100 r[1][1] = static_cast<T>(1) - normal.y * normal.y;
101 r[1][2] = - normal.y * normal.z;
102 r[2][0] = - normal.x * normal.z;
103 r[2][1] = - normal.y * normal.z;
104 r[2][2] = static_cast<T>(1) - normal.z * normal.z;
105 return m * r;
106 }
107
108 template<typename T, qualifier Q>
109 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> scaleBias(T scale, T bias)
110 {
111 mat<4, 4, T, Q> result;
112 result[3] = vec<4, T, Q>(vec<3, T, Q>(bias), static_cast<T>(1));
113 result[0][0] = scale;
114 result[1][1] = scale;
115 result[2][2] = scale;
116 return result;
117 }
118
119 template<typename T, qualifier Q>
120 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias)
121 {
122 return m * scaleBias(scale, bias);
123 }
124}//namespace glm
125
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Definition matrix_transform.inl:78
GLM_FUNC_DECL mat< 3, 3, T, Q > proj2D(mat< 3, 3, T, Q > const &m, vec< 3, T, Q > const &normal)
Definition transform2.inl:78
GLM_FUNC_DECL mat< 4, 4, T, Q > proj3D(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &normal)
Definition transform2.inl:91
GLM_FUNC_DECL mat< 3, 3, T, Q > shearY2D(mat< 3, 3, T, Q > const &m, T x)
Definition transform2.inl:14
GLM_FUNC_DECL mat< 4, 4, T, Q > shearZ3D(mat< 4, 4, T, Q > const &m, T x, T y)
Definition transform2.inl:40
GLM_FUNC_DECL mat< 4, 4, T, Q > shearY3D(mat< 4, 4, T, Q > const &m, T x, T z)
Definition transform2.inl:31
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias(T scale, T bias)
Definition transform2.inl:109
GLM_FUNC_DECL mat< 4, 4, T, Q > shearX3D(mat< 4, 4, T, Q > const &m, T y, T z)
Definition transform2.inl:22
GLM_FUNC_DECL mat< 3, 3, T, Q > shearX2D(mat< 3, 3, T, Q > const &m, T y)
Definition transform2.inl:6
Core features
Definition common.hpp:21
Definition qualifier.hpp:36
Definition qualifier.hpp:35