/**
 * Returns the first-order partial derivative of a Hermite curve with control points p0, m0, p1, m1 at the parameter t in [0,1].
 *
 * @param {number} t normalized interpolation position in interval [0,1]
 * @param {number} p0 first value
 * @param {number} p1 second value
 * @param {number} m0 first tangent
 * @param {number} m1 second tangent
 * @returns {number}
 *
 * @see spline3_hermite_integral
 */
export function spline3_hermite_derivative(t, p0, p1, m0, m1) {

    // see https://github.com/krishauser/Klampt/blob/0ed16608a3eceee59d04383a17c207ebc33a399f/Python/klampt/math/spline.py#L22

    const t2 = t * t
    const dcx1 = (6.0 * t2 - 6.0 * t)
    const dcx2 = (-6.0 * t2 + 6.0 * t)
    const dcv1 = 3.0 * t2 - 4.0 * t + 1.0
    const dcv2 = 3.0 * t2 - 2.0 * t

    return dcx1 * p0 + dcx2 * p1 + dcv1 * m0 + dcv2 * m1

}

