29 #ifndef glm_core_type_mat4x4
30 #define glm_core_type_mat4x4
37 template <
typename T>
struct tvec1;
38 template <
typename T>
struct tvec2;
39 template <
typename T>
struct tvec3;
40 template <
typename T>
struct tvec4;
41 template <
typename T>
struct tmat2x2;
42 template <
typename T>
struct tmat2x3;
43 template <
typename T>
struct tmat2x4;
44 template <
typename T>
struct tmat3x2;
45 template <
typename T>
struct tmat3x3;
46 template <
typename T>
struct tmat3x4;
47 template <
typename T>
struct tmat4x2;
48 template <
typename T>
struct tmat4x3;
49 template <
typename T>
struct tmat4x4;
56 typedef std::size_t size_type;
57 typedef tvec4<T> col_type;
58 typedef tvec4<T> row_type;
59 typedef tmat4x4<T> type;
60 typedef tmat4x4<T> transpose_type;
62 static GLM_FUNC_DECL size_type col_size();
63 static GLM_FUNC_DECL size_type row_size();
65 GLM_FUNC_DECL GLM_CONSTEXPR size_type
length()
const;
70 GLM_FUNC_DECL tmat4x4<T> _inverse()
const;
79 GLM_FUNC_DECL tmat4x4();
80 GLM_FUNC_DECL tmat4x4(tmat4x4
const & m);
82 GLM_FUNC_DECL
explicit tmat4x4(
84 GLM_FUNC_DECL
explicit tmat4x4(
85 value_type
const & x);
86 GLM_FUNC_DECL
explicit tmat4x4(
87 value_type
const & x0, value_type
const & y0, value_type
const & z0, value_type
const & w0,
88 value_type
const & x1, value_type
const & y1, value_type
const & z1, value_type
const & w1,
89 value_type
const & x2, value_type
const & y2, value_type
const & z2, value_type
const & w2,
90 value_type
const & x3, value_type
const & y3, value_type
const & z3, value_type
const & w3);
91 GLM_FUNC_DECL
explicit tmat4x4(
100 GLM_FUNC_DECL
explicit tmat4x4(
104 typename X1,
typename Y1,
typename Z1,
typename W1,
105 typename X2,
typename Y2,
typename Z2,
typename W2,
106 typename X3,
typename Y3,
typename Z3,
typename W3,
107 typename X4,
typename Y4,
typename Z4,
typename W4>
108 GLM_FUNC_DECL
explicit tmat4x4(
109 X1
const & x1, Y1
const & y1, Z1
const & z1, W1
const & w1,
110 X2
const & x2, Y2
const & y2, Z2
const & z2, W2
const & w2,
111 X3
const & x3, Y3
const & y3, Z3
const & z3, W3
const & w3,
112 X4
const & x4, Y4
const & y4, Z4
const & z4, W4
const & w4);
114 template <
typename V1,
typename V2,
typename V3,
typename V4>
115 GLM_FUNC_DECL
explicit tmat4x4(
116 tvec4<V1>
const & v1,
117 tvec4<V2>
const & v2,
118 tvec4<V3>
const & v3,
119 tvec4<V4>
const & v4);
122 template <
typename U>
123 GLM_FUNC_DECL
explicit tmat4x4(tmat4x4<U>
const & m);
125 GLM_FUNC_DECL
explicit tmat4x4(tmat2x2<T>
const & x);
126 GLM_FUNC_DECL
explicit tmat4x4(tmat3x3<T>
const & x);
127 GLM_FUNC_DECL
explicit tmat4x4(tmat2x3<T>
const & x);
128 GLM_FUNC_DECL
explicit tmat4x4(tmat3x2<T>
const & x);
129 GLM_FUNC_DECL
explicit tmat4x4(tmat2x4<T>
const & x);
130 GLM_FUNC_DECL
explicit tmat4x4(tmat4x2<T>
const & x);
131 GLM_FUNC_DECL
explicit tmat4x4(tmat3x4<T>
const & x);
132 GLM_FUNC_DECL
explicit tmat4x4(tmat4x3<T>
const & x);
135 GLM_FUNC_DECL col_type & operator[](size_type i);
136 GLM_FUNC_DECL col_type
const & operator[](size_type i)
const;
139 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<T>
const & m);
140 template <
typename U>
141 GLM_FUNC_DECL tmat4x4<T> & operator= (tmat4x4<U>
const & m);
142 template <
typename U>
143 GLM_FUNC_DECL tmat4x4<T> & operator+= (U
const & s);
144 template <
typename U>
145 GLM_FUNC_DECL tmat4x4<T> & operator+= (tmat4x4<U>
const & m);
146 template <
typename U>
147 GLM_FUNC_DECL tmat4x4<T> & operator-= (U
const & s);
148 template <
typename U>
149 GLM_FUNC_DECL tmat4x4<T> & operator-= (tmat4x4<U>
const & m);
150 template <
typename U>
151 GLM_FUNC_DECL tmat4x4<T> & operator*= (U
const & s);
152 template <
typename U>
153 GLM_FUNC_DECL tmat4x4<T> & operator*= (tmat4x4<U>
const & m);
154 template <
typename U>
155 GLM_FUNC_DECL tmat4x4<T> & operator/= (U
const & s);
156 template <
typename U>
157 GLM_FUNC_DECL tmat4x4<T> & operator/= (tmat4x4<U>
const & m);
158 GLM_FUNC_DECL tmat4x4<T> & operator++ ();
159 GLM_FUNC_DECL tmat4x4<T> & operator-- ();
163 template <
typename T>
164 tmat4x4<T> operator+ (
165 tmat4x4<T>
const & m,
166 typename tmat4x4<T>::value_type
const & s);
168 template <
typename T>
169 tmat4x4<T> operator+ (
170 typename tmat4x4<T>::value_type
const & s,
171 tmat4x4<T>
const & m);
173 template <
typename T>
174 tmat4x4<T> operator+ (
175 tmat4x4<T>
const & m1,
176 tmat4x4<T>
const & m2);
178 template <
typename T>
179 tmat4x4<T> operator- (
180 tmat4x4<T>
const & m,
181 typename tmat4x4<T>::value_type
const & s);
183 template <
typename T>
184 tmat4x4<T> operator- (
185 typename tmat4x4<T>::value_type
const & s,
186 tmat4x4<T>
const & m);
188 template <
typename T>
189 tmat4x4<T> operator- (
190 tmat4x4<T>
const & m1,
191 tmat4x4<T>
const & m2);
193 template <
typename T>
194 tmat4x4<T> operator* (
195 tmat4x4<T>
const & m,
196 typename tmat4x4<T>::value_type
const & s);
198 template <
typename T>
199 tmat4x4<T> operator* (
200 typename tmat4x4<T>::value_type
const & s,
201 tmat4x4<T>
const & m);
203 template <
typename T>
204 typename tmat4x4<T>::col_type operator* (
205 tmat4x4<T>
const & m,
206 typename tmat4x4<T>::row_type
const & v);
208 template <
typename T>
209 typename tmat4x4<T>::row_type operator* (
210 typename tmat4x4<T>::col_type
const & v,
211 tmat4x4<T>
const & m);
213 template <
typename T>
214 tmat2x4<T> operator* (
215 tmat4x4<T>
const & m1,
216 tmat2x4<T>
const & m2);
218 template <
typename T>
219 tmat3x4<T> operator* (
220 tmat4x4<T>
const & m1,
221 tmat3x4<T>
const & m2);
223 template <
typename T>
224 tmat4x4<T> operator* (
225 tmat4x4<T>
const & m1,
226 tmat4x4<T>
const & m2);
228 template <
typename T>
229 tmat4x4<T> operator/ (
230 tmat4x4<T>
const & m,
231 typename tmat4x4<T>::value_type
const & s);
233 template <
typename T>
234 tmat4x4<T> operator/ (
235 typename tmat4x4<T>::value_type
const & s,
236 tmat4x4<T>
const & m);
238 template <
typename T>
239 typename tmat4x4<T>::col_type operator/ (
240 tmat4x4<T>
const & m,
241 typename tmat4x4<T>::row_type
const & v);
243 template <
typename T>
244 typename tmat4x4<T>::row_type operator/ (
245 typename tmat4x4<T>::col_type & v,
246 tmat4x4<T>
const & m);
248 template <
typename T>
249 tmat4x4<T> operator/ (
250 tmat4x4<T>
const & m1,
251 tmat4x4<T>
const & m2);
254 template <
typename T>
255 tmat4x4<T>
const operator- (
256 tmat4x4<T>
const & m);
258 template <
typename T>
259 tmat4x4<T>
const operator-- (
260 tmat4x4<T>
const & m,
int);
262 template <
typename T>
263 tmat4x4<T>
const operator++ (
264 tmat4x4<T>
const & m,
int);
276 typedef detail::tmat4x4<lowp_float> lowp_mat4;
283 typedef detail::tmat4x4<mediump_float> mediump_mat4;
290 typedef detail::tmat4x4<highp_float> highp_mat4;
297 typedef detail::tmat4x4<lowp_float> lowp_mat4x4;
304 typedef detail::tmat4x4<mediump_float> mediump_mat4x4;
311 typedef detail::tmat4x4<highp_float> highp_mat4x4;
316 #ifndef GLM_EXTERNAL_TEMPLATE
317 #include "type_mat4x4.inl"
318 #endif//GLM_EXTERNAL_TEMPLATE
320 #endif//glm_core_type_mat4x4