Package org.djutils.draw.point
Class DirectedPoint2d
java.lang.Object
org.djutils.draw.point.Point2d
org.djutils.draw.point.DirectedPoint2d
- All Implemented Interfaces:
- Iterable<Point2d>,- Directed,- Drawable<Point2d>,- Drawable2d,- Point<Point2d>
- Direct Known Subclasses:
- Ray2d
A DirectedPoint2d is a Point2d that additionally carries a direction in 2d-space (dirZ). This is not the direction
 that the point is when viewed from the origin (0,0).
 
Copyright (c) 2023-2025 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See for project information https://djutils.org. The DJUTILS project is distributed under a three-clause BSD-style license, which can be found at https://djutils.org/docs/license.html.
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
- 
Field SummaryFieldsModifier and TypeFieldDescriptionfinal doubleThe counter-clockwise rotation around the point in radians.
- 
Constructor SummaryConstructorsConstructorDescriptionDirectedPoint2d(double[] xy, double dirZ) Construct a new DirectedPoint2d from an x and y coordinates in a double[] and a direction.DirectedPoint2d(double x, double y, double dirZ) Construct a new DirectedPoint2d with an x and y coordinate and a direction.DirectedPoint2d(double x, double y, double throughX, double throughY) Construct a new DirectedPoint2d from two coordinates and the coordinates of a point that the direction goes through.DirectedPoint2d(Point2D point, double dirZ) Construct a new DirectedPoint2d from an AWT Point2D and a direction.DirectedPoint2d(Point2d point, double dirZ) Construct a new DirectedPoint2d from a Point2d and a direction.DirectedPoint2d(Point2d point, double throughX, double throughY) Construct a new DirectedPoint2d from a Point2d and the coordinates of a point that the direction goes through.DirectedPoint2d(Point2d point, Point2d throughPoint) Construct a new DirectedPoint2d from a Point2d and a point that the direction goes through.
- 
Method SummaryModifier and TypeMethodDescriptionabs()Return a new Point with absolute coordinate values.booleanepsilonEquals(DirectedPoint2d other, double epsilonCoordinate, double epsilonDirection) Compare this Directed with another Directed with specified tolerances in the coordinates and the angles.booleandoublegetDirZ()Retrieve the angle from the positive x-axis.inthashCode()interpolate(DirectedPoint2d otherPoint, double fraction) Interpolate towards another DirectedPoint2d with a fraction.iterator()neg()Return a new Point with negated coordinate values.Return a new Point with a distance of 1 to the origin.rotate(double rotateZ) Return a new DirectedPoint2d with an in-place rotation around the z-axis by the provided rotateZ.scale(double factor) Return a new Point with the coordinates of this point scaled by the provided factor.toString()Produce a string describing the Drawable using default conversion for the (double) coordinate values.Produce a String describing the Drawable.translate(double dX, double dY) Return a new Point2d with a translation by the provided dx and dy.translate(double dX, double dY, double z) Return a new Point3d with a translation by the provided dx, dy and dz.Methods inherited from class org.djutils.draw.point.Point2dcircleIntersections, closestPointOnLine, closestPointOnLine, closestPointOnLine, closestPointOnSegment, closestPointOnSegment, directionTo, distance, distanceSquared, epsilonEquals, fractionalPositionOnLine, getAbsoluteBounds, getX, getY, interpolate, intersectionOfLines, intersectionOfLines, intersectionOfLines, intersectionOfLineSegments, intersectionOfLineSegments, intersectionOfLineSegments, size, toPoint2DMethods inherited from class java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.djutils.draw.DrawablegetPointList, toString, toStringMethods inherited from interface org.djutils.draw.Drawable2dgetDimensionsMethods inherited from interface java.lang.IterableforEach, spliterator
- 
Field Details- 
dirZpublic final double dirZThe counter-clockwise rotation around the point in radians.
 
- 
- 
Constructor Details- 
DirectedPoint2dpublic DirectedPoint2d(double x, double y, double dirZ) Construct a new DirectedPoint2d with an x and y coordinate and a direction.- Parameters:
- x- the x coordinate
- y- the y coordinate
- dirZ- the counter-clockwise rotation around the point in radians
- Throws:
- IllegalArgumentException- when any coordinate or- dirZis- NaN
 
- 
DirectedPoint2dpublic DirectedPoint2d(double[] xy, double dirZ) Construct a new DirectedPoint2d from an x and y coordinates in a double[] and a direction.- Parameters:
- xy- the- xand- ycoordinates in that order
- dirZ- the counter-clockwise rotation around the point in radians
- Throws:
- NullPointerException- when- xyis- null
- ArithmeticException- when any value in- xyis- NaNor- rotZis- NaN
- IllegalArgumentException- when the length of- xyis not 2
 
- 
DirectedPoint2dConstruct a new DirectedPoint2d from an AWT Point2D and a direction.- Parameters:
- point- java.awt.geom.Point2D
- dirZ- the counter-clockwise rotation around the point in radians
- Throws:
- NullPointerException- when- pointis- null
- ArithmeticException- when- rotZis- NaN
 
- 
DirectedPoint2dConstruct a new DirectedPoint2d from a Point2d and a direction.- Parameters:
- point- a point (with or without orientation)
- dirZ- the counter-clockwise rotation around the point in radians
- Throws:
- NullPointerException- when- pointis- null
- ArithmeticException- when- rotZis- NaN
 
