29 #ifndef glm_core_type_mat4x4 
   30 #define glm_core_type_mat4x4 
   33 #include "type_vec4.hpp" 
   34 #include "type_mat.hpp" 
   35 #if(GLM_HAS_INITIALIZER_LISTS) 
   36 #       include <initializer_list> 
   37 #endif //GLM_HAS_INITIALIZER_LISTS 
   44         template <
typename T, precision P>
 
   49                 typedef std::size_t size_type;
 
   50                 typedef tvec4<T, P> col_type;
 
   51                 typedef tvec4<T, P> row_type;
 
   52                 typedef tmat4x4<T, P> type;
 
   53                 typedef tmat4x4<T, P> transpose_type;
 
   55                 GLM_FUNC_DECL GLM_CONSTEXPR length_t 
length() 
const;
 
   57                 template <
typename U, precision Q>
 
   58                 friend tmat4x4<U, Q> 
inverse(tmat4x4<U, Q> 
const & m);
 
   59                 template <
typename U, precision Q>
 
   60                 friend tvec4<U, Q> operator/(tmat4x4<U, Q> 
const & m, tvec4<U, Q> 
const & v);
 
   61                 template <
typename U, precision Q>
 
   62                 friend tvec4<U, Q> operator/(tvec4<U, Q> 
const & v, tmat4x4<U, Q> 
const & m);
 
   68                 GLM_FUNC_DECL tmat4x4<T, P> _inverse() 
const;
 
   73                 GLM_FUNC_DECL tmat4x4();
 
   74                 GLM_FUNC_DECL tmat4x4(tmat4x4<T, P> 
const & m);
 
   75                 template <precision Q>
 
   76                 GLM_FUNC_DECL tmat4x4(tmat4x4<T, Q> 
const & m);
 
   78                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   80                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   82                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   83                         T 
const & x0, T 
const & y0, T 
const & z0, T 
const & w0,
 
   84                         T 
const & x1, T 
const & y1, T 
const & z1, T 
const & w1,
 
   85                         T 
const & x2, T 
const & y2, T 
const & z2, T 
const & w2,
 
   86                         T 
const & x3, T 
const & y3, T 
const & z3, T 
const & w3);
 
   87                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   93 #if(GLM_HAS_INITIALIZER_LISTS) 
   95                 GLM_FUNC_DECL tmat4x4(std::initializer_list<U> m);
 
   97                 GLM_FUNC_DECL tmat4x4(std::initializer_list<tvec4<T, P> > m);
 
   98 #endif//GLM_HAS_INITIALIZER_LISTS 
  102                 template <
typename U> 
 
  103                 GLM_FUNC_DECL 
explicit tmat4x4(
 
  107                         typename X1, 
typename Y1, 
typename Z1, 
typename W1,
 
  108                         typename X2, 
typename Y2, 
typename Z2, 
typename W2,
 
  109                         typename X3, 
typename Y3, 
typename Z3, 
typename W3,
 
  110                         typename X4, 
typename Y4, 
typename Z4, 
typename W4>
 
  111                 GLM_FUNC_DECL 
explicit tmat4x4(
 
  112                         X1 
const & x1, Y1 
const & y1, Z1 
const & z1, W1 
const & w1,
 
  113                         X2 
const & x2, Y2 
const & y2, Z2 
const & z2, W2 
const & w2,
 
  114                         X3 
const & x3, Y3 
const & y3, Z3 
const & z3, W3 
const & w3,
 
  115                         X4 
const & x4, Y4 
const & y4, Z4 
const & z4, W4 
const & w4);
 
  117                 template <
typename V1, 
typename V2, 
typename V3, 
typename V4>
 
  118                 GLM_FUNC_DECL 
explicit tmat4x4(
 
  119                         tvec4<V1, P> 
const & v1,
 
  120                         tvec4<V2, P> 
const & v2,
 
  121                         tvec4<V3, P> 
const & v3,
 
  122                         tvec4<V4, P> 
const & v4);
 
  125                 template <
typename U, precision Q>
 
  126                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x4<U, Q> 
const & m);
 
  128                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x2<T, P> 
const & x);
 
  129                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x3<T, P> 
const & x);
 
  130                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x3<T, P> 
const & x);
 
  131                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x2<T, P> 
const & x);
 
  132                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x4<T, P> 
const & x);
 
  133                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x2<T, P> 
const & x);
 
  134                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x4<T, P> 
const & x);
 
  135                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x3<T, P> 
const & x);
 
  138                 GLM_FUNC_DECL col_type & operator[](length_t i);
 
  139                 GLM_FUNC_DECL col_type 
const & operator[](length_t i) 
const;
 
  142                 GLM_FUNC_DECL tmat4x4<T, P> & operator=  (tmat4x4<T, P> 
const & m);
 
  143                 template <
typename U>
 
  144                 GLM_FUNC_DECL tmat4x4<T, P> & operator=  (tmat4x4<U, P> 
const & m);
 
  145                 template <
typename U>
 
  146                 GLM_FUNC_DECL tmat4x4<T, P> & operator+= (U s);
 
  147                 template <
typename U>
 
  148                 GLM_FUNC_DECL tmat4x4<T, P> & operator+= (tmat4x4<U, P> 
const & m);
 
  149                 template <
