Class RegionFactory<S extends Space>

  • Type Parameters:
    S - Type of the space.

    public class RegionFactory<S extends Space>
    extends java.lang.Object
    This class is a factory for Region.
    Since:
    3.0
    • Constructor Detail

      • RegionFactory

        public RegionFactory()
        Simple constructor.
    • Method Detail

      • buildConvex

        public Region<S> buildConvex​(Hyperplane<S>... hyperplanes)
        Build a convex region from a collection of bounding hyperplanes.
        Parameters:
        hyperplanes - collection of bounding hyperplanes
        Returns:
        a new convex region, or null if the collection is empty
      • union

        public Region<S> union​(Region<S> region1,
                               Region<S> region2)
        Compute the union of two regions.
        Parameters:
        region1 - first region (will be unusable after the operation as parts of it will be reused in the new region)
        region2 - second region (will be unusable after the operation as parts of it will be reused in the new region)
        Returns:
        a new region, result of region1 union region2
      • intersection

        public Region<S> intersection​(Region<S> region1,
                                      Region<S> region2)
        Compute the intersection of two regions.
        Parameters:
        region1 - first region (will be unusable after the operation as parts of it will be reused in the new region)
        region2 - second region (will be unusable after the operation as parts of it will be reused in the new region)
        Returns:
        a new region, result of region1 intersection region2
      • xor

        public Region<S> xor​(Region<S> region1,
                             Region<S> region2)
        Compute the symmetric difference (exclusive or) of two regions.
        Parameters:
        region1 - first region (will be unusable after the operation as parts of it will be reused in the new region)
        region2 - second region (will be unusable after the operation as parts of it will be reused in the new region)
        Returns:
        a new region, result of region1 xor region2
      • difference

        public Region<S> difference​(Region<S> region1,
                                    Region<S> region2)
        Compute the difference of two regions.
        Parameters:
        region1 - first region (will be unusable after the operation as parts of it will be reused in the new region)
        region2 - second region (will be unusable after the operation as parts of it will be reused in the new region)
        Returns:
        a new region, result of region1 minus region2
      • getComplement

        public Region<S> getComplement​(Region<S> region)
        Get the complement of the region (exchanged interior/exterior).
        Parameters:
        region - region to complement, it will not modified, a new region independent region will be built
        Returns:
        a new region, complement of the specified one
      • recurseComplement

        private BSPTree<S> recurseComplement​(BSPTree<S> node)
        Recursively build the complement of a BSP tree.
        Parameters:
        node - current node of the original tree
        Returns:
        new tree, complement of the node
      • recurseComplement

        private BSPTree<S> recurseComplement​(BSPTree<S> node,
                                             java.util.Map<BSPTree<S>,​BSPTree<S>> map)
        Recursively build the complement of a BSP tree.
        Parameters:
        node - current node of the original tree
        map - transformed nodes map
        Returns:
        new tree, complement of the node