///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2008 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2007-01-25
// Updated : 2007-03-06
// Licence : This source is under MIT License
// File    : glm/gtx/spline.h
///////////////////////////////////////////////////////////////////////////////////////////////////
// Dependency:
// - GLM core
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef glm_gtx_spline
#define glm_gtx_spline

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

namespace glm
{
	template <typename genType> genType catmullRomGTX(const genType& v1, const genType& v2, const genType& v3, const genType& v4, const GLMvalType& s);
	template <typename genType> genType hermiteGTX(const genType& v1, const genType& t1, const genType& v2, const genType& t2, const GLMvalType& s);
	template <typename genType> genType cubicGTX(const genType& v1, const genType& v2, const genType& v3, const genType& v4, const GLMvalType& s);

    namespace gtx
    {
		//! GLM_GTX_spline extension: Spline functions
        namespace spline
        {
	        template <typename genType> inline genType catmullRom(const genType& v1, const genType& v2, const genType& v3, const genType& v4, const GLMvalType& s){return catmullRomGTX(v1, v2, v3, v4, s);}   //!< \brief Return a point from a catmull rom curve (from GLM_GTX_spline extension)
	        template <typename genType> inline genType hermite(const genType& v1, const genType& t1, const genType& v2, const genType& t2, const GLMvalType& s){return hermiteGTX(v1, t1, v2, t2, s);}         //!< \brief Return a point from a hermite curve (from GLM_GTX_spline extension)
	        template <typename genType> inline genType cubic(const genType& v1, const genType& v2, const genType& v3, const genType& v4, const GLMvalType& s){return cubicGTX(v1, v2, v3, v4, s);}             //!< \brief Return a point from a cubic curve (from GLM_GTX_spline extension)      
        }
    }
}

#define GLM_GTX_spline namespace gtx::spline

#include "spline.inl"

#endif//glm_gtx_spline

