code: public static Quaterniondc slerp(Quaterniond[] qs, double[] weights, Quaterniond dest) {
          dest.set(qs[0]);
          double w = weights[0];
          for (int i = 1; i < qs.length; i++) {
              double w0 = w;
              double w1 = weights[i];
              double rw1 = w1 / (w0 + w1);
              w += w1;
              dest.slerp(qs[i], rw1);
          }
          return dest;
      }
docs: Interpolate between all of the quaternions given in <code>qs</code> via 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 #slerp(Quaterniondc, double)} using their relative interpolation weights.
  <p>
  This method resorts to non-spherical linear interpolation when the absolute dot product of any two interpolated quaternions is below <code>1E-6f</code>.
  <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 dest
  will hold the result
  @return dest