docs: private void updateDts() {
  		double dt = 0.1;
  		ArrayList<Double> u = new ArrayList<Double>();
  		ArrayList<Double> s = new ArrayList<Double>();
  		//u = u + a * dt;
  		//s = s + u * dt;
  		s.add(0.0);
  		u.add(0.0);
  		double totDistance = 0.0;
  		for (int i = 1; i < dts.length; i++) {
  			Coordinate prev = getPositions()[i-1];
  			Coordinate current = getPositions()[i];
  			totDistance += prev.distance(current);
  		}
  		while (s.get(s.size()-1) < totDistance) {
  			double percentComplete = 0.01;
  			double newPercent = s.get(s.size()-1)/totDistance;
  			if (newPercent > percentComplete) percentComplete = newPercent;
  //			System.out.println(percentComplete*100 + "% --> " + getAcceleration(percentComplete));
  			u.add(u.get(u.size()-1)+getAcceleration(percentComplete)*dt);
  			s.add(s.get(s.size()-1)+u.get(u.size()-1)*dt);
  		}
  		totDistance = 0.0;
  		dts[0] = 0.0;
  		double prevSum = 0.0;
  		for (int i = 1; i < dts.length; i++) {
  			Coordinate prev = getPositions()[i-1];
  			Coordinate current = getPositions()[i];
  			totDistance += prev.distance(current);
  			int countDts = 0;
  			for (int j = 0; j < s.size(); j++) {
  				if (s.get(j) > totDistance) {
  					countDts = j-1;
  					break;
  				}
  			}
  			prevSum += dts[i-1];
  			dts[i] = Math.max(countDts*dt-prevSum,0.001);
  		}
  	}