///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2008 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2005-12-21
// Updated : 2006-11-13
// Licence : This source is under MIT License
// File    : glm/gtx/orthonormalize.h
///////////////////////////////////////////////////////////////////////////////////////////////////
// Dependency:
// - GLM core
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __glm_gtx_orthonormalize__
#define __glm_gtx_orthonormalize__

// Dependency:
#include "../../glm.h"

namespace glm
{
    template <typename T> detail::tmat3x3<T> orthonormalizeGTX(const detail::tmat3x3<T>& m);
    template <typename T> detail::tvec3<T> orthonormalizeGTX(const detail::tvec3<T>& x, const detail::tvec3<T>& y);

    namespace gtx
    {
		//! GLM_GTX_orthonormalize extension: Orthonormalize matrices.
        namespace orthonormalize
        {
            template <typename T> inline detail::tmat3x3<T> orthonormalize(const detail::tmat3x3<T>& m){return orthonormalizeGTX(m);}                         //!< \brief Returns the orthonormalized matrix of m (from GLM_GTX_orthonormalize extension)
            template <typename T> inline detail::tvec3<T> orthonormalize(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return orthonormalizeGTX(x, y);}  //!< \brief Orthonormalizes x according y (from GLM_GTX_orthonormalize extension)
        }
    }
}

#define GLM_GTX_orthonormalize namespace gtx::orthonormalize

#include "orthonormalize.inl"

#endif//__glm_gtx_orthonormalize__
