Clutter Engine 0.0.1
Loading...
Searching...
No Matches
matrix_operation.inl
1
2
3namespace glm
4{
5 template<typename T, qualifier Q>
6 GLM_FUNC_QUALIFIER mat<2, 2, T, Q> diagonal2x2
7 (
8 vec<2, T, Q> const& v
9 )
10 {
11 mat<2, 2, T, Q> Result(static_cast<T>(1));
12 Result[0][0] = v[0];
13 Result[1][1] = v[1];
14 return Result;
15 }
16
17 template<typename T, qualifier Q>
18 GLM_FUNC_QUALIFIER mat<2, 3, T, Q> diagonal2x3
19 (
20 vec<2, T, Q> const& v
21 )
22 {
23 mat<2, 3, T, Q> Result(static_cast<T>(1));
24 Result[0][0] = v[0];
25 Result[1][1] = v[1];
26 return Result;
27 }
28
29 template<typename T, qualifier Q>
30 GLM_FUNC_QUALIFIER mat<2, 4, T, Q> diagonal2x4
31 (
32 vec<2, T, Q> const& v
33 )
34 {
35 mat<2, 4, T, Q> Result(static_cast<T>(1));
36 Result[0][0] = v[0];
37 Result[1][1] = v[1];
38 return Result;
39 }
40
41 template<typename T, qualifier Q>
42 GLM_FUNC_QUALIFIER mat<3, 2, T, Q> diagonal3x2
43 (
44 vec<2, T, Q> const& v
45 )
46 {
47 mat<3, 2, T, Q> Result(static_cast<T>(1));
48 Result[0][0] = v[0];
49 Result[1][1] = v[1];
50 return Result;
51 }
52
53 template<typename T, qualifier Q>
54 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> diagonal3x3
55 (
56 vec<3, T, Q> const& v
57 )
58 {
59 mat<3, 3, T, Q> Result(static_cast<T>(1));
60 Result[0][0] = v[0];
61 Result[1][1] = v[1];
62 Result[2][2] = v[2];
63 return Result;
64 }
65
66 template<typename T, qualifier Q>
67 GLM_FUNC_QUALIFIER mat<3, 4, T, Q> diagonal3x4
68 (
69 vec<3, T, Q> const& v
70 )
71 {
72 mat<3, 4, T, Q> Result(static_cast<T>(1));
73 Result[0][0] = v[0];
74 Result[1][1] = v[1];
75 Result[2][2] = v[2];
76 return Result;
77 }
78
79 template<typename T, qualifier Q>
80 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> diagonal4x4
81 (
82 vec<4, T, Q> const& v
83 )
84 {
85 mat<4, 4, T, Q> Result(static_cast<T>(1));
86 Result[0][0] = v[0];
87 Result[1][1] = v[1];
88 Result[2][2] = v[2];
89 Result[3][3] = v[3];
90 return Result;
91 }
92
93 template<typename T, qualifier Q>
94 GLM_FUNC_QUALIFIER mat<4, 3, T, Q> diagonal4x3
95 (
96 vec<3, T, Q> const& v
97 )
98 {
99 mat<4, 3, T, Q> Result(static_cast<T>(1));
100 Result[0][0] = v[0];
101 Result[1][1] = v[1];
102 Result[2][2] = v[2];
103 return Result;
104 }
105
106 template<typename T, qualifier Q>
107 GLM_FUNC_QUALIFIER mat<4, 2, T, Q> diagonal4x2
108 (
109 vec<2, T, Q> const& v
110 )
111 {
112 mat<4, 2, T, Q> Result(static_cast<T>(1));
113 Result[0][0] = v[0];
114 Result[1][1] = v[1];
115 return Result;
116 }
117
118 template<typename T, qualifier Q>
119 GLM_FUNC_QUALIFIER mat<2, 2, T, Q> adjugate(mat<2, 2, T, Q> const& m)
120 {
121 return mat<2, 2, T, Q>(
122 +m[1][1], -m[1][0],
123 -m[0][1], +m[0][0]);
124 }
125
126 template<typename T, qualifier Q>
127 GLM_FUNC_QUALIFIER mat<3, 3, T, Q> adjugate(mat<3, 3, T, Q> const& m)
128 {
129 T const m00 = determinant(mat<2, 2, T, Q>(m[1][1], m[2][1], m[1][2], m[2][2]));
130 T const m01 = determinant(mat<2, 2, T, Q>(m[0][1], m[2][1], m[0][2], m[2][2]));
131 T const m02 = determinant(mat<2, 2, T, Q>(m[0][1], m[1][1], m[0][2], m[1][2]));
132
133 T const m10 = determinant(mat<2, 2, T, Q>(m[1][0], m[2][0], m[1][2], m[2][2]));
134 T const m11 = determinant(mat<2, 2, T, Q>(m[0][0], m[2][0], m[0][2], m[2][2]));
135 T const m12 = determinant(mat<2, 2, T, Q>(m[0][0], m[1][0], m[0][2], m[1][2]));
136
137 T const m20 = determinant(mat<2, 2, T, Q>(m[1][0], m[2][0], m[1][1], m[2][1]));
138 T const m21 = determinant(mat<2, 2, T, Q>(m[0][0], m[2][0], m[0][1], m[2][1]));
139 T const m22 = determinant(mat<2, 2, T, Q>(m[0][0], m[1][0], m[0][1], m[1][1]));
140
141 return mat<3, 3, T, Q>(
142 +m00, -m01, +m02,
143 -m10, +m11, -m12,
144 +m20, -m21, +m22);
145 }
146
147 template<typename T, qualifier Q>
148 GLM_FUNC_QUALIFIER mat<4, 4, T, Q> adjugate(mat<4, 4, T, Q> const& m)
149 {
150 T const m00 = determinant(mat<3, 3, T, Q>(m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]));
151 T const m01 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]));
152 T const m02 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][1], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][1], m[3][3]));
153 T const m03 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]));
154
155 T const m10 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]));
156 T const m11 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]));
157 T const m12 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]));
158 T const m13 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]));
159
160 T const m20 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[3][1], m[3][2], m[3][3]));
161 T const m21 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[3][0], m[3][2], m[3][3]));
162 T const m22 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]));
163 T const m23 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[3][0], m[3][1], m[3][2]));
164
165 T const m30 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3]));
166 T const m31 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3]));
167 T const m32 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3]));
168 T const m33 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]));
169
170 return mat<4, 4, T, Q>(
171 +m00, -m01, +m02, -m03,
172 -m10, +m11, -m12, +m13,
173 +m20, -m21, +m22, -m23,
174 -m30, +m31, -m32, +m33);
175 }
176}//namespace glm
GLM_FUNC_QUALIFIER T determinant(mat< C, R, T, Q > const &m)
Definition func_matrix.inl:381
GLM_FUNC_DECL mat< 4, 4, T, Q > diagonal4x4(vec< 4, T, Q > const &v)
Definition matrix_operation.inl:81
GLM_FUNC_DECL mat< 2, 2, T, Q > diagonal2x2(vec< 2, T, Q > const &v)
Definition matrix_operation.inl:7
GLM_FUNC_DECL mat< 2, 3, T, Q > diagonal2x3(vec< 2, T, Q > const &v)
Definition matrix_operation.inl:19
GLM_FUNC_DECL mat< 2, 2, T, Q > adjugate(mat< 2, 2, T, Q > const &m)
Definition matrix_operation.inl:119
GLM_FUNC_DECL mat< 3, 2, T, Q > diagonal3x2(vec< 2, T, Q > const &v)
Definition matrix_operation.inl:43
GLM_FUNC_DECL mat< 4, 3, T, Q > diagonal4x3(vec< 3, T, Q > const &v)
Definition matrix_operation.inl:95
GLM_FUNC_DECL mat< 4, 2, T, Q > diagonal4x2(vec< 2, T, Q > const &v)
Definition matrix_operation.inl:108
GLM_FUNC_DECL mat< 3, 4, T, Q > diagonal3x4(vec< 3, T, Q > const &v)
Definition matrix_operation.inl:68
GLM_FUNC_DECL mat< 3, 3, T, Q > diagonal3x3(vec< 3, T, Q > const &v)
Definition matrix_operation.inl:55
GLM_FUNC_DECL mat< 2, 4, T, Q > diagonal2x4(vec< 2, T, Q > const &v)
Definition matrix_operation.inl:31
Core features
Definition common.hpp:21
Definition qualifier.hpp:36
Definition qualifier.hpp:35