code: 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;
      }
docs: 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