code: public Quaternionf rotateTo(float fromDirX, float fromDirY, float fromDirZ, float toDirX, float toDirY, float toDirZ) {
          return rotateTo(fromDirX, fromDirY, fromDirZ, toDirX, toDirY, toDirZ, this);
      }
docs: Apply a rotation to <code>this</code> that rotates the <code>fromDir</code> vector to point along <code>toDir</code>.
  <p>
  Since there can be multiple possible rotations, this method chooses the one with the shortest arc.
  <p>
  If <code>Q</code> is <code>this</code> quaternion and <code>R</code> the quaternion representing the
  specified rotation, then the new quaternion will be <code>Q * R</code>. So when transforming a
  vector <code>v</code> with the new quaternion by using <code>Q * R * v</code>, the
  rotation added by this method will be applied first!
  
  @see #rotateTo(float, float, float, float, float, float, Quaternionf)
  
  @param fromDirX
  the x-coordinate of the direction to rotate into the destination direction
  @param fromDirY
  the y-coordinate of the direction to rotate into the destination direction
  @param fromDirZ
  the z-coordinate of the direction to rotate into the destination direction
  @param toDirX
  the x-coordinate of the direction to rotate to
  @param toDirY
  the y-coordinate of the direction to rotate to
  @param toDirZ
  the z-coordinate of the direction to rotate to
  @return this