private static void visualizeBodyPath(List<Point3DReadOnly> bodyPath, BagOfBalls vizToUpdate) { int numberOfBalls = vizToUpdate.getNumberOfBalls(); double bodyPathLength = 0.0; for (int i = 0; i < bodyPath.size() - 1; i++) { bodyPathLength += bodyPath.get(i).distance(bodyPath.get(i + 1)); } double distanceToTravel = bodyPathLength / (numberOfBalls - 1.0); Point3D position = new Point3D(bodyPath.get(0)); vizToUpdate.setBall(position); for (int i = 0; i < numberOfBalls - 1; i++) { position = travelAlongBodyPath(distanceToTravel, position, bodyPath); vizToUpdate.setBall(position, i); } }