Class BoundarySourceLinecaster3D

java.lang.Object
org.apache.commons.geometry.euclidean.threed.BoundarySourceLinecaster3D
All Implemented Interfaces:
Linecastable3D

final class BoundarySourceLinecaster3D extends Object implements Linecastable3D
Class that performs linecast operations against arbitrary BoundarySource3D instances. This class performs a brute-force computation of the intersections of the line or line convex subset against all boundaries. Some data structures may support more efficient algorithms and should therefore prefer those instead.
  • Field Details

    • boundarySrc

      private final BoundarySource3D boundarySrc
      The boundary source instance providing boundaries for the linecast operation.
  • Constructor Details

    • BoundarySourceLinecaster3D

      BoundarySourceLinecaster3D(BoundarySource3D boundarySrc)
      Construct a new instance for linecasting against the given boundary source.
      Parameters:
      boundarySrc - boundary source to linecast against.
  • Method Details

    • linecast

      public List<LinecastPoint3D> linecast(LineConvexSubset3D subset)
      Intersect the given line convex subset against the boundaries in this instance, returning a list of all intersections in order of increasing distance along the line. An empty list is returned if no intersections are discovered.
      Specified by:
      linecast in interface Linecastable3D
      Parameters:
      subset - line subset to intersect
      Returns:
      a list of computed intersections in order of increasing distance along the line
    • linecastFirst

      public LinecastPoint3D linecastFirst(LineConvexSubset3D subset)
      Intersect the given line convex subset against the boundaries in this instance, returning the first intersection found when traveling in the direction of the line subset from its start point.
      Specified by:
      linecastFirst in interface Linecastable3D
      Parameters:
      subset - line subset to intersect
      Returns:
      the first intersection found or null if no intersection is found
    • getIntersectionStream

      private Stream<LinecastPoint3D> getIntersectionStream(LineConvexSubset3D subset)
      Return a stream containing intersections between the boundary source and the given line convex subset.
      Parameters:
      subset - line subset to intersect
      Returns:
      a stream containing linecast intersections
    • computeIntersection

      private LinecastPoint3D computeIntersection(PlaneConvexSubset planeSubset, LineConvexSubset3D lineSubset)
      Compute the intersection between a boundary plane subset and line subset. Null is returned if no intersection is discovered.
      Parameters:
      planeSubset - plane subset from the boundary source
      lineSubset - line subset to intersect with
      Returns:
      the linecast intersection between the two arguments or null if there is no such intersection