Class LineSegment2d

    • Field Detail

      • startX

        public final double startX
        The start x-coordinate.
      • startY

        public final double startY
        The start y-coordinate.
      • endX

        public final double endX
        The end x-coordinate.
      • endY

        public final double endY
        The end y-coordinate.
    • Constructor Detail

      • LineSegment2d

        public LineSegment2d​(double startX,
                             double startY,
                             double endX,
                             double endY)
                      throws DrawRuntimeException
        Construct a new LineSegment2d start four coordinates.
        Parameters:
        startX - double; the x-coordinate of the start point
        startY - double; the y-coordinate of the start point
        endX - double; the x-coordinate of the end point
        endY - double; the y-coordinate of the end point
        Throws:
        DrawRuntimeException - when (startX,startY) is equals end (endX,endY)
      • LineSegment2d

        public LineSegment2d​(Point2d start,
                             double endX,
                             double endY)
                      throws NullPointerException,
                             DrawRuntimeException
        Construct a new LineSegment2d start a Point2d and two coordinates.
        Parameters:
        start - Point2d; the start point
        endX - double; the x-coordinate of the end point
        endY - double; the y-coordinate of the end point
        Throws:
        NullPointerException - when start is null
        DrawRuntimeException - when start has the exact coordinates endX, endY
      • LineSegment2d

        public LineSegment2d​(double startX,
                             double startY,
                             Point2d end)
                      throws NullPointerException,
                             DrawRuntimeException
        Construct a new LineSegment2d start two coordinates and a Point2d.
        Parameters:
        startX - double; the x-coordinate of the start point
        startY - double; the y-coordinate of the start point
        end - Point2d; the end point
        Throws:
        NullPointerException - when end is null
        DrawRuntimeException - when end has the exact coordinates startX, startY
    • Method Detail

      • getLength

        public double getLength()
        Get the length (distance from start point to end point) of this LineSegment.
        Specified by:
        getLength in interface LineSegment<Point2d,​Ray2d>
        Returns:
        double; (distance from start point to end point) of this LineSegment
      • getPoints

        public Iterator<? extends Point2d> getPoints()
        Retrieve, or generate all points that make up the object.
        Specified by:
        getPoints in interface Drawable<Point2d>
        Returns:
        Iterable<Point2d>; an iterator that generates all points that make up the object
      • size

        public int size()
        Retrieve the number of points that make up the object.
        Specified by:
        size in interface Drawable<Point2d>
        Returns:
        int; the number of points that make up the object
      • getBounds

        public Bounds2d getBounds()
        Retrieve the bounding rectangle of the object.
        Specified by:
        getBounds in interface Drawable2d
        Returns:
        Bounds2d; the bounding box of the object
      • getLocationExtended

        public Ray2d getLocationExtended​(double position)
                                  throws DrawRuntimeException
        Create a Ray on a specified point on this LineSegment.
        Specified by:
        getLocationExtended in interface LineSegment<Point2d,​Ray2d>
        Parameters:
        position - double; the distance from the start point of this LineSegment.
        Returns:
        R; a ray beginning at the specified position
        Throws:
        DrawRuntimeException - when position is NaN or infinite
      • closestPointOnSegment

        public Point2d closestPointOnSegment​(Point2d point)
                                      throws NullPointerException
        Project a Point on this LineSegment. If the the projected points lies outside the line segment, the nearest end point of the line segment is returned. Otherwise the returned point lies between the end points of the line segment.
        Adapted from example code provided by Paul Bourke.
        Specified by:
        closestPointOnSegment in interface LineSegment<Point2d,​Ray2d>
        Parameters:
        point - P; the point to project onto the segment
        Returns:
        P; either the start point, or the end point of the segment or a Point that lies somewhere in between those two.
        Throws:
        NullPointerException - when point is null
      • projectOrthogonal

        public Point2d projectOrthogonal​(Point2d point)
                                  throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned. If there is no valid solution on the closest segment, null is returned.
        Specified by:
        projectOrthogonal in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        P; the projection of the point (may be null if no sensible projection is possible). If the result is not null; the result lies somewhere on this object.
        Throws:
        NullPointerException - when point is null;
      • projectOrthogonalExtended

        public Point2d projectOrthogonalExtended​(Point2d point)
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.
        Specified by:
        projectOrthogonalExtended in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        P; the projection of the point. This result cannot be null, but it may not lie on this object, but, in stead, lie on a line, or plane that extends this object
      • projectOrthogonalFractional

        public double projectOrthogonalFractional​(Point2d point)
                                           throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned. If there is no valid solution on the closest segment, null is returned.
        Specified by:
        projectOrthogonalFractional in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        double; the fractional position of the projection of the point (may be NaN if no sensible projection is possible). If the result is not null; the result lies somewhere on this object.
        Throws:
        NullPointerException - when point is null;
      • projectOrthogonalFractionalExtended

        public double projectOrthogonalFractionalExtended​(Point2d point)
                                                   throws NullPointerException
        Project a point onto this object. For PolyLines, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.
        Specified by:
        projectOrthogonalFractionalExtended in interface Project<Point2d>
        Parameters:
        point - P; the point
        Returns:
        double; the fractional position of the projection of the point. This result cannot be NaN, but it may be outside the range 0.0 .. 1.0.
        Throws:
        NullPointerException - when point is null;
      • toString

        public String toString()
        Produce a string describing the Drawable using default conversion for the (double) coordinate values. Regrettably, it is not allowed to provide a default implementation here.
        Specified by:
        toString in interface Drawable<Point2d>
        Overrides:
        toString in class Object
        Returns:
        String; a string describing the Drawable
      • toString

        public String toString​(String doubleFormat,
                               boolean doNotIncludeClassName)
        Produce a String describing the Drawable.
        Specified by:
        toString in interface Drawable<Point2d>
        Parameters:
        doubleFormat - String; a format string (something like "%6.3f") which will be used to render every coordinate value)
        doNotIncludeClassName - boolean; if true; the output of toString is not prefixed by the class name. This is useful for concatenating the textual representation of lots of Drawables (e.g. an array, or a List).
        Returns:
        String; textual representation of the Drawable
      • toExcel

        public String toExcel()
        Convert this PolyLine to something that MS-Excel can plot.
        Specified by:
        toExcel in interface LineSegment<Point2d,​Ray2d>
        Returns:
        String MS-excel XY, or XYZ plottable output
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object