- Main Page
- Related Pages
- Modules
- Files

- File List

type_mat3x2.hpp
Go to the documentation of this file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef glm_core_type_mat3x2
30 #define glm_core_type_mat3x2
31
32 #include "type_mat.hpp"
33
34 namespace glm{
35 namespace detail
36 {
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;
50
51 template <typename T>
52 struct tmat3x2
53 {
54 enum ctor{null};
55 typedef T value_type;
56 typedef std::size_t size_type;
57 typedef tvec2<T> col_type;
58 typedef tvec3<T> row_type;
59 typedef tmat3x2<T> type;
60 typedef tmat2x3<T> transpose_type;
61
62 static GLM_FUNC_DECL size_type col_size();
63 static GLM_FUNC_DECL size_type row_size();
64
65 GLM_FUNC_DECL GLM_CONSTEXPR size_type length() const;
66
67 private:
68 // Data
69 col_type value[3];
70
71 public:
72 // Constructors
73 GLM_FUNC_DECL tmat3x2();
74 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m);
75
76 GLM_FUNC_DECL explicit tmat3x2(
77 ctor);
78 GLM_FUNC_DECL explicit tmat3x2(
79 value_type const & s);
80 GLM_FUNC_DECL explicit tmat3x2(
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 GLM_FUNC_DECL explicit tmat3x2(
85 col_type const & v0,
86 col_type const & v1,
87 col_type const & v2);
88
90 // Conversions
91 template <typename U>
92 GLM_FUNC_DECL explicit tmat3x2(
93 U const & x);
94
95 template
96 <
97 typename X1, typename Y1,
98 typename X2, typename Y2,
99 typename X3, typename Y3
100 >
101 GLM_FUNC_DECL explicit tmat3x2(
102 X1 const & x1, Y1 const & y1,
103 X2 const & x2, Y2 const & y2,
104 X3 const & x3, Y3 const & y3);
105
106 template <typename V1, typename V2, typename V3>
107 GLM_FUNC_DECL explicit tmat3x2(
108 tvec2<V1> const & v1,
109 tvec2<V2> const & v2,
110 tvec2<V3> const & v3);
111
112 // Matrix conversions
113 template <typename U>
114 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m);
115
116 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x);
117 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x);
118 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x);
119 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x);
120 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x);
121 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x);
122 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x);
123 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x);
124
125 // Accesses
126 GLM_FUNC_DECL col_type & operator[](size_type i);
127 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
128
129 // Unary updatable operators
130 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<T> const & m);
131 template <typename U>
132 GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<U> const & m);
133 template <typename U>
134 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s);
135 template <typename U>
136 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m);
137 template <typename U>
138 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s);
139 template <typename U>
140 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m);
141 template <typename U>
142 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s);
143 template <typename U>
144 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m);
145 template <typename U>
146 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s);
147
148 GLM_FUNC_DECL tmat3x2<T> & operator++ ();
149 GLM_FUNC_DECL tmat3x2<T> & operator-- ();
150 };
151
152 // Binary operators
153 template <typename T>
154 tmat3x2<T> operator+ (
155 tmat3x2<T> const & m,
156 typename tmat3x2<T>::value_type const & s);
157
158 template <typename T>
159 tmat3x2<T> operator+ (
160 tmat3x2<T> const & m1,
161 tmat3x2<T> const & m2);
162
163 template <typename T>
164 tmat3x2<T> operator- (
165 tmat3x2<T> const & m,
166 typename tmat3x2<T>::value_type const & s);
167
168 template <typename T>
169 tmat3x2<T> operator- (
170 tmat3x2<T> const & m1,
171 tmat3x2<T> const & m2);
172
173 template <typename T>
174 tmat3x2<T> operator* (
175 tmat3x2<T> const & m,
176 typename tmat3x2<T>::value_type const & s);
177
178 template <typename T>
179 tmat3x2<T> operator* (
180 typename tmat3x2<T>::value_type const & s,
181 tmat3x2<T> const & m);
182
183 template <typename T>
184 typename tmat3x2<T>::col_type operator* (
185 tmat3x2<T> const & m,
186 typename tmat3x2<T>::row_type const & v);
187
188 template <typename T>
189 typename tmat3x2<T>::row_type operator* (
190 typename tmat3x2<T>::col_type const & v,
191 tmat3x2<T> const & m);
192
193 template <typename T>
194 tmat2x2<T> operator* (
195 tmat3x2<T> const & m1,
196 tmat2x3<T> const & m2);
197
198 template <typename T>
199 tmat3x2<T> operator* (
200 tmat3x2<T> const & m1,
201 tmat3x3<T> const & m2);
202
203 template <typename T>
204 tmat4x2<T> operator* (
205 tmat3x2<T> const & m1,
206 tmat4x3<T> const & m2);
207
208 template <typename T>
209 tmat3x2<T> operator/ (
210 tmat3x2<T> const & m,
211 typename tmat3x2<T>::value_type const & s);
212
213 template <typename T>
214 tmat3x2<T> operator/ (
215 typename tmat3x2<T>::value_type const & s,
216 tmat3x2<T> const & m);
217
218 // Unary constant operators
219 template <typename T>
220 tmat3x2<T> const operator- (
221 tmat3x2<T> const & m);
222
223 template <typename T>
224 tmat3x2<T> const operator-- (
225 tmat3x2<T> const & m,
226 int);
227
228 template <typename T>
229 tmat3x2<T> const operator++ (
230 tmat3x2<T> const & m,
231 int);
232 } //namespace detail
233
236
242 typedef detail::tmat3x2<lowp_float> lowp_mat3x2;
243
249 typedef detail::tmat3x2<mediump_float> mediump_mat3x2;
250
256 typedef detail::tmat3x2<highp_float> highp_mat3x2;
257
259 }//namespace glm
260
261 #ifndef GLM_EXTERNAL_TEMPLATE
262 #include "type_mat3x2.inl"
263 #endif
264
265 #endif //glm_core_type_mat3x2