- Main Page
- Related Pages
- Modules
- Files

- File List

type_mat3x4.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_mat3x4
30 #define glm_core_type_mat3x4
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 tmat3x4
53 {
54 enum ctor{null};
55 typedef T value_type;
56 typedef std::size_t size_type;
57 typedef tvec4<T> col_type;
58 typedef tvec3<T> row_type;
59 typedef tmat3x4<T> type;
60 typedef tmat4x3<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 tmat3x4();
74 GLM_FUNC_DECL tmat3x4(tmat3x4 const & m);
75
76 GLM_FUNC_DECL explicit tmat3x4(
77 ctor Null);
78 GLM_FUNC_DECL explicit tmat3x4(
79 value_type const & s);
80 GLM_FUNC_DECL explicit tmat3x4(
81 value_type const & x0, value_type const & y0, value_type const & z0, value_type const & w0,
82 value_type const & x1, value_type const & y1, value_type const & z1, value_type const & w1,
83 value_type const & x2, value_type const & y2, value_type const & z2, value_type const & w2);
84 GLM_FUNC_DECL explicit tmat3x4(
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 tmat3x4(
93 U const & x);
94
95 template
96 <
97 typename X1, typename Y1, typename Z1, typename W1,
98 typename X2, typename Y2, typename Z2, typename W2,
99 typename X3, typename Y3, typename Z3, typename W3
100 >
101 GLM_FUNC_DECL explicit tmat3x4(
102 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
103 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
104 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
105
106 template <typename V1, typename V2, typename V3>
107 GLM_FUNC_DECL explicit tmat3x4(
108 tvec4<V1> const & v1,
109 tvec4<V2> const & v2,
110 tvec4<V3> const & v3);
111
112 // Matrix conversion
113 template <typename U>
114 GLM_FUNC_DECL explicit tmat3x4(tmat3x4<U> const & m);
115
116 GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T> const & x);
117 GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T> const & x);
118 GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T> const & x);
119 GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T> const & x);
120 GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T> const & x);
121 GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T> const & x);
122 GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T> const & x);
123 GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T> const & x);
124
125 // Accesses
126 col_type & operator[](size_type i);
127 col_type const & operator[](size_type i) const;
128
129 // Unary updatable operators
130 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<T> const & m);
131 template <typename U>
132 GLM_FUNC_DECL tmat3x4<T> & operator= (tmat3x4<U> const & m);
133 template <typename U>
134 GLM_FUNC_DECL tmat3x4<T> & operator+= (U const & s);
135 template <typename U>
136 GLM_FUNC_DECL tmat3x4<T> & operator+= (tmat3x4<U> const & m);
137 template <typename U>
138 GLM_FUNC_DECL tmat3x4<T> & operator-= (U const & s);
139 template <typename U>
140 GLM_FUNC_DECL tmat3x4<T> & operator-= (tmat3x4<U> const & m);
141 template <typename U>
142 GLM_FUNC_DECL tmat3x4<T> & operator*= (U const & s);
143 template <typename U>
144 GLM_FUNC_DECL tmat3x4<T> & operator*= (tmat3x4<U> const & m);
145 template <typename U>
146 GLM_FUNC_DECL tmat3x4<T> & operator/= (U const & s);
147
148 GLM_FUNC_DECL tmat3x4<T> & operator++ ();
149 GLM_FUNC_DECL tmat3x4<T> & operator-- ();
150 };
151
152 // Binary operators
153 template <typename T>
154 tmat3x4<T> operator+ (
155 tmat3x4<T> const & m,
156 typename tmat3x4<T>::value_type const & s);
157
158 template <typename T>
159 tmat3x4<T> operator+ (
160 tmat3x4<T> const & m1,
161 tmat3x4<T> const & m2);
162
163 template <typename T>
164 tmat3x4<T> operator- (
165 tmat3x4<T> const & m,
166 typename tmat3x4<T>::value_type const & s);
167
168 template <typename T>
169 tmat3x4<T> operator- (
170 tmat3x4<T> const & m1,
171 tmat3x4<T> const & m2);
172
173 template <typename T>
174 tmat3x4<T> operator* (
175 tmat3x4<T> const & m,
176 typename tmat3x4<T>::value_type const & s);
177
178 template <typename T>
179 tmat3x4<T> operator* (
180 typename tmat3x4<T>::value_type const & s,
181 tmat3x4<T> const & m);
182
183 template <typename T>
184 typename tmat3x4<T>::col_type operator* (
185 tmat3x4<T> const & m,
186 typename tmat3x4<T>::row_type const & v);
187
188 template <typename T>
189 typename tmat3x4<T>::row_type operator* (
190 typename tmat3x4<T>::col_type const & v,
191 tmat3x4<T> const & m);
192
193 template <typename T>
194 tmat4x4<T> operator* (
195 tmat3x4<T> const & m1,
196 tmat4x3<T> const & m2);
197
198 template <typename T>
199 tmat2x4<T> operator* (
200 tmat3x4<T> const & m1,
201 tmat2x3<T> const & m2);
202
203 template <typename T>
204 tmat3x4<T> operator* (
205 tmat3x4<T> const & m1,
206 tmat3x3<T> const & m2);
207
208 template <typename T>
209 tmat3x4<T> operator/ (
210 tmat3x4<T> const & m,
211 typename tmat3x4<T>::value_type const & s);
212
213 template <typename T>
214 tmat3x4<T> operator/ (
215 typename tmat3x4<T>::value_type const & s,
216 tmat3x4<T> const & m);
217
218 // Unary constant operators
219 template <typename T>
220 tmat3x4<T> const operator- (
221 tmat3x4<T> const & m);
222
223 template <typename T>
224 tmat3x4<T> const operator-- (
225 tmat3x4<T> const & m,
226 int);
227
228 template <typename T>
229 tmat3x4<T> const operator++ (
230 tmat3x4<T> const & m,
231 int);
232
233 }//namespace detail
234
237
243 typedef detail::tmat3x4<lowp_float> lowp_mat3x4;
244
250 typedef detail::tmat3x4<mediump_float> mediump_mat3x4;
251
257 typedef detail::tmat3x4<highp_float> highp_mat3x4;
258
260 }//namespace glm
261
262 #ifndef GLM_EXTERNAL_TEMPLATE
263 #include "type_mat3x4.inl"
264 #endif
265
266 #endif //glm_core_type_mat3x4