Class ComponentTree

java.lang.Object
org.apache.lucene.geo.ComponentTree
All Implemented Interfaces:
Component2D

final class ComponentTree extends Object implements Component2D
2D multi-component geometry implementation represented as an interval tree of components.

Construction takes O(n log n) time for sorting and tree construction.

  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.apache.lucene.geo.Component2D

    Component2D.WithinRelation
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final Component2D
    root node of edge tree
    private Component2D
     
    private double
    maximum X of this geometry's bounding box area
    private double
    maximum Y of this geometry's bounding box area
    private double
    minimum X of this geometry's bounding box area
    private double
    minimum Y of this geometry's bounding box area
    private Component2D
     
    private final boolean
    which dimension was this node split on
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    ComponentTree(Component2D component, boolean splitX)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    contains(double x, double y)
    relates this component2D with a point *
    boolean
    containsLine(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY)
    return true if this component2D contains the provided line *
    boolean
    containsTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY, double cX, double cY)
    return true if this component2D contains the provided triangle *
    (package private) static Component2D
    create(Component2D[] components)
    Creates tree from provided components
    private static ComponentTree
    createTree(Component2D[] components, int low, int high, boolean splitX)
    Creates tree from sorted components (with range low and high inclusive)
    double
    max X value for the component *
    double
    max Y value for the component *
    double
    min X value for the component *
    double
    min Y value for the component *
    boolean
    intersectsLine(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY)
    return true if this component2D intersects the provided line *
    boolean
    intersectsTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY, double cX, double cY)
    return true if this component2D intersects the provided triangle *
    relate(double minX, double maxX, double minY, double maxY)
    relates this component2D with a bounding box *
    withinLine(double minX, double maxX, double minY, double maxY, double aX, double aY, boolean ab, double bX, double bY)
    Compute the within relation of this component2D with a line *
    withinPoint(double x, double y)
    Compute the within relation of this component2D with a point *
    withinTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, boolean ab, double bX, double bY, boolean bc, double cX, double cY, boolean ca)
    Compute the within relation of this component2D with a triangle *

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.lucene.geo.Component2D

    containsLine, containsTriangle, intersectsLine, intersectsTriangle, withinLine, withinTriangle
  • Field Details

    • minY

      private double minY
      minimum Y of this geometry's bounding box area
    • maxY

      private double maxY
      maximum Y of this geometry's bounding box area
    • minX

      private double minX
      minimum X of this geometry's bounding box area
    • maxX

      private double maxX
      maximum X of this geometry's bounding box area
    • left

      private Component2D left
    • splitX

      private final boolean splitX
      which dimension was this node split on
    • component

      private final Component2D component
      root node of edge tree
  • Constructor Details

    • ComponentTree

      private ComponentTree(Component2D component, boolean splitX)
  • Method Details

    • getMinX

      public double getMinX()
      Description copied from interface: Component2D
      min X value for the component *
      Specified by:
      getMinX in interface Component2D
    • getMaxX

      public double getMaxX()
      Description copied from interface: Component2D
      max X value for the component *
      Specified by:
      getMaxX in interface Component2D
    • getMinY

      public double getMinY()
      Description copied from interface: Component2D
      min Y value for the component *
      Specified by:
      getMinY in interface Component2D
    • getMaxY

      public double getMaxY()
      Description copied from interface: Component2D
      max Y value for the component *
      Specified by:
      getMaxY in interface Component2D
    • contains

      public boolean contains(double x, double y)
      Description copied from interface: Component2D
      relates this component2D with a point *
      Specified by:
      contains in interface Component2D
    • intersectsLine

      public boolean intersectsLine(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY)
      Description copied from interface: Component2D
      return true if this component2D intersects the provided line *
      Specified by:
      intersectsLine in interface Component2D
    • intersectsTriangle

      public boolean intersectsTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY, double cX, double cY)
      Description copied from interface: Component2D
      return true if this component2D intersects the provided triangle *
      Specified by:
      intersectsTriangle in interface Component2D
    • containsLine

      public boolean containsLine(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY)
      Description copied from interface: Component2D
      return true if this component2D contains the provided line *
      Specified by:
      containsLine in interface Component2D
    • containsTriangle

      public boolean containsTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, double bX, double bY, double cX, double cY)
      Description copied from interface: Component2D
      return true if this component2D contains the provided triangle *
      Specified by:
      containsTriangle in interface Component2D
    • withinPoint

      public Component2D.WithinRelation withinPoint(double x, double y)
      Description copied from interface: Component2D
      Compute the within relation of this component2D with a point *
      Specified by:
      withinPoint in interface Component2D
    • withinLine

      public Component2D.WithinRelation withinLine(double minX, double maxX, double minY, double maxY, double aX, double aY, boolean ab, double bX, double bY)
      Description copied from interface: Component2D
      Compute the within relation of this component2D with a line *
      Specified by:
      withinLine in interface Component2D
    • withinTriangle

      public Component2D.WithinRelation withinTriangle(double minX, double maxX, double minY, double maxY, double aX, double aY, boolean ab, double bX, double bY, boolean bc, double cX, double cY, boolean ca)
      Description copied from interface: Component2D
      Compute the within relation of this component2D with a triangle *
      Specified by:
      withinTriangle in interface Component2D
    • relate

      public PointValues.Relation relate(double minX, double maxX, double minY, double maxY)
      Description copied from interface: Component2D
      relates this component2D with a bounding box *
      Specified by:
      relate in interface Component2D
    • create

      static Component2D create(Component2D[] components)
      Creates tree from provided components
    • createTree

      private static ComponentTree createTree(Component2D[] components, int low, int high, boolean splitX)
      Creates tree from sorted components (with range low and high inclusive)