## org.apache.commons.math3.geometry.partitioning
Class RegionFactory<S extends Space>

    java.lang.Object
      org.apache.commons.math3.geometry.partitioning.RegionFactory<S>

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
Version:
  $Id: RegionFactory.java 1416643 2012-12-03 19:37:14Z tn $

Nested Class Summary
`private class` `RegionFactory.DifferenceMerger` BSP tree leaf merger computing union of two regions.
`private class` `RegionFactory.IntersectionMerger` BSP tree leaf merger computing union of two regions.
`private class` `RegionFactory.NodesCleaner` Visitor removing internal nodes attributes.
`private class` `RegionFactory.UnionMerger` BSP tree leaf merger computing union of two regions.
`private class` `RegionFactory.XorMerger` BSP tree leaf merger computing union of two regions.

Field Summary
`private RegionFactory.NodesCleaner` `nodeCleaner` Visitor removing internal nodes attributes.

Constructor Summary
`RegionFactory()` Simple constructor.

Method Summary
`Region<S>` `buildConvex(Hyperplane<S>... hyperplanes)` Build a convex region from a collection of bounding hyperplanes.
`Region<S>` `difference(Region<S> region1, Region<S> region2)` Compute the difference of two regions.
`Region<S>` `getComplement(Region<S> region)` Get the complement of the region (exchanged interior/exterior).
`Region<S>` `intersection(Region<S> region1, Region<S> region2)` Compute the intersection of two regions.
`private BSPTree<S>` `recurseComplement(BSPTree<S> node)` Recursively build the complement of a BSP tree.
`Region<S>` `union(Region<S> region1, Region<S> region2)` Compute the union of two regions.
`Region<S>` `xor(Region<S> region1, Region<S> region2)` Compute the symmetric difference (exclusive or) of two regions.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### nodeCleaner

    private final RegionFactory.NodesCleaner nodeCleaner

  Visitor removing internal nodes attributes.

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

Copyright (c) 2003-2013 Apache Software Foundation