diff --git a/glm/gtc/matrix_access.hpp b/glm/gtc/matrix_access.hpp index e69de29b..6a459652 100644 --- a/glm/gtc/matrix_access.hpp +++ b/glm/gtc/matrix_access.hpp @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// OpenGL Mathematics Copyright (c) 2005 - 2010 G-Truc Creation (www.g-truc.net) +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Created : 2005-12-27 +// Updated : 2010-11-12 +// Licence : This source is under MIT License +// File : glm/gtc/matrix_access.hpp +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Dependency: +// - GLM core +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifndef glm_gtc_matrix_access +#define glm_gtc_matrix_access + +// Dependency: +#include "../glm.hpp" + +namespace glm{ +namespace gtc{ +//! GLM_GTC_matrix_access extension: Set a column or a row of a matrix +namespace matrix_access +{ + //! Get a specific row of a matrix. + //! From GLM_GTC_matrix_access extension. + template + typename genType::row_type row( + genType const & m, + int index); + + //! Set a specific row to a matrix. + //! From GLM_GTC_matrix_access extension. + template + genType row( + genType const & m, + int index, + typename genType::row_type const & x); + + //! Get a specific column of a matrix. + //! From GLM_GTC_matrix_access extension. + template + typename genType::col_type column( + genType const & m, + int index); + + //! Set a specific column to a matrix. + //! From GLM_GTC_matrix_access extension. + template + genType column( + genType const & m, + int index, + typename genType::col_type const & x); + +}//namespace matrix_access +}//namespace gtc +}//namespace glm + +#include "matrix_access.inl" + +namespace glm{using namespace gtc::matrix_access;} + +#endif//glm_gtc_matrix_access diff --git a/glm/gtc/matrix_access.inl b/glm/gtc/matrix_access.inl index e69de29b..9fb41aff 100644 --- a/glm/gtc/matrix_access.inl +++ b/glm/gtc/matrix_access.inl @@ -0,0 +1,59 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////// +// OpenGL Mathematics Copyright (c) 2005 - 2010 G-Truc Creation (www.g-truc.net) +/////////////////////////////////////////////////////////////////////////////////////////////////// +// Created : 2005-12-27 +// Updated : 2010-11-12 +// Licence : This source is under MIT License +// File : glm/gtc/matrix_access.inl +/////////////////////////////////////////////////////////////////////////////////////////////////// + +namespace glm{ +namespace gtc{ +namespace matrix_access +{ + template + inline genType row( + genType const & m, + int index, + typename genType::row_type const & x) + { + genType Result = m; + for(typename genType::size_type i = 0; i < genType::row_size(); ++i) + Result[i][index] = x[i]; + return Result; + } + + template + inline typename genType::row_type row( + genType & const m, + int index) + { + typename genType::row_type Result; + for(typename genType::size_type i = 0; i < genType::row_size(); ++i) + Result[i] = m[i][index]; + return Result; + } + + template + inline genType column( + genType const & m, + int index, + typename genType::col_type const & x) + { + genType Result = m; + Result[index] = x; + return Result; + } + + template + inline typename genType::col_type column( + genType const & m, + int index) + { + return m[index]; + } + +}//namespace matrix_access +}//namespace gtc +}//namespace glm +