private static class PolygonsSet.SegmentsBuilder extends java.lang.Object implements BSPTreeVisitor<Euclidean2D>
BSPTreeVisitor.Order
Modifier and Type | Field and Description |
---|---|
private java.util.List<PolygonsSet.ConnectableSegment> |
segments
Built segments.
|
private double |
tolerance
Tolerance for close nodes connection.
|
Constructor and Description |
---|
SegmentsBuilder(double tolerance)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
private void |
addContribution(SubHyperplane<Euclidean2D> sub,
BSPTree<Euclidean2D> node,
java.lang.Iterable<BSPTree<Euclidean2D>> splitters,
boolean reversed)
Add the contribution of a boundary facet.
|
java.util.List<PolygonsSet.ConnectableSegment> |
getSegments()
Get the segments.
|
private BSPTree<Euclidean2D> |
selectClosest(Vector2D point,
java.lang.Iterable<BSPTree<Euclidean2D>> candidates)
Select the node whose cut sub-hyperplane is closest to specified point.
|
void |
visitInternalNode(BSPTree<Euclidean2D> node)
Visit a BSP tree node node having a non-null sub-hyperplane.
|
void |
visitLeafNode(BSPTree<Euclidean2D> node)
Visit a leaf BSP tree node node having a null sub-hyperplane.
|
BSPTreeVisitor.Order |
visitOrder(BSPTree<Euclidean2D> node)
Determine the visit order for this node.
|
private final double tolerance
private final java.util.List<PolygonsSet.ConnectableSegment> segments
public SegmentsBuilder(double tolerance)
tolerance
- tolerance for close nodes connectionpublic BSPTreeVisitor.Order visitOrder(BSPTree<Euclidean2D> node)
Before attempting to visit an internal node, this method is
called to determine the desired ordering of the visit. It is
guaranteed that this method will be called before visitInternalNode
for a given node, it will be
called exactly once for each internal node.
visitOrder
in interface BSPTreeVisitor<Euclidean2D>
node
- BSP node guaranteed to have a non null cut sub-hyperplaneBSPTreeVisitor.Order.PLUS_MINUS_SUB
, BSPTreeVisitor.Order.PLUS_SUB_MINUS
,
BSPTreeVisitor.Order.MINUS_PLUS_SUB
, BSPTreeVisitor.Order.MINUS_SUB_PLUS
,
BSPTreeVisitor.Order.SUB_PLUS_MINUS
, BSPTreeVisitor.Order.SUB_MINUS_PLUS
public void visitInternalNode(BSPTree<Euclidean2D> node)
It is guaranteed that this method will be called after visitOrder
has been called for a given node,
it wil be called exactly once for each internal node.
visitInternalNode
in interface BSPTreeVisitor<Euclidean2D>
node
- BSP node guaranteed to have a non null cut sub-hyperplaneBSPTreeVisitor.visitLeafNode(org.apache.commons.math3.geometry.partitioning.BSPTree<S>)
public void visitLeafNode(BSPTree<Euclidean2D> node)
visitLeafNode
in interface BSPTreeVisitor<Euclidean2D>
node
- leaf BSP node having a null sub-hyperplaneBSPTreeVisitor.visitInternalNode(org.apache.commons.math3.geometry.partitioning.BSPTree<S>)
private void addContribution(SubHyperplane<Euclidean2D> sub, BSPTree<Euclidean2D> node, java.lang.Iterable<BSPTree<Euclidean2D>> splitters, boolean reversed)
sub
- boundary facetnode
- node containing segmentsplitters
- splitters for the boundary facetreversed
- if true, the facet has the inside on its plus sideprivate BSPTree<Euclidean2D> selectClosest(Vector2D point, java.lang.Iterable<BSPTree<Euclidean2D>> candidates)
point
- reference pointcandidates
- candidate nodespublic java.util.List<PolygonsSet.ConnectableSegment> getSegments()