• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
10namespace 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