Home | History | Annotate | Download | only in gtx
      1 ///////////////////////////////////////////////////////////////////////////////////////////////////
      2 // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
      3 ///////////////////////////////////////////////////////////////////////////////////////////////////
      4 // Created : 2006-04-19
      5 // Updated : 2009-02-19
      6 // Licence : This source is under MIT License
      7 // File    : glm/gtx/matrix_major_storage.inl
      8 ///////////////////////////////////////////////////////////////////////////////////////////////////
      9 
     10 namespace glm
     11 {
     12 	template <typename T, precision P> 
     13 	GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> rowMajor2
     14 	(
     15 		detail::tvec2<T, P> const & v1, 
     16 		detail::tvec2<T, P> const & v2
     17 	)
     18 	{
     19 		detail::tmat2x2<T, P> Result;
     20 		Result[0][0] = v1.x;
     21 		Result[1][0] = v1.y;
     22 		Result[0][1] = v2.x;
     23 		Result[1][1] = v2.y;
     24 		return Result;
     25 	}
     26 
     27 	template <typename T, precision P> 
     28 	GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> rowMajor2(
     29 		const detail::tmat2x2<T, P>& m)
     30 	{
     31 		detail::tmat2x2<T, P> Result;
     32 		Result[0][0] = m[0][0];
     33 		Result[0][1] = m[1][0];
     34 		Result[1][0] = m[0][1];
     35 		Result[1][1] = m[1][1];
     36 		return Result;
     37 	}
     38 
     39 	template <typename T, precision P> 
     40 	GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rowMajor3(
     41 		const detail::tvec3<T, P>& v1, 
     42 		const detail::tvec3<T, P>& v2, 
     43 		const detail::tvec3<T, P>& v3)
     44 	{
     45 		detail::tmat3x3<T, P> Result;
     46 		Result[0][0] = v1.x;
     47 		Result[1][0] = v1.y;
     48 		Result[2][0] = v1.z;
     49 		Result[0][1] = v2.x;
     50 		Result[1][1] = v2.y;
     51 		Result[2][1] = v2.z;
     52 		Result[0][2] = v3.x;
     53 		Result[1][2] = v3.y;
     54 		Result[2][2] = v3.z;
     55 		return Result;
     56 	}
     57 
     58 	template <typename T, precision P> 
     59 	GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> rowMajor3(
     60 		const detail::tmat3x3<T, P>& m)
     61 	{
     62 		detail::tmat3x3<T, P> Result;
     63 		Result[0][0] = m[0][0];
     64 		Result[0][1] = m[1][0];
     65 		Result[0][2] = m[2][0];
     66 		Result[1][0] = m[0][1];
     67 		Result[1][1] = m[1][1];
     68 		Result[1][2] = m[2][1];
     69 		Result[2][0] = m[0][2];
     70 		Result[2][1] = m[1][2];
     71 		Result[2][2] = m[2][2];
     72 		return Result;
     73 	}
     74 
     75 	template <typename T, precision P> 
     76 	GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rowMajor4(
     77 		const detail::tvec4<T, P>& v1, 
     78 		const detail::tvec4<T, P>& v2, 
     79 		const detail::tvec4<T, P>& v3, 
     80 		const detail::tvec4<T, P>& v4)
     81 	{
     82 		detail::tmat4x4<T, P> Result;
     83 		Result[0][0] = v1.x;
     84 		Result[1][0] = v1.y;
     85 		Result[2][0] = v1.z;
     86 		Result[3][0] = v1.w;
     87 		Result[0][1] = v2.x;
     88 		Result[1][1] = v2.y;
     89 		Result[2][1] = v2.z;
     90 		Result[3][1] = v2.w;
     91 		Result[0][2] = v3.x;
     92 		Result[1][2] = v3.y;
     93 		Result[2][2] = v3.z;
     94 		Result[3][2] = v3.w;
     95 		Result[0][3] = v4.x;
     96 		Result[1][3] = v4.y;
     97 		Result[2][3] = v4.z;
     98 		Result[3][3] = v4.w;
     99 		return Result;
    100 	}
    101 
    102 	template <typename T, precision P> 
    103 	GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> rowMajor4(
    104 		const detail::tmat4x4<T, P>& m)
    105 	{
    106 		detail::tmat4x4<T, P> Result;
    107 		Result[0][0] = m[0][0];
    108 		Result[0][1] = m[1][0];
    109 		Result[0][2] = m[2][0];
    110 		Result[0][3] = m[3][0];
    111 		Result[1][0] = m[0][1];
    112 		Result[1][1] = m[1][1];
    113 		Result[1][2] = m[2][1];
    114 		Result[1][3] = m[3][1];
    115 		Result[2][0] = m[0][2];
    116 		Result[2][1] = m[1][2];
    117 		Result[2][2] = m[2][2];
    118 		Result[2][3] = m[3][2];
    119 		Result[3][0] = m[0][3];
    120 		Result[3][1] = m[1][3];
    121 		Result[3][2] = m[2][3];
    122 		Result[3][3] = m[3][3];
    123 		return Result;
    124 	}
    125 
    126 	template <typename T, precision P> 
    127 	GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> colMajor2(
    128 		const detail::tvec2<T, P>& v1, 
    129 		const detail::tvec2<T, P>& v2)
    130 	{
    131 		return detail::tmat2x2<T, P>(v1, v2);
    132 	}
    133 
    134 	template <typename T, precision P> 
    135 	GLM_FUNC_QUALIFIER detail::tmat2x2<T, P> colMajor2(
    136 		const detail::tmat2x2<T, P>& m)
    137 	{
    138 		return detail::tmat2x2<T, P>(m);
    139 	}
    140 
    141 	template <typename T, precision P> 
    142 	GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> colMajor3(
    143 		const detail::tvec3<T, P>& v1, 
    144 		const detail::tvec3<T, P>& v2, 
    145 		const detail::tvec3<T, P>& v3)
    146 	{
    147 		return detail::tmat3x3<T, P>(v1, v2, v3);
    148 	}
    149 
    150 	template <typename T, precision P> 
    151 	GLM_FUNC_QUALIFIER detail::tmat3x3<T, P> colMajor3(
    152 		const detail::tmat3x3<T, P>& m)
    153 	{
    154 		return detail::tmat3x3<T, P>(m);
    155 	}
    156 
    157 	template <typename T, precision P> 
    158 	GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> colMajor4(
    159 		const detail::tvec4<T, P>& v1, 
    160 		const detail::tvec4<T, P>& v2, 
    161 		const detail::tvec4<T, P>& v3, 
    162 		const detail::tvec4<T, P>& v4)
    163 	{
    164 		return detail::tmat4x4<T, P>(v1, v2, v3, v4);
    165 	}
    166 
    167 	template <typename T, precision P> 
    168 	GLM_FUNC_QUALIFIER detail::tmat4x4<T, P> colMajor4(
    169 		const detail::tmat4x4<T, P>& m)
    170 	{
    171 		return detail::tmat4x4<T, P>(m);
    172 	}
    173 }//namespace glm
    174