Class S2ShapeAspect.ChainAspect.Multi

java.lang.Object
com.google.common.geometry.S2ShapeAspect.ChainAspect.Multi
All Implemented Interfaces:
S2Shape, S2ShapeAspect.ChainAspect, S2ShapeAspect.EdgeAspect, S2ShapeAspect.Mixed, S2ShapeAspect.TopoAspect, S2ShapeAspect.VertexAspect
Direct Known Subclasses:
S2LaxPolygonShape.MultiList, S2ShapeAspect.ChainAspect.Multi.Array, S2ShapeAspect.ChainAspect.Multi.Packed, S2ShapeAspect.ChainAspect.Multi.Snapped
Enclosing interface:
S2ShapeAspect.ChainAspect

public abstract static class S2ShapeAspect.ChainAspect.Multi extends Object implements S2ShapeAspect.Mixed
A sequence of chains, represented as an array of the first 'edgeId' for each chain.
  • Field Details

    • cumulativeEdges

      private final int[] cumulativeEdges
  • Constructor Details

    • Multi

      public Multi(Iterable<? extends Iterable<?>> chains)
    • Multi

      Multi(int[] cumulativeEdges)
  • Method Details

    • numChains

      public final int numChains()
      Description copied from interface: S2Shape
      Returns the number of contiguous edge chains in the shape. For example, a shape whose edges are [AB, BC, CD, AE, EF] may consist of two chains [A, B, C, D] and [A, E, F]. Every chain is assigned a chain id numbered sequentially starting from zero.

      An empty shape has no chains. A full shape (which contains the entire globe) has one chain with no edges. Other shapes should have at least one chain, and the sum of all valid chain lengths should equal S2Shape.numEdges() (that is, edges may only be used by a single chain).

      Note that it is always acceptable to implement this method by returning S2Shape.numEdges() (i.e. every chain consists of a single edge), but this may reduce the efficiency of some algorithms.

      Specified by:
      numChains in interface S2Shape
      Specified by:
      numChains in interface S2ShapeAspect.ChainAspect
    • edgeId

      public final int edgeId(int chainId)
      Description copied from interface: S2ShapeAspect.ChainAspect
      Returns start edge ID of a chain, or the number of edges if chainId==numChains().
      Specified by:
      edgeId in interface S2ShapeAspect.ChainAspect
    • getChainStart

      public final int getChainStart(int chainId)
      Description copied from interface: S2Shape
      Returns the first edge id corresponding to the edge chain for the given chain id. The edge chains must form contiguous, non-overlapping ranges that cover the entire range of edge ids.
      Specified by:
      getChainStart in interface S2Shape
      Specified by:
      getChainStart in interface S2ShapeAspect.ChainAspect
      Parameters:
      chainId - which edge chain to return its start, from 0 to S2Shape.numChains() - 1
    • getChainLength

      public final int getChainLength(int chainId)
      Description copied from interface: S2Shape
      Returns the number of edge ids corresponding to the edge chain for the given chain id. The edge chains must form contiguous, non-overlapping ranges that cover the entire range of edge ids.
      Specified by:
      getChainLength in interface S2Shape
      Specified by:
      getChainLength in interface S2ShapeAspect.ChainAspect
      Parameters:
      chainId - which edge chain to return its length, from 0 to S2Shape.numChains() - 1
    • chainId

      public final int chainId(int edgeId)
      Description copied from interface: S2ShapeAspect.ChainAspect
      Returns the chain ID of a given edge.
      Specified by:
      chainId in interface S2ShapeAspect.ChainAspect