- 
DirectedPoint2dpublic DirectedPoint2d(double x, double y, double throughX, double throughY) Construct a new DirectedPoint2d from two coordinates and the coordinates of a point that the direction goes through.- Parameters:
- x- the x coordinate of the of the new DirectedPoint
- y- the y coordinate of the of the new DirectedPoint
- throughX- the x-coordinate of a point that the direction goes through
- throughY- the y-coordinate of a point that the direction goes through
- Throws:
- ArithmeticException- when- throughX, or- throughYis- null
- IllegalArgumentException- when- throughX == xand- throughY == y
 
- 
DirectedPoint2dConstruct a new DirectedPoint2d from a Point2d and a point that the direction goes through.- Parameters:
- point- the point
- throughPoint- the point that the direction goes through
- Throws:
- NullPointerException- when- pointis- null, or- throughPoint==- null
- IllegalArgumentException- when- throughX == point.xand- throughY == point.y
 
- 
DirectedPoint2dConstruct a new DirectedPoint2d from a Point2d and the coordinates of a point that the direction goes through.- Parameters:
- point- the point
- throughX- the x coordinate of a point that the direction goes through
- throughY- the y coordinate of a point that the direction goes through
- Throws:
- NullPointerException- when- pointis- null
- ArithmeticException- when- throughX, or- throughYis- NaN
- IllegalArgumentException- when- throughX == point.xand- throughY == point.y
 
 
- 
- 
Method Details- 
translateDescription copied from class:Point2dReturn a new Point2d with a translation by the provided dx and dy.
- 
translatepublic DirectedPoint3d translate(double dX, double dY, double z) throws ArithmeticException, IllegalArgumentException Description copied from class:Point2dReturn a new Point3d with a translation by the provided dx, dy and dz. If this is an OrientedPoint2d, then the result is an OrientedPoint3d with rotX copied from this and rotY and rotZ are set to 0.0.- Overrides:
- translatein class- Point2d
- Parameters:
- dX- the x translation
- dY- the y translation
- z- the z translation
- Returns:
- a new point with the translated coordinates
- Throws:
- IllegalArgumentException- when- dX,- dY, or- dZis- NaN
- ArithmeticException
 
- 
scaleDescription copied from interface:PointReturn a new Point with the coordinates of this point scaled by the provided factor.
- 
negDescription copied from interface:PointReturn a new Point with negated coordinate values. If this is aDirectedPoint,dirY(in case this is aDirectedPoint3danddirZare negated.
- 
absDescription copied from interface:PointReturn a new Point with absolute coordinate values. If this is aDirectedPoint,dirY(in case this is aDirectedPoint3danddirZare copied unchanged.
- 
normalizeDescription copied from interface:PointReturn a new Point with a distance of 1 to the origin.
- 
interpolateInterpolate towards another DirectedPoint2d with a fraction. It is allowed for fraction to be less than zero or larger than 1. In that case the interpolation turns into an extrapolation. DirZ is interpolated using the AngleUtil.interpolateShortest method.- Parameters:
- otherPoint- the other point
- fraction- the factor for interpolation towards the other point. When <code>fraction</code> is between 0 and 1, it is an interpolation, otherwise an extrapolation. If- fractionis 0;- thisPoint is returned; if- fractionis 1, the- otherPointis returned
- Returns:
- a new OrientedPoint2d at the requested fraction
- Throws:
- NullPointerException- when- otherPointis- null
- ArithmeticException- when- fractionis- NaN
 
- 
rotateReturn a new DirectedPoint2d with an in-place rotation around the z-axis by the provided rotateZ. The resulting rotation is normalized between -π and π.- Parameters:
- rotateZ- the rotation around the z-axis
- Returns:
- a new point with the same coordinates and applied rotation
- Throws:
- ArithmeticException- when- rotateZis- NaN
 
- 
getDirZpublic double getDirZ()Description copied from interface:DirectedRetrieve the angle from the positive x-axis. Positive rotates towards the positive y-axis (and beyond).
- 
iterator
- 
toStringDescription copied from interface:DrawableProduce a string describing the Drawable using default conversion for the (double) coordinate values. Regrettably, it is not allowed to provide a default implementation here.
- 
toStringDescription copied from interface:DrawableProduce a String describing the Drawable.- Specified by:
- toStringin interface- Drawable<Point2d>
- Overrides:
- toStringin class- Point2d
- Parameters:
- doubleFormat- a format string (something like "%6.3f") which will be used to render every coordinate value)
- doNotIncludeClassName- if- true; the output of- toStringis 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:
- textual representation of the Drawable
 
- 
epsilonEqualspublic boolean epsilonEquals(DirectedPoint2d other, double epsilonCoordinate, double epsilonDirection) throws NullPointerException, IllegalArgumentException Compare this Directed with another Directed with specified tolerances in the coordinates and the angles.- Parameters:
- other- the Directed to compare to
- epsilonCoordinate- the upper bound of difference for one of the coordinates; use Double.POSITIVE_INFINITY if you do not want to check the coordinates
- epsilonDirection- the upper bound of difference for the direction(s); use Double.POSITIVE_INFINITY if you do not want to check the angles
- Returns:
- boolean;trueifxandyare less thanepsilonCoordinateapart, androtZis less thanepsilonDirectionapart, otherwisefalse
- Throws:
- NullPointerException- when- otheris- null
- ArithmeticException- when- epsilonCoordinateor- epsilonDirectionis- NaN
- IllegalArgumentException-- epsilonCoordinateor- epsilonDirectionis- negative
 
- 
hashCodepublic int hashCode()
- 
equals
 
-