From e62817b8252974b8a98393275874ee303840bf13 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 12 May 2017 18:49:50 +0500 Subject: 2017-05-12 --- depedencies/include/glm/detail/func_matrix.hpp | 149 +++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 depedencies/include/glm/detail/func_matrix.hpp (limited to 'depedencies/include/glm/detail/func_matrix.hpp') diff --git a/depedencies/include/glm/detail/func_matrix.hpp b/depedencies/include/glm/detail/func_matrix.hpp new file mode 100644 index 0000000..9be3449 --- /dev/null +++ b/depedencies/include/glm/detail/func_matrix.hpp @@ -0,0 +1,149 @@ +/// @ref core +/// @file glm/detail/func_matrix.hpp +/// +/// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions +/// +/// @defgroup core_func_matrix Matrix functions +/// @ingroup core +/// +/// For each of the following built-in matrix functions, there is both a +/// single-precision floating point version, where all arguments and return values +/// are single precision, and a double-precision floating version, where all +/// arguments and return values are double precision. Only the single-precision +/// floating point version is shown. + +#pragma once + +// Dependencies +#include "../detail/precision.hpp" +#include "../detail/setup.hpp" +#include "../detail/type_mat.hpp" +#include "../vec2.hpp" +#include "../vec3.hpp" +#include "../vec4.hpp" +#include "../mat2x2.hpp" +#include "../mat2x3.hpp" +#include "../mat2x4.hpp" +#include "../mat3x2.hpp" +#include "../mat3x3.hpp" +#include "../mat3x4.hpp" +#include "../mat4x2.hpp" +#include "../mat4x3.hpp" +#include "../mat4x4.hpp" + +namespace glm{ +namespace detail +{ + template + struct outerProduct_trait + { + typedef tmat2x2 type; + }; + + template + struct outerProduct_trait + { + typedef tmat3x2 type; + }; + + template + struct outerProduct_trait + { + typedef tmat4x2 type; + }; + + template + struct outerProduct_trait + { + typedef tmat2x3 type; + }; + + template + struct outerProduct_trait + { + typedef tmat3x3 type; + }; + + template + struct outerProduct_trait + { + typedef tmat4x3 type; + }; + + template + struct outerProduct_trait + { + typedef tmat2x4 type; + }; + + template + struct outerProduct_trait + { + typedef tmat3x4 type; + }; + + template + struct outerProduct_trait + { + typedef tmat4x4 type; + }; + +}//namespace detail + + /// @addtogroup core_func_matrix + /// @{ + + /// Multiply matrix x by matrix y component-wise, i.e., + /// result[i][j] is the scalar product of x[i][j] and y[i][j]. + /// + /// @tparam matType Floating-point matrix types. + /// + /// @see GLSL matrixCompMult man page + /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions + template class matType> + GLM_FUNC_DECL matType matrixCompMult(matType const & x, matType const & y); + + /// Treats the first parameter c as a column vector + /// and the second parameter r as a row vector + /// and does a linear algebraic matrix multiply c * r. + /// + /// @tparam matType Floating-point matrix types. + /// + /// @see GLSL outerProduct man page + /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions + template class vecTypeA, template class vecTypeB> + GLM_FUNC_DECL typename detail::outerProduct_trait::type outerProduct(vecTypeA const & c, vecTypeB const & r); + + /// Returns the transposed matrix of x + /// + /// @tparam matType Floating-point matrix types. + /// + /// @see GLSL transpose man page + /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions +# if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC11)) + template class matType> + GLM_FUNC_DECL typename matType::transpose_type transpose(matType const & x); +# endif + + /// Return the determinant of a squared matrix. + /// + /// @tparam valType Floating-point scalar types. + /// + /// @see GLSL determinant man page + /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions + template class matType> + GLM_FUNC_DECL T determinant(matType const & m); + + /// Return the inverse of a squared matrix. + /// + /// @tparam valType Floating-point scalar types. + /// + /// @see GLSL inverse man page + /// @see GLSL 4.20.8 specification, section 8.6 Matrix Functions + template class matType> + GLM_FUNC_DECL matType inverse(matType const & m); + + /// @} +}//namespace glm + +#include "func_matrix.inl" -- cgit v1.2.3