public class ParticleCube { private final List squares; public ParticleCube(List squares) { this.squares = squares; } public static ParticleCube wrap(Cuboid cuboid, double distanceBetween) { double maxY = cuboid.getMaxY(); double minY = cuboid.getMinY(); List squares = new ArrayList<>(); Vector min = cuboid.getMin(); Vector max = cuboid.getMax(); for (double y = minY; y < maxY; y += distanceBetween) { min.setY(y); max.setY(y); ParticleSquare slice = ParticleSquare.interpolate(min, max, distanceBetween); squares.add(slice); } return new ParticleCube(squares); } public List getSquares() { return List.copyOf(squares); } }