- Main Page
- Related Pages
- Modules
- Files

- File List

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