typename U>
 
  150                 GLM_FUNC_DECL tmat4x4<T, P> & operator-= (U s);
 
  151                 template <
typename U>
 
  152                 GLM_FUNC_DECL tmat4x4<T, P> & operator-= (tmat4x4<U, P> 
const & m);
 
  153                 template <
typename U>
 
  154                 GLM_FUNC_DECL tmat4x4<T, P> & operator*= (U s);
 
  155                 template <
typename U>
 
  156                 GLM_FUNC_DECL tmat4x4<T, P> & operator*= (tmat4x4<U, P> 
const & m);
 
  157                 template <
typename U>
 
  158                 GLM_FUNC_DECL tmat4x4<T, P> & operator/= (U s);
 
  159                 template <
typename U>
 
  160                 GLM_FUNC_DECL tmat4x4<T, P> & operator/= (tmat4x4<U, P> 
const & m);
 
  165                 GLM_FUNC_DECL tmat4x4<T, P> & operator++ ();
 
  166                 GLM_FUNC_DECL tmat4x4<T, P> & operator-- ();
 
  167                 GLM_FUNC_DECL tmat4x4<T, P> operator++(
int);
 
  168                 GLM_FUNC_DECL tmat4x4<T, P> operator--(
int);
 
  172         template <
typename T, precision P>
 
  173         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  174                 tmat4x4<T, P> 
const & m,
 
  177         template <
typename T, precision P>
 
  178         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  180                 tmat4x4<T, P> 
const & m);
 
  182         template <
typename T, precision P> 
 
  183         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  184                 tmat4x4<T, P> 
const & m1, 
 
  185                 tmat4x4<T, P> 
const & m2);
 
  187         template <
typename T, precision P> 
 
  188         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  189                 tmat4x4<T, P> 
const & m, 
 
  192         template <
typename T, precision P> 
 
  193         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  195                 tmat4x4<T, P> 
const & m);
 
  197         template <
typename T, precision P>
 
  198         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  199                 tmat4x4<T, P> 
const & m1,
 
  200                 tmat4x4<T, P> 
const & m2);
 
  202         template <
typename T, precision P>
 
  203         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  204                 tmat4x4<T, P> 
const & m,
 
  207         template <
typename T, precision P>
 
  208         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  210                 tmat4x4<T, P> 
const & m);
 
  212         template <
typename T, precision P>
 
  213         GLM_FUNC_DECL 
typename tmat4x4<T, P>::col_type operator* (
 
  214                 tmat4x4<T, P> 
const & m,
 
  215                 typename tmat4x4<T, P>::row_type 
const & v);
 
  217         template <
typename T, precision P>
 
  218         GLM_FUNC_DECL 
typename tmat4x4<T, P>::row_type operator* (
 
  219                 typename tmat4x4<T, P>::col_type 
const & v,
 
  220                 tmat4x4<T, P> 
const & m);
 
  222         template <
typename T, precision P>
 
  223         GLM_FUNC_DECL tmat2x4<T, P> operator* (
 
  224                 tmat4x4<T, P> 
const & m1,
 
  225                 tmat2x4<T, P> 
const & m2);
 
  227         template <
typename T, precision P>
 
  228         GLM_FUNC_DECL tmat3x4<T, P> operator* (
 
  229                 tmat4x4<T, P> 
const & m1,
 
  230                 tmat3x4<T, P> 
const & m2);
 
  232         template <
typename T, precision P>
 
  233         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  234                 tmat4x4<T, P> 
const & m1,
 
  235                 tmat4x4<T, P> 
const & m2);
 
  237         template <
typename T, precision P>
 
  238         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  239                 tmat4x4<T, P> 
const & m,
 
  242         template <
typename T, precision P>
 
  243         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  245                 tmat4x4<T, P> 
const & m);
 
  247         template <
typename T, precision P>
 
  248         GLM_FUNC_DECL 
typename tmat4x4<T, P>::col_type operator/ (
 
  249                 tmat4x4<T, P> 
const & m,
 
  250                 typename tmat4x4<T, P>::row_type 
const & v);
 
  252         template <
typename T, precision P>
 
  253         GLM_FUNC_DECL 
typename tmat4x4<T, P>::row_type operator/ (
 
  254                 typename tmat4x4<T, P>::col_type & v,
 
  255                 tmat4x4<T, P> 
const & m);
 
  257         template <
typename T, precision P>
 
  258         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  259                 tmat4x4<T, P> 
const & m1,
 
  260                 tmat4x4<T, P> 
const & m2);
 
  263         template <
typename T, precision P>
 
  264         GLM_FUNC_DECL tmat4x4<T, P> 
const operator-  (
 
  265                 tmat4x4<T, P> 
const & m);
 
  270 #ifndef GLM_EXTERNAL_TEMPLATE 
  271 #include "type_mat4x4.inl" 
  272 #endif//GLM_EXTERNAL_TEMPLATE 
  274 #endif//glm_core_type_mat4x4 
GLM_FUNC_DECL genType::value_type length(genType const &x)
Returns the length of x, i.e., sqrt(x * x). 
GLM_FUNC_DECL matType< T, P > inverse(matType< T, P > const &m)
Return the inverse of a squared matrix.