mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-22 22:25:38 +00:00
0116f4b65d
git-subtree-dir: external/glm git-subtree-split: bf71a834948186f4097caa076cd2663c69a10e1e
30 lines
604 B
C++
30 lines
604 B
C++
/// @ref gtx_orthonormalize
|
|
|
|
namespace glm
|
|
{
|
|
template<typename T, qualifier Q>
|
|
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m)
|
|
{
|
|
mat<3, 3, T, Q> r = m;
|
|
|
|
r[0] = normalize(r[0]);
|
|
|
|
T d0 = dot(r[0], r[1]);
|
|
r[1] -= r[0] * d0;
|
|
r[1] = normalize(r[1]);
|
|
|
|
T d1 = dot(r[1], r[2]);
|
|
d0 = dot(r[0], r[2]);
|
|
r[2] -= r[0] * d0 + r[1] * d1;
|
|
r[2] = normalize(r[2]);
|
|
|
|
return r;
|
|
}
|
|
|
|
template<typename T, qualifier Q>
|
|
GLM_FUNC_QUALIFIER vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y)
|
|
{
|
|
return normalize(x - y * dot(y, x));
|
|
}
|
|
}//namespace glm
|