public record NodeItem()

in baremaps-flatgeobuf/src/main/java/org/apache/baremaps/flatgeobuf/PackedRTree.java [449:507]


  public record NodeItem(
      double minX,
      double minY,
      double maxX,
      double maxY,
      long offset) {

    public NodeItem(double minX, double minY, double maxX, double maxY) {
      this(minX, minY, maxX, maxY, 0);
    }

    public NodeItem(long offset) {
      this(
          Double.POSITIVE_INFINITY,
          Double.POSITIVE_INFINITY,
          Double.NEGATIVE_INFINITY,
          Double.NEGATIVE_INFINITY,
          offset);
    }

    public double width() {
      return maxX - minX;
    }

    public double height() {
      return maxY - minY;
    }

    public static NodeItem sum(NodeItem a, final NodeItem b) {
      return a.expand(b);
    }

    public NodeItem expand(final NodeItem nodeItem) {
      return new NodeItem(
          Math.min(nodeItem.minX, minX),
          Math.min(nodeItem.minY, minY),
          Math.max(nodeItem.maxX, maxX),
          Math.max(nodeItem.maxY, maxY),
          offset);
    }

    public boolean intersects(NodeItem nodeItem) {
      if (nodeItem.minX > maxX) {
        return false;
      } else if (nodeItem.minY > maxY) {
        return false;
      } else if (nodeItem.maxX < minX) {
        return false;
      } else if (nodeItem.maxY < minY) {
        return false;
      } else {
        return true;
      }
    }

    public Envelope toEnvelope() {
      return new Envelope(minX, maxX, minY, maxY);
    }
  }