public static Point[] applyDynamism(final Point[] spline, final int msForMove, final int msPerMove) {
	    final int numPoints = spline.length;
	    final double msPerPoint = (double) msForMove / (double) numPoints;
	    final double undistStep = msPerMove / msPerPoint;
	    final int steps = (int) Math.floor(numPoints / undistStep);
	    final Point[] result = new Point[steps];
	    final double[] gaussValues = gaussTable(result.length);
	    double currentPercent = 0;
	    for (int i = 0; i < steps; i++) {
	      currentPercent += gaussValues[i];
	      final int nextIndex = (int) Math.floor(numPoints * currentPercent);
	      if (nextIndex < numPoints) {
	        result[i] = spline[nextIndex];
	      } else {
	        result[i] = spline[numPoints - 1];
	      }
	    }
	    if (currentPercent < 1D) {
	      result[steps - 1] = spline[numPoints - 1];
	    }
	    return result;
	  }