14 template<
typename T, qualifier P>
15 struct mat<4, 4, T, P>
17 typedef vec<4, T, P> col_type;
18 typedef vec<4, T, P> row_type;
19 typedef mat<4, 4, T, P> type;
20 typedef mat<4, 4, T, P> transpose_type;
29 typedef length_t length_type;
30 GLM_FUNC_DECL
static GLM_CONSTEXPR length_type
length(){
return 4;}
32 GLM_FUNC_DECL col_type & operator[](length_type i);
33 GLM_FUNC_DECL col_type
const & operator[](length_type i)
const;
37 GLM_FUNC_DECL mat() GLM_DEFAULT;
38 GLM_FUNC_DECL mat(mat<4, 4, T, P> const& m) GLM_DEFAULT;
40 GLM_FUNC_DECL mat(mat<4, 4, T, Q> const& m);
42 GLM_FUNC_DECL explicit mat(T const & x);
44 T const & x0, T const & y0, T const & z0, T const & w0,
45 T const & x1, T const & y1, T const & z1, T const & w1,
46 T const & x2, T const & y2, T const & z2, T const & w2,
47 T const & x3, T const & y3, T const & z3, T const & w3);
57 typename X1, typename Y1, typename Z1, typename W1,
58 typename X2, typename Y2, typename Z2, typename W2,
59 typename X3, typename Y3, typename Z3, typename W3,
60 typename X4, typename Y4, typename Z4, typename W4>
62 X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
63 X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
64 X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3,
65 X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4);
67 template<typename V1, typename V2, typename V3, typename V4>
69 vec<4, V1, P> const & v1,
70 vec<4, V2, P> const & v2,
71 vec<4, V3, P> const & v3,
72 vec<4, V4, P> const & v4);
76 template<typename U, qualifier Q>
77 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 4, U, Q> const & m);
79 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 2, T, P> const & x);
80 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 3, T, P> const & x);
81 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 3, T, P> const & x);
82 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 2, T, P> const & x);
83 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 4, T, P> const & x);
84 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 2, T, P> const & x);
85 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 4, T, P> const & x);
86 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 3, T, P> const & x);
90 GLM_FUNC_DECL mat<4, 4, T, P> & operator=(mat<4, 4, T, P> const & m) GLM_DEFAULT;
93 GLM_FUNC_DECL mat<4, 4, T, P> & operator=(mat<4, 4, U, P> const & m);
95 GLM_FUNC_DECL mat<4, 4, T, P> & operator+=(U s);
97 GLM_FUNC_DECL mat<4, 4, T, P> & operator+=(mat<4, 4, U, P> const & m);
99 GLM_FUNC_DECL mat<4, 4, T, P> & operator-=(U s);
101 GLM_FUNC_DECL mat<4, 4, T, P> & operator-=(mat<4, 4, U, P> const & m);
103 GLM_FUNC_DECL mat<4, 4, T, P> & operator*=(U s);
105 GLM_FUNC_DECL mat<4, 4, T, P> & operator*=(mat<4, 4, U, P> const & m);
107 GLM_FUNC_DECL mat<4, 4, T, P> & operator/=(U s);
109 GLM_FUNC_DECL mat<4, 4, T, P> & operator/=(mat<4, 4, U, P> const & m);
113 GLM_FUNC_DECL mat<4, 4, T, P> & operator++();
114 GLM_FUNC_DECL mat<4, 4, T, P> & operator--();
115 GLM_FUNC_DECL mat<4, 4, T, P> operator++(
int);
116 GLM_FUNC_DECL mat<4, 4, T, P> operator--(
int);
121 template<typename T, qualifier P>
122 GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m);
124 template<typename T, qualifier P>
125 GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m);
129 template<typename T, qualifier P>
130 GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m, T const & s);
132 template<typename T, qualifier P>
133 GLM_FUNC_DECL mat<4, 4, T, P> operator+(T const & s, mat<4, 4, T, P> const & m);
135 template<typename T, qualifier P>
136 GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
138 template<typename T, qualifier P>
139 GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m, T const & s);
141 template<typename T, qualifier P>
142 GLM_FUNC_DECL mat<4, 4, T, P> operator-(T const & s, mat<4, 4, T, P> const & m);
144 template<typename T, qualifier P>
145 GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const& m2);
147 template<typename T, qualifier P>
148 GLM_FUNC_DECL mat<4, 4, T, P> operator*(mat<4, 4, T, P> const & m, T const & s);
150 template<typename T, qualifier P>
151 GLM_FUNC_DECL mat<4, 4, T, P> operator*(T const & s, mat<4, 4, T, P> const & m);
153 template<typename T, qualifier P>
154 GLM_FUNC_DECL typename mat<4, 4, T, P>::col_type operator*(mat<4, 4, T, P> const & m, typename mat<4, 4, T, P>::row_type const & v);
156 template<typename T, qualifier P>
157 GLM_FUNC_DECL typename mat<4, 4, T, P>::row_type operator*(typename mat<4, 4, T, P>::col_type const & v, mat<4, 4, T, P> const & m);
159 template<typename T, qualifier P>
160 GLM_FUNC_DECL mat<2, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<2, 4, T, P> const & m2);
162 template<typename T, qualifier P>
163 GLM_FUNC_DECL mat<3, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<3, 4, T, P> const & m2);
165 template<typename T, qualifier P>
166 GLM_FUNC_DECL mat<4, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
168 template<typename T, qualifier P>
169 GLM_FUNC_DECL mat<4, 4, T, P> operator/(mat<4, 4, T, P> const & m, T const & s);
171 template<typename T, qualifier P>
172 GLM_FUNC_DECL mat<4, 4, T, P> operator/(T const & s, mat<4, 4, T, P> const & m);
174 template<typename T, qualifier P>
175 GLM_FUNC_DECL typename mat<4, 4, T, P>::col_type operator/(mat<4, 4, T, P> const & m, typename mat<4, 4, T, P>::row_type const & v);
177 template<typename T, qualifier P>
178 GLM_FUNC_DECL typename mat<4, 4, T, P>::row_type operator/(typename mat<4, 4, T, P>::col_type const & v, mat<4, 4, T, P> const & m);
180 template<typename T, qualifier P>
181 GLM_FUNC_DECL mat<4, 4, T, P> operator/(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const& m2);
185 template<typename T, qualifier P>
186 GLM_FUNC_DECL
bool operator==(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
188 template<typename T, qualifier P>
189 GLM_FUNC_DECL
bool operator!=(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
192 #ifndef GLM_EXTERNAL_TEMPLATE
193 #include "type_mat4x4.inl"
194 #endif//GLM_EXTERNAL_TEMPLATE
GLM_FUNC_DECL T length(vec< L, T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).