S
- Type of the space.class Characterization<S extends Space>
extends java.lang.Object
BoundaryBuilder
Modifier and Type | Field and Description |
---|---|
private NodesSet<S> |
insideSplitters
Nodes that were used to split the outside touching part.
|
private SubHyperplane<S> |
insideTouching
Part of the cut sub-hyperplane that touch inside cells.
|
private NodesSet<S> |
outsideSplitters
Nodes that were used to split the outside touching part.
|
private SubHyperplane<S> |
outsideTouching
Part of the cut sub-hyperplane that touch outside cells.
|
Constructor and Description |
---|
Characterization(BSPTree<S> node,
SubHyperplane<S> sub)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
private void |
addInsideTouching(SubHyperplane<S> sub,
java.util.List<BSPTree<S>> splitters)
Add a part of the cut sub-hyperplane known to touch an inside cell.
|
private void |
addOutsideTouching(SubHyperplane<S> sub,
java.util.List<BSPTree<S>> splitters)
Add a part of the cut sub-hyperplane known to touch an outside cell.
|
private void |
characterize(BSPTree<S> node,
SubHyperplane<S> sub,
java.util.List<BSPTree<S>> splitters)
Filter the parts of an hyperplane belonging to the boundary.
|
NodesSet<S> |
getInsideSplitters()
Get the nodes that were used to split the inside touching part.
|
NodesSet<S> |
getOutsideSplitters()
Get the nodes that were used to split the outside touching part.
|
SubHyperplane<S> |
insideTouching()
Get all the parts of the cut sub-hyperplane known to touch inside cells.
|
SubHyperplane<S> |
outsideTouching()
Get all the parts of the cut sub-hyperplane known to touch outside cells.
|
boolean |
touchInside()
Check if the cut sub-hyperplane touches inside cells.
|
boolean |
touchOutside()
Check if the cut sub-hyperplane touches outside cells.
|
private SubHyperplane<S extends Space> outsideTouching
private SubHyperplane<S extends Space> insideTouching
private final NodesSet<S extends Space> outsideSplitters
public Characterization(BSPTree<S> node, SubHyperplane<S> sub)
Characterization consists in splitting the specified sub-hyperplane into several parts lying in inside and outside cells of the tree. The principle is to compute characterization twice for each cut sub-hyperplane in the tree, once on the plus node and once on the minus node. The parts that have the same flag (inside/inside or outside/outside) do not belong to the boundary while parts that have different flags (inside/outside or outside/inside) do belong to the boundary.
node
- current BSP tree nodesub
- sub-hyperplane to characterizeprivate void characterize(BSPTree<S> node, SubHyperplane<S> sub, java.util.List<BSPTree<S>> splitters)
The filtering consist in splitting the specified sub-hyperplane into several parts lying in inside and outside cells of the tree. The principle is to call this method twice for each cut sub-hyperplane in the tree, once on the plus node and once on the minus node. The parts that have the same flag (inside/inside or outside/outside) do not belong to the boundary while parts that have different flags (inside/outside or outside/inside) do belong to the boundary.
node
- current BSP tree nodesub
- sub-hyperplane to characterizesplitters
- nodes that did split the current oneprivate void addOutsideTouching(SubHyperplane<S> sub, java.util.List<BSPTree<S>> splitters)
sub
- part of the cut sub-hyperplane known to touch an outside cellsplitters
- sub-hyperplanes that did split the current oneprivate void addInsideTouching(SubHyperplane<S> sub, java.util.List<BSPTree<S>> splitters)
sub
- part of the cut sub-hyperplane known to touch an inside cellsplitters
- sub-hyperplanes that did split the current onepublic boolean touchOutside()
public SubHyperplane<S> outsideTouching()
public NodesSet<S> getOutsideSplitters()
Splitting nodes are internal nodes (i.e. they have a non-null cut sub-hyperplane).
public boolean touchInside()
public SubHyperplane<S> insideTouching()