Package org.djutils.draw.point
Class OrientedPoint2d
java.lang.Object
org.djutils.draw.point.Point2d
org.djutils.draw.point.OrientedPoint2d
- All Implemented Interfaces:
Serializable
,Drawable<Point2d>
,Drawable2d
,Oriented<OrientedPoint2d>
,Oriented2d<OrientedPoint2d>
,Point<Point2d>
The OrientedPoint2d is a point in a 2-dimensional space with an orientation vector, which is specified in terms of its
counter-clockwise rotation around the point in radians.
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
Modifier and TypeFieldDescriptionfinal double
The counter-clockwise rotation around the point in radians. -
Constructor Summary
ConstructorDescriptionOrientedPoint2d
(double[] xy, double dirZ) Construct an oriented point with an x and y coordinate and a direction.OrientedPoint2d
(double x, double y) Construct an oriented point with an x and y coordinate and a direction equal to 0.0.OrientedPoint2d
(double x, double y, double dirZ) Construct an oriented point with an x and y coordinate and a direction.OrientedPoint2d
(Point2D point, double dirZ) Construct an oriented point from an AWT Point2D and a direction.OrientedPoint2d
(Point2d point, double dirZ) Construct an oriented point from a Point2d and a direction. -
Method Summary
Modifier and TypeMethodDescriptionabs()
Return a new Point with absolute coordinate values.boolean
epsilonEquals
(OrientedPoint2d other, double epsilonCoordinate, double epsilonRotation) Compare this Oriented with another Oriented with specified tolerances in the coordinates and the angles.boolean
double
getDirZ()
Return the rotation around the z-axis in radians.Iterator<? extends OrientedPoint2d>
Retrieve, or generate all points that make up the object.int
hashCode()
interpolate
(OrientedPoint2d otherPoint, double fraction) Interpolate towards another Point with a fraction.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 OrientedPoint2d with an in-place rotation around the z-axis by the provided delta.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 Point 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 delta-x, delta-y and delta-z.Methods inherited from class org.djutils.draw.point.Point2d
circleIntersections, closestPointOnLine, closestPointOnLine, closestPointOnLine, closestPointOnSegment, closestPointOnSegment, directionTo, distance, distanceSquared, epsilonEquals, fractionalPositionOnLine, getBounds, getX, getY, interpolate, intersectionOfLines, intersectionOfLines, intersectionOfLines, intersectionOfLineSegments, intersectionOfLineSegments, intersectionOfLineSegments, size, toPoint2D
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
-
Field Details
-
dirZ
public final double dirZThe counter-clockwise rotation around the point in radians.
-
-
Constructor Details
-
OrientedPoint2d
Construct an oriented point with an x and y coordinate and a direction equal to 0.0.- Parameters:
x
- double; the x coordinatey
- double; the y coordinate- Throws:
IllegalArgumentException
- when any coordinate is NaN
-
OrientedPoint2d
Construct an oriented point with an x and y coordinate and a direction.- Parameters:
x
- double; the x coordinatey
- double; the y coordinatedirZ
- double; the counter-clockwise rotation around the point in radians- Throws:
IllegalArgumentException
- when any coordinate or dirZ is NaN
-
OrientedPoint2d
Construct an oriented point with an x and y coordinate and a direction.- Parameters:
xy
- double[]; the x and y coordinatedirZ
- double; the counter-clockwise rotation around the point in radians- Throws:
NullPointerException
- when xy is nullIllegalArgumentException
- when the dimension of xy is not 2 or any value in xy is NaN or rotZ is NaN
-
OrientedPoint2d
Construct an oriented point from an AWT Point2D and a direction.- Parameters:
point
- Point2D; an AWT Point2DdirZ
- double; the counter-clockwise rotation around the point in radians- Throws:
IllegalArgumentException
- when any coordinate in point is NaN, or rotZ is NaN
-
OrientedPoint2d
Construct an oriented point from a Point2d and a direction.- Parameters:
point
- Point2d; a point (with or without orientation)dirZ
- double; the counter-clockwise rotation around the point in radians- Throws:
IllegalArgumentException
- when rotZ is NaN
-
-
Method Details
-
translate
Return a new Point with a translation by the provided dx and dy.- Overrides:
translate
in classPoint2d
- Parameters:
dx
- double; the horizontal translationdy
- double; the vertical translation- Returns:
- P; a new point with the translated coordinates
- Throws:
IllegalArgumentException
- when dx, or dy is NaN
-
translate
Return a new Point3d with a translation by the provided delta-x, delta-y and delta-z. 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:
translate
in classPoint2d
- Parameters:
dx
- double; the x translationdy
- double; the y translationz
- double; the z translation- Returns:
- Point2d; a new point with the translated coordinates
- Throws:
IllegalArgumentException
- when dx, dy, or dz is NaN
-
scale
Return a new Point with the coordinates of this point scaled by the provided factor. -
neg
Return a new Point with negated coordinate values. -
abs
Return a new Point with absolute coordinate values. -
normalize
Return a new Point with a distance of 1 to the origin. -
interpolate
public OrientedPoint2d interpolate(OrientedPoint2d otherPoint, double fraction) throws NullPointerException, IllegalArgumentException Interpolate towards another Point 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
- OrientedPoint2d; the other pointfraction
- double; the factor for interpolation towards the other point. When <code>fraction</code> is between 0 and 1, it is an interpolation, otherwise an extrapolation. Iffraction
is 0;this
Point is returned; iffraction
is 1, the otherpoint
is returned- Returns:
- OrientedPoint2d; a new OrientedPoint2d at the requested fraction
- Throws:
NullPointerException
- when otherPoint is nullIllegalArgumentException
- when fraction is NaN
-
rotate
Return a new OrientedPoint2d with an in-place rotation around the z-axis by the provided delta. The resulting rotation is normalized between -π and π.- Parameters:
rotateZ
- double; the rotation around the z-axis- Returns:
- OrientedPoint; a new point with the same coordinates and applied rotation
- Throws:
IllegalArgumentException
- when deltaRotZ is NaN
-
getDirZ
public double getDirZ()Return the rotation around the z-axis in radians.- Specified by:
getDirZ
in interfaceOriented<OrientedPoint2d>
- Returns:
- double; the rotation around the z-axis in radians
-
getPoints
Retrieve, or generate all points that make up the object. -
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. -
toString
Produce a String describing the Drawable.- Specified by:
toString
in interfaceDrawable<Point2d>
- Overrides:
toString
in classPoint2d
- 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
-
epsilonEquals
public boolean epsilonEquals(OrientedPoint2d other, double epsilonCoordinate, double epsilonRotation) throws NullPointerException, IllegalArgumentException Compare this Oriented with another Oriented with specified tolerances in the coordinates and the angles.- Specified by:
epsilonEquals
in interfaceOriented<OrientedPoint2d>
- Parameters:
other
- O; the point to compare withepsilonCoordinate
- double; the upper bound of difference for one of the coordinates; use Double.POSITIVE_INFINITY if you do not want to check the coordinatesepsilonRotation
- double; the upper bound of difference for the direction(s); use Double.POSITIVE_INFINITY if you do not want to check the angles- Returns:
- boolean; true if x, y, and z are less than epsilonCoordinate apart, and rotX, rotY and rotZ are less than epsilonRotation apart, otherwise false
- Throws:
NullPointerException
- when other is nullIllegalArgumentException
- epsilonCoordinate or epsilonRotation is NaN or negative
-
hashCode
public int hashCode() -
equals
-