Class RegionBSPTree2D.LinecastVisitor
java.lang.Object
org.apache.commons.geometry.euclidean.twod.RegionBSPTree2D.LinecastVisitor
- All Implemented Interfaces:
BSPTreeVisitor<Vector2D,
RegionBSPTree2D.RegionNode2D>
- Enclosing class:
RegionBSPTree2D
private static final class RegionBSPTree2D.LinecastVisitor
extends Object
implements BSPTreeVisitor<Vector2D,RegionBSPTree2D.RegionNode2D>
BSP tree visitor that performs a linecast operation against the boundaries of the visited tree.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.commons.geometry.core.partitioning.bsp.BSPTreeVisitor
BSPTreeVisitor.ClosestFirstVisitor<P extends Point<P>,
N extends BSPTree.Node<P, N>>, BSPTreeVisitor.FarthestFirstVisitor<P extends Point<P>, N extends BSPTree.Node<P, N>>, BSPTreeVisitor.Order, BSPTreeVisitor.Result, BSPTreeVisitor.TargetPointVisitor<P extends Point<P>, N extends BSPTree.Node<P, N>> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
If true, the visitor will stop visiting the tree once the first linecast point is determined.private final LineConvexSubset
The line subset to intersect with the boundaries of the BSP tree.private double
The minimum abscissa found during the search.private final List
<LinecastPoint2D> List of results from the linecast operation. -
Constructor Summary
ConstructorsConstructorDescriptionLinecastVisitor
(LineConvexSubset linecastSubset, boolean firstOnly) Create a new instance with the given intersecting line subset. -
Method Summary
Modifier and TypeMethodDescriptionprivate LinecastPoint2D
Compute the linecast point for the given intersection point and tree node, returning null if the point does not actually lie on the region boundary.Get the firstLinecastPoint2D
resulting from the linecast operation.Get a list containing the results of the linecast operation.Visit a node in a BSP tree.visitOrder
(RegionBSPTree2D.RegionNode2D internalNode) Determine the visit order for the given internal node.
-
Field Details
-
linecastSubset
The line subset to intersect with the boundaries of the BSP tree. -
firstOnly
private final boolean firstOnlyIf true, the visitor will stop visiting the tree once the first linecast point is determined. -
minAbscissa
private double minAbscissaThe minimum abscissa found during the search. -
results
List of results from the linecast operation.
-
-
Constructor Details
-
LinecastVisitor
LinecastVisitor(LineConvexSubset linecastSubset, boolean firstOnly) Create a new instance with the given intersecting line subset.- Parameters:
linecastSubset
- line subset to intersect with the BSP tree region boundaryfirstOnly
- if true, the visitor will stop visiting the tree once the first linecast point is determined
-
-
Method Details
-
getFirstResult
Get the firstLinecastPoint2D
resulting from the linecast operation.- Returns:
- the first linecast result point
-
getResults
Get a list containing the results of the linecast operation. The list is sorted and filtered.- Returns:
- list of sorted and filtered results from the linecast operation
-
visitOrder
Determine the visit order for the given internal node. This is called for each internal node beforeBSPTreeVisitor.visit(BSPTree.Node)
is called. Returning null orBSPTreeVisitor.Order.NONE
from this method skips the subtree rooted at the given node. This method is not called on leaf nodes.- Specified by:
visitOrder
in interfaceBSPTreeVisitor<Vector2D,
RegionBSPTree2D.RegionNode2D> - Parameters:
internalNode
- the internal node to determine the visit order for- Returns:
- the order that the subtree rooted at the given node should be visited
-
visit
Visit a node in a BSP tree. This method is called for both internal nodes and leaf nodes.- Specified by:
visit
in interfaceBSPTreeVisitor<Vector2D,
RegionBSPTree2D.RegionNode2D> - Parameters:
node
- the node being visited- Returns:
- the result of the visit operation
-
computeLinecastPoint
Compute the linecast point for the given intersection point and tree node, returning null if the point does not actually lie on the region boundary.- Parameters:
pt
- intersection pointnode
- node containing the cut that the linecast line intersected with- Returns:
- a new linecast point instance or null if the intersection point does not lie on the region boundary
-