docs: public double pathLength(double delta, double... controlPoints)
      {
          if (delta < 0 || delta > 0.5)
          {
              throw new IllegalArgumentException("illegal delta");
          }
          Point2D.Double p1 = new Point2D.Double();
          Point2D.Double p2 = new Point2D.Double();
          double sum = 0;
          calc(0, p1::setLocation, controlPoints);
          for (double t=delta;t<1.0;t+=delta)
          {
              calc(t, p2::setLocation, controlPoints);
              sum += p1.distance(p2);
              p1.setLocation(p2);
          }
          calc(1.0, p2::setLocation, controlPoints);
          sum += p1.distance(p2);
          return sum;
      }