All Implemented Interfaces:
Embedding<Vector3D,Vector1D>, RegionEmbedding<Vector3D,Vector1D>, Sized

public final class Segment3D extends LineConvexSubset3D
Class representing a line segment in 3D Euclidean space. A line segment is a portion of a line with finite start and end points.

Instances of this class are guaranteed to be immutable.

See Also:
  • Field Details

    • start

      private final double start
      Start abscissa for the segment.
    • end

      private final double end
      End abscissa for the segment.
  • Constructor Details

    • Segment3D

      Segment3D(Line3D line, Vector3D startPoint, Vector3D endPoint)
      Construct a new instance from a line and two points on the line. The points are projected onto the line and must be in order of increasing abscissa. No validation is performed.
      Parameters:
      line - line for the segment
      startPoint - segment start point
      endPoint - segment end point
    • Segment3D

      Segment3D(Line3D line, double start, double end)
      Construct a new instance from a line and two abscissa locations on the line. The abscissa locations must be in increasing order. No validation is performed.
      Parameters:
      line - line for the segment
      start - abscissa start location
      end - abscissa end location
  • Method Details

    • isInfinite

      public boolean isInfinite()
      Return true if the size of the instance is infinite.

      This method always returns false.

      Returns:
      true if the size of the instance is infinite
    • isFinite

      public boolean isFinite()
      Return true if the size of the instance is finite.

      This method always returns true.

      Returns:
      true if the size of the instance is finite
    • getStartPoint

      public Vector3D getStartPoint()
      Get the start point for the line subset.
      Specified by:
      getStartPoint in class LineConvexSubset3D
      Returns:
      the start point for the line subset, or null if no start point exists
    • getSubspaceStart

      public double getSubspaceStart()
      Get the 1D start location of the line subset or Double.NEGATIVE_INFINITY if no start location exists.
      Specified by:
      getSubspaceStart in class LineConvexSubset3D
      Returns:
      the 1D start location of the line subset or Double.NEGATIVE_INFINITY if no start location exists.
    • getEndPoint

      public Vector3D getEndPoint()
      Get the end point for the line subset.
      Specified by:
      getEndPoint in class LineConvexSubset3D
      Returns:
      the end point for the line subset, or null if no end point exists.
    • getSubspaceEnd

      public double getSubspaceEnd()
      Get the 1D end location of the line subset or Double.POSITIVE_INFINITY if no end location exists.
      Specified by:
      getSubspaceEnd in class LineConvexSubset3D
      Returns:
      the 1D end location of the line subset or Double.POSITIVE_INFINITY if no end location exists
    • getSize

      public double getSize()
      Get the size of the instance.
      Returns:
      the size of the instance
    • getCentroid

      public Vector3D getCentroid()
      Get the centroid, or geometric center, of the line subset or null if the subset is empty or infinite.
      Specified by:
      getCentroid in class LineSubset3D
      Returns:
      the centroid of the line subset, or null if the subset is empty or infinite
    • getBounds

      public Bounds3D getBounds()
      Get the 3D bounding box of the line subset or null if the subset is empty or infinite.
      Specified by:
      getBounds in class LineSubset3D
      Returns:
      the 3D bounding box the line subset or null if the subset is empty or infinite
    • transform

      public Segment3D transform(Transform<Vector3D> transform)
      Transform this instance.
      Specified by:
      transform in class LineConvexSubset3D
      Parameters:
      transform - the transform to apply
      Returns:
      a new, transformed instance
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • containsAbscissa

      boolean containsAbscissa(double abscissa)
      Return true if the given abscissa value is contained in the line subset (ie, in the subspace region or one of its 1D boundaries).
      Specified by:
      containsAbscissa in class LineConvexSubset3D
      Parameters:
      abscissa - abscissa to check
      Returns:
      true if abscissa lies on the inside or boundary of the subspace region