Class RegionFactory.XorMerger

  • All Implemented Interfaces:
    BSPTree.LeafMerger<S>
    Enclosing class:
    RegionFactory<S extends Space>

    private class RegionFactory.XorMerger
    extends java.lang.Object
    implements BSPTree.LeafMerger<S>
    BSP tree leaf merger computing symmetric difference (exclusive or) of two regions.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private XorMerger()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      BSPTree<S> merge​(BSPTree<S> leaf, BSPTree<S> tree, BSPTree<S> parentTree, boolean isPlusChild, boolean leafFromInstance)
      Merge a leaf node and a tree node.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • XorMerger

        private XorMerger()
    • Method Detail

      • 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)