private double euclideanDistance(Features point, Centroid centroid) { if (point.getNumberOfDim() != centroid.getNumberOfDim()) throw new IllegalArgumentException(); double sumOfSquares = 0; for (int i = 0; i < point.getNumberOfDim(); i++) { sumOfSquares += (point.getDim(i) - centroid.getDim(i)) * (point.getDim(i) - centroid.getDim(i)); } return Math.sqrt(sumOfSquares); }