Class S2ShapeIndex.Cell

java.lang.Object
com.google.common.geometry.S2ShapeIndex.Cell
All Implemented Interfaces:
S2Iterator.Entry, Serializable
Direct Known Subclasses:
S2ShapeIndex.Cell.BinaryCell, S2ShapeIndex.Cell.MultiCell, S2ShapeIndex.S2ClippedShape, S2ShapeIndexCoder.EncodedS2ShapeIndex.LazyCell
Enclosing class:
S2ShapeIndex

public abstract static class S2ShapeIndex.Cell extends Object implements S2Iterator.Entry, Serializable
This class contains the set of clipped shapes within a particular index cell, sorted in increasing order of shape id.

To be as memory efficient as possible, we specialize two very common cases.

  • The Cell class is extended by S2ClippedShape, and in the *very* common case of a cell containing just one clipped shape, we return the shape directly without wrapping it (this requires that the clipped shapes contain the cell IDs, rather than the Cell; more about that on S2ShapeIndex.S2ClippedShape.)
  • In the fairly common case of a cell intersecting two shapes, we have a BinaryCell implementation that is half the size of the general purpose MultiCell in that case.
See Also:
  • Field Details

  • Constructor Details

    • Cell

      public Cell()
  • Method Details

    • create

      static S2ShapeIndex.Cell create(int size, S2ShapeIndex.S2ClippedShape[] tempClippedShapes)
      Returns a Cell with a copy of the given shapes, specialized for the number of elements.
    • id

      public long id()
      Description copied from interface: S2Iterator.Entry
      Returns the cell ID of this cell as a primitive.
      Specified by:
      id in interface S2Iterator.Entry
    • numShapes

      public abstract int numShapes()
      Returns the number of clipped shapes in this cell.
    • clipped

      public abstract S2ShapeIndex.S2ClippedShape clipped(int i)
      Returns the clipped shape at the given index.
      Parameters:
      i - must be at least 0 and less than numShapes()
    • findClipped

      Returns the clipped shape corresponding to the given shape ID, or null if the shape does not intersect this cell.