public static Quaternionfc nlerpIterative(Quaternionf[] qs, float[] weights, float dotThreshold, Quaternionf dest) {
        dest.set(qs[0]);
        float w = weights[0];
        for (int i = 1; i < qs.length; i++) {
            float w0 = w;
            float w1 = weights[i];
            float rw1 = w1 / (w0 + w1);
            w += w1;
            dest.nlerpIterative(qs[i], rw1, dotThreshold);
        }
        return dest;
    }
public static Quaternionfc nlerpIterative ( Quaternionf [ ] qs , float [ ] weights , float dotThreshold , Quaternionf dest ) { dest . set ( qs [ 0 ] ) ; float w = weights [ 0 ] ; for ( int i = 1 ; i < qs . length ; i ++ ) { float w0 = w ; float w1 = weights [ i ] ; float rw1 = w1 / ( w0 + w1 ) ; w += w1 ; dest . nlerpIterative ( qs [ i ] , rw1 , dotThreshold ) ; } return dest ; }
Interpolate between all of the quaternions given in <code>qs</code> via iterative non-spherical linear interpolation using the
specified interpolation factors <code>weights</code>, and store the result in <code>dest</code>.
<p>
This method will interpolate between each two successive quaternions via {@link #nlerpIterative(Quaternionfc, float, float)}
using their relative interpolation weights.
<p>
Reference: <a href="http://gamedev.stackexchange.com/questions/62354/method-for-interpolation-between-3-quaternions#answer-62356">http://gamedev.stackexchange.com/</a>

@param qs
the quaternions to interpolate over
@param weights
the weights of each individual quaternion in <code>qs</code>
@param dotThreshold
the threshold for the dot product of each two interpolated quaternions above which {@link #nlerpIterative(Quaternionfc, float, float)} performs another iteration
of a small-step linear interpolation
@param dest
will hold the result
@return dest