29 #ifndef glm_core_type_mat4x2
30 #define glm_core_type_mat4x2
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 tvec2<T> col_type;
58 typedef tvec4<T> row_type;
59 typedef tmat4x2<T> type;
60 typedef tmat2x4<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;
73 GLM_FUNC_DECL tmat4x2();
74 GLM_FUNC_DECL tmat4x2(tmat4x2
const & m);
76 GLM_FUNC_DECL
explicit tmat4x2(
78 GLM_FUNC_DECL
explicit tmat4x2(
79 value_type
const & x);
80 GLM_FUNC_DECL
explicit tmat4x2(
81 value_type
const & x0, value_type
const & y0,
82 value_type
const & x1, value_type
const & y1,
83 value_type
const & x2, value_type
const & y2,
84 value_type
const & x3, value_type
const & y3);
85 GLM_FUNC_DECL
explicit tmat4x2(
94 GLM_FUNC_DECL
explicit tmat4x2(
99 typename X1,
typename Y1,
100 typename X2,
typename Y2,
101 typename X3,
typename Y3,
102 typename X4,
typename Y4
104 GLM_FUNC_DECL
explicit tmat4x2(
105 X1
const & x1, Y1
const & y1,
106 X2
const & x2, Y2
const & y2,
107 X3
const & x3, Y3
const & y3,
108 X4
const & x4, Y4
const & y4);
110 template <
typename V1,
typename V2,
typename V3,
typename V4>
111 GLM_FUNC_DECL
explicit tmat4x2(
112 tvec2<V1>
const & v1,
113 tvec2<V2>
const & v2,
114 tvec2<V3>
const & v3,
115 tvec2<V4>
const & v4);
118 template <
typename U>
119 GLM_FUNC_DECL
explicit tmat4x2(tmat4x2<U>
const & m);
121 GLM_FUNC_DECL
explicit tmat4x2(tmat2x2<T>
const & x);
122 GLM_FUNC_DECL
explicit tmat4x2(tmat3x3<T>
const & x);
123 GLM_FUNC_DECL
explicit tmat4x2(tmat4x4<T>
const & x);
124 GLM_FUNC_DECL
explicit tmat4x2(tmat2x3<T>
const & x);
125 GLM_FUNC_DECL
explicit tmat4x2(tmat3x2<T>
const & x);
126 GLM_FUNC_DECL
explicit tmat4x2(tmat2x4<T>
const & x);
127 GLM_FUNC_DECL
explicit tmat4x2(tmat4x3<T>
const & x);
128 GLM_FUNC_DECL
explicit tmat4x2(tmat3x4<T>
const & x);
131 GLM_FUNC_DECL col_type & operator[](size_type i);
132 GLM_FUNC_DECL col_type
const & operator[](size_type i)
const;
135 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<T>
const & m);
136 template <
typename U>
137 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<U>
const & m);
138 template <
typename U>
139 GLM_FUNC_DECL tmat4x2<T>& operator+= (U
const & s);
140 template <
typename U>
141 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U>
const & m);
142 template <
typename U>
143 GLM_FUNC_DECL tmat4x2<T>& operator-= (U
const & s);
144 template <
typename U>
145 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U>
const & m);
146 template <
typename U>
147 GLM_FUNC_DECL tmat4x2<T>& operator*= (U
const & s);
148 template <
typename U>
149 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U>
const & m);
150 template <
typename U>
151 GLM_FUNC_DECL tmat4x2<T>& operator/= (U
const & s);
153 GLM_FUNC_DECL tmat4x2<T>& operator++ ();
154 GLM_FUNC_DECL tmat4x2<T>& operator-- ();
158 template <
typename T>
159 tmat4x2<T> operator+ (
160 tmat4x2<T>
const & m,
161 typename tmat4x2<T>::value_type
const & s);
163 template <
typename T>
164 tmat4x2<T> operator+ (
165 tmat4x2<T>
const & m1,
166 tmat4x2<T>
const & m2);
168 template <
typename T>
169 tmat4x2<T> operator- (
170 tmat4x2<T>
const & m,
171 typename tmat4x2<T>::value_type
const & s);
173 template <
typename T>
174 tmat4x2<T> operator- (
175 tmat4x2<T>
const & m1,
176 tmat4x2<T>
const & m2);
178 template <
typename T>
179 tmat4x2<T> operator* (
180 tmat4x2<T>
const & m,
181 typename tmat4x2<T>::value_type
const & s);
183 template <
typename T>
184 tmat4x2<T> operator* (
185 typename tmat4x2<T>::value_type
const & s,
186 tmat4x2<T>
const & m);
188 template <
typename T>
189 typename tmat4x2<T>::col_type operator* (
190 tmat4x2<T>
const & m,
191 typename tmat4x2<T>::row_type
const & v);
193 template <
typename T>
194 typename tmat4x2<T>::row_type operator* (
195 typename tmat4x2<T>::col_type
const & v,
196 tmat4x2<T>
const & m);
198 template <
typename T>
199 tmat3x2<T> operator* (
200 tmat4x2<T>
const & m1,
201 tmat3x4<T>
const & m2);
203 template <
typename T>
204 tmat4x2<T> operator* (
205 tmat4x2<T>
const & m1,
206 tmat4x4<T>
const & m2);
208 template <
typename T>
209 tmat2x3<T> operator* (
210 tmat4x3<T>
const & m1,
211 tmat2x4<T>
const & m2);
213 template <
typename T>
214 tmat4x2<T> operator/ (
215 tmat4x2<T>
const & m,
216 typename tmat4x2<T>::value_type
const & s);
218 template <
typename T>
219 tmat4x2<T> operator/ (
220 typename tmat4x2<T>::value_type
const & s,
221 tmat4x2<T>
const & m);
224 template <
typename T>
225 tmat4x2<T>
const operator- (
226 tmat4x2<T>
const & m);
228 template <
typename T>
229 tmat4x2<T>
const operator-- (
230 tmat4x2<T>
const & m,
233 template <
typename T>
234 tmat4x2<T>
const operator++ (
235 tmat4x2<T>
const & m,
266 #ifndef GLM_EXTERNAL_TEMPLATE
267 #include "type_mat4x2.inl"
270 #endif //glm_core_type_mat4x2