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 tvec4<U, Q> operator/(tmat4x4<U, Q> 
const & m, tvec4<U, Q> 
const & v);
 
   59                 template <
typename U, precision Q>
 
   60                 friend tvec4<U, Q> operator/(tvec4<U, Q> 
const & v, tmat4x4<U, Q> 
const & m);
 
   68                 GLM_FUNC_DECL tmat4x4();
 
   69                 GLM_FUNC_DECL tmat4x4(tmat4x4<T, P> 
const & m);
 
   70                 template <precision Q>
 
   71                 GLM_FUNC_DECL tmat4x4(tmat4x4<T, Q> 
const & m);
 
   73                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   75                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   77                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   78                         T 
const & x0, T 
const & y0, T 
const & z0, T 
const & w0,
 
   79                         T 
const & x1, T 
const & y1, T 
const & z1, T 
const & w1,
 
   80                         T 
const & x2, T 
const & y2, T 
const & z2, T 
const & w2,
 
   81                         T 
const & x3, T 
const & y3, T 
const & z3, T 
const & w3);
 
   82                 GLM_FUNC_DECL 
explicit tmat4x4(
 
   88 #if(GLM_HAS_INITIALIZER_LISTS) 
   90                 GLM_FUNC_DECL tmat4x4(std::initializer_list<U> m);
 
   92                 GLM_FUNC_DECL tmat4x4(std::initializer_list<tvec4<T, P> > m);
 
   93 #endif//GLM_HAS_INITIALIZER_LISTS 
   99                         typename X1, 
typename Y1, 
typename Z1, 
typename W1,
 
  100                         typename X2, 
typename Y2, 
typename Z2, 
typename W2,
 
  101                         typename X3, 
typename Y3, 
typename Z3, 
typename W3,
 
  102                         typename X4, 
typename Y4, 
typename Z4, 
typename W4>
 
  103                 GLM_FUNC_DECL 
explicit tmat4x4(
 
  104                         X1 
const & x1, Y1 
const & y1, Z1 
const & z1, W1 
const & w1,
 
  105                         X2 
const & x2, Y2 
const & y2, Z2 
const & z2, W2 
const & w2,
 
  106                         X3 
const & x3, Y3 
const & y3, Z3 
const & z3, W3 
const & w3,
 
  107                         X4 
const & x4, Y4 
const & y4, Z4 
const & z4, W4 
const & w4);
 
  109                 template <
typename V1, 
typename V2, 
typename V3, 
typename V4>
 
  110                 GLM_FUNC_DECL 
explicit tmat4x4(
 
  111                         tvec4<V1, P> 
const & v1,
 
  112                         tvec4<V2, P> 
const & v2,
 
  113                         tvec4<V3, P> 
const & v3,
 
  114                         tvec4<V4, P> 
const & v4);
 
  117                 template <
typename U, precision Q>
 
  118                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x4<U, Q> 
const & m);
 
  120                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x2<T, P> 
const & x);
 
  121                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x3<T, P> 
const & x);
 
  122                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x3<T, P> 
const & x);
 
  123                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x2<T, P> 
const & x);
 
  124                 GLM_FUNC_DECL 
explicit tmat4x4(tmat2x4<T, P> 
const & x);
 
  125                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x2<T, P> 
const & x);
 
  126                 GLM_FUNC_DECL 
explicit tmat4x4(tmat3x4<T, P> 
const & x);
 
  127                 GLM_FUNC_DECL 
explicit tmat4x4(tmat4x3<T, P> 
const & x);
 
  130                 GLM_FUNC_DECL col_type & operator[](length_t i);
 
  131                 GLM_FUNC_DECL col_type 
const & operator[](length_t i) 
const;
 
  134                 GLM_FUNC_DECL tmat4x4<T, P> & operator=  (tmat4x4<T, P> 
const & m);
 
  135                 template <
typename U>
 
  136                 GLM_FUNC_DECL tmat4x4<T, P> & operator=  (tmat4x4<U, P> 
const & m);
 
  137                 template <
typename U>
 
  138                 GLM_FUNC_DECL tmat4x4<T, P> & operator+= (U s);
 
  139                 template <
typename U>
 
  140                 GLM_FUNC_DECL tmat4x4<T, P> & operator+= (tmat4x4<U, P> 
const & m);
 
  141                 template <
