Class RegionFactory.DifferenceMerger

java.lang.Object
org.apache.commons.math3.geometry.partitioning.RegionFactory.DifferenceMerger
All Implemented Interfaces:
BSPTree.LeafMerger<S>, BSPTree.VanishingCutHandler<S>
Enclosing class:
RegionFactory<S extends Space>

private class RegionFactory.DifferenceMerger extends Object implements BSPTree.LeafMerger<S>, BSPTree.VanishingCutHandler<S>
BSP tree leaf merger computing difference of two regions.
  • Field Details

    • region1

      private final Region<S extends Space> region1
      Region to subtract from.
    • region2

      private final Region<S extends Space> region2
      Region to subtract.
  • Constructor Details

    • DifferenceMerger

      DifferenceMerger(Region<S> region1, Region<S> region2)
      Simple constructor.
      Parameters:
      region1 - region to subtract from
      region2 - region to subtract
  • Method Details

    • merge

      public BSPTree<S> merge(BSPTree<S> leaf, BSPTree<S> tree, BSPTree<S> parentTree, boolean isPlusChild, boolean leafFromInstance)
      Merge a leaf node and a tree node.

      This method is called at the end of a recursive merging resulting from a tree1.merge(tree2, leafMerger) call, when one of the sub-trees involved is a leaf (i.e. when its cut-hyperplane is null). This is the only place where the precise semantics of the operation are required. For all upper level nodes in the tree, the merging operation is only a generic partitioning algorithm.

      Since the final operation may be non-commutative, it is important to know if the leaf node comes from the instance tree (tree1) or the argument tree (tree2). The third argument of the method is devoted to this. It can be ignored for commutative operations.

      The BSPTree.insertInTree method may be useful to implement this method.

      Specified by:
      merge in interface BSPTree.LeafMerger<S extends Space>
      Parameters:
      leaf - leaf node (its cut hyperplane is guaranteed to be null)
      tree - tree node (its cut hyperplane may be null or not)
      parentTree - parent tree to connect to (may be null)
      isPlusChild - if true and if parentTree is not null, the resulting tree should be the plus child of its parent, ignored if parentTree is null
      leafFromInstance - if true, the leaf node comes from the instance tree (tree1) and the tree node comes from the argument tree (tree2)
      Returns:
      the BSP tree resulting from the merging (may be one of the arguments)
    • fixNode

      public BSPTree<S> fixNode(BSPTree<S> node)
      Fix a node with both vanished cut and children.
      Specified by:
      fixNode in interface BSPTree.VanishingCutHandler<S extends Space>
      Parameters:
      node - node to fix
      Returns:
      fixed node