29 #ifndef glm_core_type_mat4x3
30 #define glm_core_type_mat4x3
33 #include "type_vec3.hpp"
34 #include "type_vec4.hpp"
35 #include "type_mat.hpp"
41 template <
typename T, precision P>
46 typedef std::size_t size_type;
47 typedef tvec3<T, P> col_type;
48 typedef tvec4<T, P> row_type;
49 typedef tmat4x3<T, P> type;
50 typedef tmat3x4<T, P> transpose_type;
52 GLM_FUNC_DECL GLM_CONSTEXPR length_t
length()
const;
60 GLM_FUNC_DECL tmat4x3();
61 GLM_FUNC_DECL tmat4x3(tmat4x3<T, P>
const & m);
62 template <precision Q>
63 GLM_FUNC_DECL tmat4x3(tmat4x3<T, Q>
const & m);
65 GLM_FUNC_DECL
explicit tmat4x3(
67 GLM_FUNC_DECL
explicit tmat4x3(
69 GLM_FUNC_DECL
explicit tmat4x3(
70 T
const & x0, T
const & y0, T
const & z0,
71 T
const & x1, T
const & y1, T
const & z1,
72 T
const & x2, T
const & y2, T
const & z2,
73 T
const & x3, T
const & y3, T
const & z3);
74 GLM_FUNC_DECL
explicit tmat4x3(
80 #if(GLM_HAS_INITIALIZER_LISTS)
82 GLM_FUNC_DECL tmat4x3(std::initializer_list<U> m);
84 GLM_FUNC_DECL tmat4x3(std::initializer_list<tvec3<T, P> > m);
85 #endif//GLM_HAS_INITIALIZER_LISTS
90 GLM_FUNC_DECL
explicit tmat4x3(
94 typename X1,
typename Y1,
typename Z1,
95 typename X2,
typename Y2,
typename Z2,
96 typename X3,
typename Y3,
typename Z3,
97 typename X4,
typename Y4,
typename Z4>
98 GLM_FUNC_DECL
explicit tmat4x3(
99 X1
const & x1, Y1
const & y1, Z1
const & z1,
100 X2
const & x2, Y2
const & y2, Z2
const & z2,
101 X3
const & x3, Y3
const & y3, Z3
const & z3,
102 X4
const & x4, Y4
const & y4, Z4
const & z4);
104 template <
typename V1,
typename V2,
typename V3,
typename V4>
105 GLM_FUNC_DECL
explicit tmat4x3(
106 tvec3<V1, P>
const & v1,
107 tvec3<V2, P>
const & v2,
108 tvec3<V3, P>
const & v3,
109 tvec3<V4, P>
const & v4);
112 template <
typename U, precision Q>
113 GLM_FUNC_DECL
explicit tmat4x3(tmat4x3<U, Q>
const & m);
115 GLM_FUNC_DECL
explicit tmat4x3(tmat2x2<T, P>
const & x);
116 GLM_FUNC_DECL
explicit tmat4x3(tmat3x3<T, P>
const & x);
117 GLM_FUNC_DECL
explicit tmat4x3(tmat4x4<T, P>
const & x);
118 GLM_FUNC_DECL
explicit tmat4x3(tmat2x3<T, P>
const & x);
119 GLM_FUNC_DECL
explicit tmat4x3(tmat3x2<T, P>
const & x);
120 GLM_FUNC_DECL
explicit tmat4x3(tmat2x4<T, P>
const & x);
121 GLM_FUNC_DECL
explicit tmat4x3(tmat4x2<T, P>
const & x);
122 GLM_FUNC_DECL
explicit tmat4x3(tmat3x4<T, P>
const & x);
125 GLM_FUNC_DECL col_type & operator[](size_type i);
126 GLM_FUNC_DECL col_type
const & operator[](size_type i)
const;
129 GLM_FUNC_DECL tmat4x3<T, P> & operator= (tmat4x3<T, P>
const & m);
130 template <
typename U>
131 GLM_FUNC_DECL tmat4x3<T, P> & operator= (tmat4x3<U, P>
const & m);
132 template <
typename U>
133 GLM_FUNC_DECL tmat4x3<T, P> & operator+= (U s);
134 template <
typename U>
135 GLM_FUNC_DECL tmat4x3<T, P> & operator+= (tmat4x3<U, P>
const & m);
136 template <
typename U>
137 GLM_FUNC_DECL tmat4x3<T, P> & operator-= (U s);
138 template <
typename U>
139 GLM_FUNC_DECL tmat4x3<T, P> & operator-= (tmat4x3<U, P>
const & m);
140 template <
typename U>
141 GLM_FUNC_DECL tmat4x3<T, P> & operator*= (U s);
142 template <
typename U>
143 GLM_FUNC_DECL tmat4x3<T, P> & operator/= (U s);
148 GLM_FUNC_DECL tmat4x3<T, P> & operator++ ();
149 GLM_FUNC_DECL tmat4x3<T, P> & operator-- ();
150 GLM_FUNC_DECL tmat4x3<T, P> operator++(
int);
151 GLM_FUNC_DECL tmat4x3<T, P> operator--(
int);
155 template <
typename T, precision P>
156 GLM_FUNC_DECL tmat4x3<T, P> operator+ (
157 tmat4x3<T, P>
const & m,
160 template <
typename T, precision P>
161 GLM_FUNC_DECL tmat4x3<T, P> operator+ (
162 tmat4x3<T, P>
const & m1,
163 tmat4x3<T, P>
const & m2);
165 template <
typename T, precision P>
166 GLM_FUNC_DECL tmat4x3<T, P> operator- (
167 tmat4x3<T, P>
const & m,
170 template <
typename T, precision P>
171 GLM_FUNC_DECL tmat4x3<T, P> operator- (
172 tmat4x3<T, P>
const & m1,
173 tmat4x3<T, P>
const & m2);
175 template <
typename T, precision P>
176 GLM_FUNC_DECL tmat4x3<T, P> operator* (
177 tmat4x3<T, P>
const & m,
180 template <
typename T, precision P>
181 GLM_FUNC_DECL tmat4x3<T, P> operator* (
183 tmat4x3<T, P>
const & m);
185 template <
typename T, precision P>
186 GLM_FUNC_DECL
typename tmat4x3<T, P>::col_type operator* (
187 tmat4x3<T, P>
const & m,
188 typename tmat4x3<T, P>::row_type
const & v);
190 template <
typename T, precision P>
191 GLM_FUNC_DECL
typename tmat4x3<T, P>::row_type operator* (
192 typename tmat4x3<T, P>::col_type
const & v,
193 tmat4x3<T, P>
const & m);
195 template <
typename T, precision P>
196 GLM_FUNC_DECL tmat2x3<T, P> operator* (
197 tmat4x3<T, P>
const & m1,
198 tmat2x4<T, P>
const & m2);
200 template <
typename T, precision P>
201 GLM_FUNC_DECL tmat3x3<T, P> operator* (
202 tmat4x3<T, P>
const & m1,
203 tmat3x4<T, P>
const & m2);
205 template <
typename T, precision P>
206 GLM_FUNC_DECL tmat4x3<T, P> operator* (
207 tmat4x3<T, P>
const & m1,
208 tmat4x4<T, P>
const & m2);
210 template <
typename T, precision P>
211 GLM_FUNC_DECL tmat4x3<T, P> operator/ (
212 tmat4x3<T, P>
const & m,
215 template <
typename T, precision P>
216 GLM_FUNC_DECL tmat4x3<T, P> operator/ (
218 tmat4x3<T, P>
const & m);
221 template <
typename T, precision P>
222 GLM_FUNC_DECL tmat4x3<T, P>
const operator- (
223 tmat4x3<T, P>
const & m);
228 #ifndef GLM_EXTERNAL_TEMPLATE
229 #include "type_mat4x3.inl"
230 #endif //GLM_EXTERNAL_TEMPLATE
232 #endif//glm_core_type_mat4x3
GLM_FUNC_DECL genType::value_type length(genType const &x)
Returns the length of x, i.e., sqrt(x * x).