typename U>
 
  142                 GLM_FUNC_DECL tmat4x4<T, P> & operator-= (U s);
 
  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);
 
  157                 GLM_FUNC_DECL tmat4x4<T, P> & operator++ ();
 
  158                 GLM_FUNC_DECL tmat4x4<T, P> & operator-- ();
 
  159                 GLM_FUNC_DECL tmat4x4<T, P> operator++(
int);
 
  160                 GLM_FUNC_DECL tmat4x4<T, P> operator--(
int);
 
  163         template <
typename T, precision P>
 
  164         GLM_FUNC_DECL tmat4x4<T, P> compute_inverse_mat4(tmat4x4<T, P> 
const & m);
 
  167         template <
typename T, precision P>
 
  168         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  169                 tmat4x4<T, P> 
const & m,
 
  172         template <
typename T, precision P>
 
  173         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  175                 tmat4x4<T, P> 
const & m);
 
  177         template <
typename T, precision P> 
 
  178         GLM_FUNC_DECL tmat4x4<T, P> operator+ (
 
  179                 tmat4x4<T, P> 
const & m1, 
 
  180                 tmat4x4<T, P> 
const & m2);
 
  182         template <
typename T, precision P> 
 
  183         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  184                 tmat4x4<T, P> 
const & m, 
 
  187         template <
typename T, precision P> 
 
  188         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  190                 tmat4x4<T, P> 
const & m);
 
  192         template <
typename T, precision P>
 
  193         GLM_FUNC_DECL tmat4x4<T, P> operator- (
 
  194                 tmat4x4<T, P> 
const & m1,
 
  195                 tmat4x4<T, P> 
const & m2);
 
  197         template <
typename T, precision P>
 
  198         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  199                 tmat4x4<T, P> 
const & m,
 
  202         template <
typename T, precision P>
 
  203         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  205                 tmat4x4<T, P> 
const & m);
 
  207         template <
typename T, precision P>
 
  208         GLM_FUNC_DECL 
typename tmat4x4<T, P>::col_type operator* (
 
  209                 tmat4x4<T, P> 
const & m,
 
  210                 typename tmat4x4<T, P>::row_type 
const & v);
 
  212         template <
typename T, precision P>
 
  213         GLM_FUNC_DECL 
typename tmat4x4<T, P>::row_type operator* (
 
  214                 typename tmat4x4<T, P>::col_type 
const & v,
 
  215                 tmat4x4<T, P> 
const & m);
 
  217         template <
typename T, precision P>
 
  218         GLM_FUNC_DECL tmat2x4<T, P> operator* (
 
  219                 tmat4x4<T, P> 
const & m1,
 
  220                 tmat2x4<T, P> 
const & m2);
 
  222         template <
typename T, precision P>
 
  223         GLM_FUNC_DECL tmat3x4<T, P> operator* (
 
  224                 tmat4x4<T, P> 
const & m1,
 
  225                 tmat3x4<T, P> 
const & m2);
 
  227         template <
typename T, precision P>
 
  228         GLM_FUNC_DECL tmat4x4<T, P> operator* (
 
  229                 tmat4x4<T, P> 
const & m1,
 
  230                 tmat4x4<T, P> 
const & m2);
 
  232         template <
typename T, precision P>
 
  233         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  234                 tmat4x4<T, P> 
const & m,
 
  237         template <
typename T, precision P>
 
  238         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  240                 tmat4x4<T, P> 
const & m);
 
  242         template <
typename T, precision P>
 
  243         GLM_FUNC_DECL 
typename tmat4x4<T, P>::col_type operator/ (
 
  244                 tmat4x4<T, P> 
const & m,
 
  245                 typename tmat4x4<T, P>::row_type 
const & v);
 
  247         template <
typename T, precision P>
 
  248         GLM_FUNC_DECL 
typename tmat4x4<T, P>::row_type operator/ (
 
  249                 typename tmat4x4<T, P>::col_type & v,
 
  250                 tmat4x4<T, P> 
const & m);
 
  252         template <
typename T, precision P>
 
  253         GLM_FUNC_DECL tmat4x4<T, P> operator/ (
 
  254                 tmat4x4<T, P> 
const & m1,
 
  255                 tmat4x4<T, P> 
const & m2);
 
  258         template <
typename T, precision P>
 
  259         GLM_FUNC_DECL tmat4x4<T, P> 
const operator-  (
 
  260                 tmat4x4<T, P> 
const & m);
 
  265 #ifndef GLM_EXTERNAL_TEMPLATE 
  266 #include "type_mat4x4.inl" 
  267 #endif//GLM_EXTERNAL_TEMPLATE 
  269 #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).