split method

Splits the color volume box into two smaller boxes.

Implementation

(ColorVolumeBox, ColorVolumeBox?) split() {
  if (pixels.isEmpty) return (this, null);

  int longestAxis = _findLongestAxis();
  pixels.sort((a, b) => a[longestAxis].compareTo(b[longestAxis]));

  int mid = pixels.length ~/ 2;
  return (
    ColorVolumeBox(pixels.sublist(0, mid)),
    ColorVolumeBox(pixels.sublist(mid)),
  );
}