Package org.djutils.draw.line
Class LineSegment2d
java.lang.Object
org.djutils.draw.line.LineSegment2d
- All Implemented Interfaces:
Serializable
,Drawable<Point2d>
,Drawable2d
,LineSegment<Point2d,
,DirectedPoint2d> Project<Point2d>
public class LineSegment2d
extends Object
implements Drawable2d, LineSegment<Point2d,DirectedPoint2d>
LineSegment2d is a line segment bound by 2 end points in 2D-space. A line segment stores the order in which it has been
created, so the end points are known as 'start' and 'end'.
Copyright (c) 2020-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUTILS License.
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorDescriptionLineSegment2d
(double startX, double startY, double endX, double endY) Construct a new LineSegment2d from four coordinates.LineSegment2d
(double startX, double startY, Point2d end) Construct a new LineSegment2d from two coordinates and a Point2d.LineSegment2d
(Point2d start, double endX, double endY) Construct a new LineSegment2d from a Point2d and two coordinates.LineSegment2d
(Point2d start, Point2d end) Construct a new LineSegment2d from two Point2d objects. -
Method Summary
Modifier and TypeMethodDescriptionclosestPointOnSegment
(Point2d point) Project a Point on this LineSegment.boolean
Retrieve the bounding rectangle of the object.Get the end point of this LineSegment.double
Get the length (distance from start point to end point) of this LineSegment.getLocationExtended
(double position) Create a DirectedPoint at the specified position along this LineSegment.Retrieve, or generate all points that make up the object.Get the start point of this LineSegment.int
hashCode()
projectOrthogonal
(Point2d point) Project a point onto this object.projectOrthogonalExtended
(Point2d point) Project a point onto this object.double
Project a point onto this object.double
Project a point onto this object.reverse()
Construct a new LineSegment with the points of this LineSegment in reverse order.int
size()
Retrieve the number of points that make up the object.toString()
Produce a string describing the Drawable using default conversion for the (double) coordinate values.Produce a String describing the Drawable.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.djutils.draw.Drawable
getPointList, toString, toString
Methods inherited from interface org.djutils.draw.Drawable2d
getDimensions
Methods inherited from interface org.djutils.draw.line.LineSegment
getLocation
-
Field Details
-
startX
public final double startXThe start x-coordinate. -
startY
public final double startYThe start y-coordinate. -
endX
public final double endXThe end x-coordinate. -
endY
public final double endYThe end y-coordinate.
-
-
Constructor Details
-
LineSegment2d
public LineSegment2d(double startX, double startY, double endX, double endY) throws DrawRuntimeException Construct a new LineSegment2d from four coordinates.- Parameters:
startX
- double; the x-coordinate of the start pointstartY
- double; the y-coordinate of the start pointendX
- double; the x-coordinate of the end pointendY
- 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 from a Point2d and two coordinates.- Parameters:
start
- Point2d; the start pointendX
- double; the x-coordinate of the end pointendY
- double; the y-coordinate of the end point- Throws:
NullPointerException
- when start is nullDrawRuntimeException
- when start has the exact coordinates endX, endY
-
LineSegment2d
public LineSegment2d(double startX, double startY, Point2d end) throws NullPointerException, DrawRuntimeException Construct a new LineSegment2d from two coordinates and a Point2d.- Parameters:
startX
- double; the x-coordinate of the start pointstartY
- double; the y-coordinate of the start pointend
- Point2d; the end point- Throws:
NullPointerException
- when end is nullDrawRuntimeException
- when end has the exact coordinates startX, startY
-
LineSegment2d
Construct a new LineSegment2d from two Point2d objects.- Parameters:
start
- Point2d; the start pointend
- Point2d; the end point- Throws:
NullPointerException
- when start is nullDrawRuntimeException
- when start has the exact coordinates endX, endY
-
-
Method Details
-
getStartPoint
Description copied from interface:LineSegment
Get the start point of this LineSegment.- Specified by:
getStartPoint
in interfaceLineSegment<Point2d,
DirectedPoint2d> - Returns:
- P; the start point of the LineSegment
-
getEndPoint
Description copied from interface:LineSegment
Get the end point of this LineSegment.- Specified by:
getEndPoint
in interfaceLineSegment<Point2d,
DirectedPoint2d> - Returns:
- P; the end point of the LineSegment
-
getLength
public double getLength()Description copied from interface:LineSegment
Get the length (distance from start point to end point) of this LineSegment.- Specified by:
getLength
in interfaceLineSegment<Point2d,
DirectedPoint2d> - Returns:
- double; (distance from start point to end point) of this LineSegment
-
getPoints
Description copied from interface:Drawable
Retrieve, or generate all points that make up the object. -
size
public int size()Description copied from interface:Drawable
Retrieve the number of points that make up the object. -
getBounds
Description copied from interface:Drawable2d
Retrieve the bounding rectangle of the object.- Specified by:
getBounds
in interfaceDrawable2d
- Returns:
- Bounds2d; the bounding box of the object
-
getLocationExtended
Description copied from interface:LineSegment
Create a DirectedPoint at the specified position along this LineSegment.- Specified by:
getLocationExtended
in interfaceLineSegment<Point2d,
DirectedPoint2d> - Parameters:
position
- double; the distance from the start point of this LineSegment.- Returns:
- D; a DirectedPoint at the specified position
- Throws:
DrawRuntimeException
- when position is NaN or infinite
-
closestPointOnSegment
Description copied from interface:LineSegment
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 interfaceLineSegment<Point2d,
DirectedPoint2d> - 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
-
reverse
Description copied from interface:LineSegment
Construct a new LineSegment with the points of this LineSegment in reverse order.- Specified by:
reverse
in interfaceLineSegment<Point2d,
DirectedPoint2d> - Returns:
- LineSegment; the new LineSegment
-
projectOrthogonal
Description copied from interface:Project
Project a point onto this object. For PolyLines and Polygons, 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 interfaceProject<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
Description copied from interface:Project
Project a point onto this object. For PolyLines and Polygons, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.- Specified by:
projectOrthogonalExtended
in interfaceProject<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
Description copied from interface:Project
Project a point onto this object. For PolyLines and Polygons, 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, NaN is returned.- Specified by:
projectOrthogonalFractional
in interfaceProject<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 NaN; the result lies somewhere on this object.
- Throws:
NullPointerException
- when point is null;
-
projectOrthogonalFractionalExtended
Description copied from interface:Project
Project a point onto this object. For PolyLines and Polygons, there may be multiple valid solutions. In that case the solution that lies on the closest segment is returned.- Specified by:
projectOrthogonalFractionalExtended
in interfaceProject<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
Description copied from interface:Drawable
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. -
toString
Description copied from interface:Drawable
Produce a String describing the Drawable.- Specified by:
toString
in interfaceDrawable<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
-
hashCode
public int hashCode() -
equals
-