Package org.djutils.draw.curve
Class Arc2d
java.lang.Object
org.djutils.draw.curve.Arc2d
- All Implemented Interfaces:
Curvature
,Curve<DirectedPoint2d,
,Double, Point2d, Flattener2d, PolyLine2d> Curve2d
,Flattener.FlattableCurve<Point2d,
,Double> OffsetCurve2d
Continuous definition of an arc in 2d.
Copyright (c) 2023-2025 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
Constructor Summary
ConstructorsConstructorDescriptionArc2d
(DirectedPoint2d startPoint, double radius, boolean left, double angle) Define arc by starting point, radius, curve direction, and angle. -
Method Summary
Modifier and TypeMethodDescriptiondouble
getAngle()
Retrieve the total change of direction on this Arc.getDirection
(double fraction) Returns the direction at the given fraction.double
getDirection
(double fraction, ContinuousPiecewiseLinearFunction of) Returns the direction at the given fraction.double
End curvature of this Curve2d..double
End radius of this Curve2d..double
Return the length of this Curve.getPoint
(double fraction) Returns the point at the given fraction of this Curve.getPoint
(double fraction, ContinuousPiecewiseLinearFunction of) Returns the point at the given fraction.double
Start curvature of this Curve2d..double
Start radius of this Curve2d..boolean
isLeft()
Does this arc bend to the left?toPolyLine
(Flattener2d flattener) Flatten a Curve into a PolyLine.toPolyLine
(OffsetFlattener2d flattener, ContinuousPiecewiseLinearFunction offsets) Flatten a Curve2d while offsetting with the provided continuous offset into a PolyLine2d.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.djutils.draw.curve.Curve2d
getEndDirection, getEndPoint, getStartDirection, getStartPoint
Methods inherited from interface org.djutils.draw.curve.OffsetCurve2d
getT
-
Constructor Details
-
Arc2d
Define arc by starting point, radius, curve direction, and angle.- Parameters:
startPoint
- starting pointradius
- radius (must be positive)left
-true
for left turning curve;false
for for right turning curveangle
- angle of arc (must be positive)
-
-
Method Details
-
getStartCurvature
public double getStartCurvature()Description copied from interface:Curvature
Start curvature of this Curve2d..- Specified by:
getStartCurvature
in interfaceCurvature
- Returns:
- start curvature of this Curve2d.
-
getEndCurvature
public double getEndCurvature()Description copied from interface:Curvature
End curvature of this Curve2d..- Specified by:
getEndCurvature
in interfaceCurvature
- Returns:
- end curvature of this Curve2d
-
getStartRadius
public double getStartRadius()Description copied from interface:Curvature
Start radius of this Curve2d..- Specified by:
getStartRadius
in interfaceCurvature
- Returns:
- start radius of this Curve2d
-
getEndRadius
public double getEndRadius()Description copied from interface:Curvature
End radius of this Curve2d..- Specified by:
getEndRadius
in interfaceCurvature
- Returns:
- end radius of this Curve2d
-
isLeft
public boolean isLeft()Does this arc bend to the left?- Returns:
true
if this Arc bends to the left;false
if this Arc bends to the right
-
getAngle
public double getAngle()Retrieve the total change of direction on this Arc.- Returns:
- the total change of direction on this Arc
-
getPoint
Description copied from interface:Curve
Returns the point at the given fraction of this Curve. The fraction may represent any parameter, such as t in a Bézier curve, s in a Clothoid, or simply the fraction of length.- Specified by:
getPoint
in interfaceCurve<DirectedPoint2d,
Double, Point2d, Flattener2d, PolyLine2d> - Specified by:
getPoint
in interfaceFlattener.FlattableCurve<Point2d,
Double> - Parameters:
fraction
- the fraction- Returns:
- the point at the given
fraction
-
getPoint
Description copied from interface:OffsetCurve2d
Returns the point at the given fraction. The fraction may represent any parameter, such as t in a Bézier curve, s in a Clothoid, or simply the fraction of length.- Specified by:
getPoint
in interfaceOffsetCurve2d
- Parameters:
fraction
- the fractionof
- provides fraction-dependent lateral offset to the point- Returns:
- the point at the given
fraction
-
getDirection
Description copied from interface:Curve
Returns the direction at the given fraction. The fraction may represent any parameter, such as t in a Bézier curve, s in a Clothoid, or simply the fraction of length. The default implementation performs a numerical approach by looking at the direction between the points at fraction, and a point 1e-6 away.- Specified by:
getDirection
in interfaceCurve<DirectedPoint2d,
Double, Point2d, Flattener2d, PolyLine2d> - Specified by:
getDirection
in interfaceCurve2d
- Specified by:
getDirection
in interfaceFlattener.FlattableCurve<Point2d,
Double> - Parameters:
fraction
- the fraction- Returns:
- the direction at the given
fraction
-
getDirection
Description copied from interface:OffsetCurve2d
Returns the direction at the given fraction. The fraction may represent any parameter, such as t in a Bézier curve, s in a Clothoid, or simply the fraction of length. The default implementation performs a numerical approach by looking at the direction between the points at fraction, and a point 1e-6 away.- Specified by:
getDirection
in interfaceOffsetCurve2d
- Parameters:
fraction
- the fractionof
- provides fraction-dependent lateral offset to the curve- Returns:
- the direction at the given
fraction
-
toPolyLine
Description copied from interface:Curve
Flatten a Curve into a PolyLine. Implementations should use the flattener when relevant and possible.- Specified by:
toPolyLine
in interfaceCurve<DirectedPoint2d,
Double, Point2d, Flattener2d, PolyLine2d> - Parameters:
flattener
- the flattener- Returns:
- approximation of this
Curve
as aPolyLine
-
toPolyLine
public PolyLine2d toPolyLine(OffsetFlattener2d flattener, ContinuousPiecewiseLinearFunction offsets) Description copied from interface:OffsetCurve2d
Flatten a Curve2d while offsetting with the provided continuous offset into a PolyLine2d. Implementations should use the flattener when relevant and possible.- Specified by:
toPolyLine
in interfaceOffsetCurve2d
- Parameters:
flattener
- OffsetFlatteneroffsets
- offset data- Returns:
- approximation of this
curve2d
with offset as aPolyLine2d
-
getLength
public double getLength()Description copied from interface:Curve
Return the length of this Curve.- Specified by:
getLength
in interfaceCurve<DirectedPoint2d,
Double, Point2d, Flattener2d, PolyLine2d> - Returns:
- length of this Curve
-
toString
-