public static Quaternion squad(Quaternion q0, Quaternion q1, Quaternion q2, Quaternion q3, Quaternion a, Quaternion b, float t, Quaternion store) {

        spline(q0, q1, q2, a, store);
        spline(q1, q2, q3, b, store);

        slerp(a, b, t, store);
        slerp(q1, q2, t, a);
        return slerp(a, store, 2 * t * (1 - t), b);
        //slerpNoInvert(a, b, t, store);
        //slerpNoInvert(q1, q2, t, a);
        //return slerpNoInvert(a, store, 2 * t * (1 - t), b);

//        quaternion c = slerpNoInvert(q1, q2, t),
//                d = slerpNoInvert(a, b, t);
//        return slerpNoInvert(c, d, 2 * t * (1 - t));
    }
Interpolate between 2 quaternions using Slerp.

@param q1 the desired value for t=0
@param q2 the desired value for t=1
@param t the fractional parameter (&ge;0, &le;1)
@param store storage for the result (not null, modified)
@return the interpolated Quaternion (store)
jme3-core/src/main/java/com/jme3/math/MathUtils.java