math.geom2d.conic
Class CircleArc2D
- java.lang.Object
-
- math.geom2d.curve.AbstractContinuousCurve2D
-
- math.geom2d.curve.AbstractSmoothCurve2D
-
- math.geom2d.conic.CircleArc2D
-
- All Implemented Interfaces:
- java.lang.Cloneable, CirculinearContinuousCurve2D, CirculinearCurve2D, CirculinearElement2D, CirculinearShape2D, CircularShape2D, EllipseArcShape2D, ContinuousCurve2D, Curve2D, SmoothCurve2D, ContinuousOrientedCurve2D, OrientedCurve2D, SmoothOrientedCurve2D, GeometricObject2D, Shape2D
public class CircleArc2D extends AbstractSmoothCurve2D implements EllipseArcShape2D, CircularShape2D, CirculinearElement2D, java.lang.Cloneable
A circle arc, defined by the center and the radius of the containing circle, by a starting angle, and by a (signed) angle extent.A circle arc is directed: if angle extent is positive, the arc is counter clockwise. Otherwise, it is clockwise.
A circle arc is parameterized using angle from center. The arc contains all points with a parametric equation of t, for each t between 0 and the angle extent.
-
-
Constructor Summary
Constructors Constructor and Description CircleArc2D()Create a circle arc whose support circle is centered on (0,0) and has a radius equal to 1.CircleArc2D(Circle2D circle, double startAngle, double angleExtent)create a new circle arc based on an already existing circle.CircleArc2D(Circle2D circle, double startAngle, double endAngle, boolean direct)create a new circle arc based on an already existing circle, specifying if arc is direct or not.CircleArc2D(double xc, double yc, double r, double start, double extent)Base constructor with all parameters specifiedCircleArc2D(double xc, double yc, double r, double startAngle, double endAngle, boolean direct)Base constructor, for constructing arc from circle parameters, start and end angles, and by specifying whether arc is direct or not.CircleArc2D(Point2D center, double radius, double startAngle, double angleExtent)Create a new circle arc with specified point center and radiusCircleArc2D(Point2D center, double radius, double start, double end, boolean direct)Create a new circle arc with specified point center and radius, start and end angles, and by specifying whether arc is direct or not.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method and Description booleanalmostEquals(GeometricObject2D obj, double eps)Checks if the two objects are similar up to a given threshold value.java.awt.geom.GeneralPathappendPath(java.awt.geom.GeneralPath path)Append the path of the curve to the given path.Polyline2DasPolyline(int n)Converts this continuous curve to an instance of LinearCurve2D with the given number of edges.Box2DboundingBox()Returns the bounding box of the shape.CirculinearDomain2Dbuffer(double dist)Computes the buffer of the shape, formed by the set of points located at a distance from the shape that is lower or equal to d.CurveSet2D<CircleArc2D>clip(Box2D box)Clips the circle arc by a box.CircleArc2Dclone()Deprecated.use copy constructor instead (0.11.2)booleancontains(double x, double y)Checks if the shape contains the planar point defined by (x,y).booleancontains(Point2D p)Checks if the shape contains the given point.booleancontainsAngle(double angle)java.util.Collection<? extends CircleArc2D>continuousCurves()Returns a collection of curves containing only this circle arc.static CircleArc2Dcreate(Circle2D support, double startAngle, double angleExtent)Deprecated.since 0.11.1static CircleArc2Dcreate(Circle2D support, double startAngle, double endAngle, boolean direct)Deprecated.since 0.11.1static CircleArc2Dcreate(Point2D center, double radius, double startAngle, double angleExtent)Deprecated.since 0.11.1static CircleArc2Dcreate(Point2D center, double radius, double startAngle, double endAngle, boolean direct)Deprecated.since 0.11.1doublecurvature(double t)Returns curvature of the circle arc.doubledistance(double x, double y)Returns the distance of the shape to the given point, specified by x and y, or the distance of point to the frontier of the shape in the case of a plain (i.e.doubledistance(Point2D p)Returns the distance of the shape to the given point, or the distance of point to the frontier of the shape in the case of a plain shape.voiddraw(java.awt.Graphics2D g2)Draws the curve on the given Graphics2D object.booleanequals(java.lang.Object obj)Two circle arc are equal if the have same center, same radius, same starting and ending angles, and same orientation.doublegetAngle(double position)Returns the angle associated with the given positiondoublegetAngleExtent()java.awt.geom.GeneralPathgetGeneralPath()doublegetStartAngle()doublegetT0()Deprecated.replaced by t0()doublegetT1()Deprecated.replaced by t1()java.util.Collection<Point2D>intersections(LinearShape2D line)Computes intersections of the circle arc with a line.booleanisBounded()Returns true, as a circle arc is bounded by definition.booleanisClosed()Returns false, as a circle arc is never closed by definition.booleanisDirect()Returns true if the circle arc is direct, i.e.booleanisEmpty()Returns false.booleanisInside(Point2D point)Returns true if the point is 'inside' the domain bounded by the curve.doublelength()doublelength(double pos)CircleArc2Dparallel(double dist)Returns the circle arc parallel to this circle arc, at the distance dist.Point2Dpoint(double t)Returns the position of a point form the curvilinear position.doubleposition(double length)doubleposition(Point2D point)Returns relative position between 0 and the angle extent.doubleproject(Point2D point)Returns the position of the closest orthogonal projection of the point on the curve, or of the closest singular point.CircleArc2Dreverse()Returns the circle arc which refers to the same parent circle, but with exchanged extremities.doublesignedDistance(double x, double y)The same as distanceSigned(Point2D), but by passing 2 double as arguments.doublesignedDistance(Point2D p)Returns the signed distance of the curve to the given point.java.util.Collection<? extends CircleArc2D>smoothPieces()Returns a collection of curves containing only this circle arc.CircleArc2DsubCurve(double t0, double t1)Returns a new CircleArc2D.Circle2DsupportingCircle()Returns the circle that contains the circle arc.doublet0()Returns 0.doublet1()Returns the last position of the circle are, which is given by the absolute angle of angle extent of this arc.Vector2Dtangent(double t)Returns the tangent of the curve at the given position.java.lang.StringtoString()EllipseArcShape2Dtransform(AffineTransform2D trans)Returns an instance of EllipseArc2D, or CircleArc2D if transform is a similarity.CirculinearElement2Dtransform(CircleInversion2D inv)Transforms the shape by a circle inversion.doublewindingAngle(Point2D point)Return the angle portion that the curve turn around the given point.-
Methods inherited from class math.geom2d.curve.AbstractSmoothCurve2D
isSingular, leftTangent, normal, rightTangent, singularPoints, vertices
-
Methods inherited from class math.geom2d.curve.AbstractContinuousCurve2D
asAwtShape, firstPoint, lastPoint
-
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface math.geom2d.curve.SmoothCurve2D
normal
-
Methods inherited from interface math.geom2d.curve.ContinuousCurve2D
leftTangent, rightTangent
-
Methods inherited from interface math.geom2d.curve.Curve2D
asAwtShape, firstPoint, isSingular, lastPoint, singularPoints, vertices
-
-
-
-
Constructor Detail
-
CircleArc2D
public CircleArc2D()
Create a circle arc whose support circle is centered on (0,0) and has a radius equal to 1. Start angle is 0, and angle extent is PI/2.
-
CircleArc2D
public CircleArc2D(Circle2D circle, double startAngle, double angleExtent)
create a new circle arc based on an already existing circle.
-
CircleArc2D
public CircleArc2D(Circle2D circle, double startAngle, double endAngle, boolean direct)
create a new circle arc based on an already existing circle, specifying if arc is direct or not.
-
CircleArc2D
public CircleArc2D(Point2D center, double radius, double startAngle, double angleExtent)
Create a new circle arc with specified point center and radius
-
CircleArc2D
public CircleArc2D(Point2D center, double radius, double start, double end, boolean direct)
Create a new circle arc with specified point center and radius, start and end angles, and by specifying whether arc is direct or not.
-
CircleArc2D
public CircleArc2D(double xc, double yc, double r, double startAngle, double endAngle, boolean direct)Base constructor, for constructing arc from circle parameters, start and end angles, and by specifying whether arc is direct or not.
-
CircleArc2D
public CircleArc2D(double xc, double yc, double r, double start, double extent)Base constructor with all parameters specified
-
-
Method Detail
-
create
@Deprecated public static CircleArc2D create(Circle2D support, double startAngle, double angleExtent)
Deprecated. since 0.11.1
-
create
@Deprecated public static CircleArc2D create(Circle2D support, double startAngle, double endAngle, boolean direct)
Deprecated. since 0.11.1
-
create
@Deprecated public static CircleArc2D create(Point2D center, double radius, double startAngle, double angleExtent)
Deprecated. since 0.11.1
-
create
@Deprecated public static CircleArc2D create(Point2D center, double radius, double startAngle, double endAngle, boolean direct)
Deprecated. since 0.11.1
-
isDirect
public boolean isDirect()
Returns true if the circle arc is direct, i.e. if the angle extent is positive.
-
getStartAngle
public double getStartAngle()
-
getAngleExtent
public double getAngleExtent()
-
containsAngle
public boolean containsAngle(double angle)
-
getAngle
public double getAngle(double position)
Returns the angle associated with the given position
-
supportingCircle
public Circle2D supportingCircle()
Returns the circle that contains the circle arc.- Specified by:
supportingCirclein interfaceCircularShape2D
-
buffer
public CirculinearDomain2D buffer(double dist)
Description copied from interface:CirculinearShape2DComputes the buffer of the shape, formed by the set of points located at a distance from the shape that is lower or equal to d.- Specified by:
bufferin interfaceCirculinearShape2D- Parameters:
dist- the maximal distance between a point of the buffer and the shape- Returns:
- the buffer of the shape
-
parallel
public CircleArc2D parallel(double dist)
Returns the circle arc parallel to this circle arc, at the distance dist.- Specified by:
parallelin interfaceCirculinearContinuousCurve2D- Specified by:
parallelin interfaceCirculinearCurve2D- Specified by:
parallelin interfaceCirculinearElement2D- Parameters:
dist- the distance between the original curve and he parallel curve.- Returns:
- the parallel curve
-
length
public double length()
- Specified by:
lengthin interfaceCirculinearCurve2D- Returns:
- the length of the curve
-
length
public double length(double pos)
- Specified by:
lengthin interfaceCirculinearCurve2D- Returns:
- the length from the beginning to the position given by pos
-
position
public double position(double length)
- Specified by:
positionin interfaceCirculinearCurve2D- Returns:
- the position located at a given geodesic distance from the origin
-
transform
public CirculinearElement2D transform(CircleInversion2D inv)
Description copied from interface:CirculinearShape2DTransforms the shape by a circle inversion. The result is still an instance a CirculinearShape2D.- Specified by:
transformin interfaceCirculinearContinuousCurve2D- Specified by:
transformin interfaceCirculinearCurve2D- Specified by:
transformin interfaceCirculinearElement2D- Specified by:
transformin interfaceCirculinearShape2D- Parameters:
inv- the circle inversion- Returns:
- the transformed shape
-
windingAngle
public double windingAngle(Point2D point)
Description copied from interface:OrientedCurve2DReturn the angle portion that the curve turn around the given point. Result is a signed angle.- Specified by:
windingAnglein interfaceOrientedCurve2D- Parameters:
point- a point of the plane- Returns:
- a signed angle
-
isInside
public boolean isInside(Point2D point)
Description copied from interface:OrientedCurve2DReturns true if the point is 'inside' the domain bounded by the curve.- Specified by:
isInsidein interfaceOrientedCurve2D- Parameters:
point- a point in the plane- Returns:
- true if the point is on the left side of the curve.
-
signedDistance
public double signedDistance(Point2D p)
Description copied from interface:OrientedCurve2DReturns the signed distance of the curve to the given point. The distance is positive if the point lies outside the shape, and negative if the point lies inside the shape. In both cases, absolute value of distance is equals to the distance to the border of the shape.- Specified by:
signedDistancein interfaceOrientedCurve2D- Parameters:
p- a point of the plane- Returns:
- the signed distance to the curve
-
signedDistance
public double signedDistance(double x, double y)Description copied from interface:OrientedCurve2DThe same as distanceSigned(Point2D), but by passing 2 double as arguments.- Specified by:
signedDistancein interfaceOrientedCurve2D- Parameters:
x- x-coord of a pointy- y-coord of a point- Returns:
- the signed distance of the point (x,y) to the curve
-
tangent
public Vector2D tangent(double t)
Description copied from interface:SmoothCurve2DReturns the tangent of the curve at the given position.- Specified by:
tangentin interfaceSmoothCurve2D- Parameters:
t- a position on the curve- Returns:
- the tangent vector computed for position t
- See Also:
SmoothCurve2D.normal(double)
-
curvature
public double curvature(double t)
Returns curvature of the circle arc. This is the same as the curvature of the parent circle, with a control on the sign that depends on the orientation.- Specified by:
curvaturein interfaceContinuousCurve2D- Parameters:
t- the position on the curve- Returns:
- the curvature of the curve for position t
-
smoothPieces
public java.util.Collection<? extends CircleArc2D> smoothPieces()
Returns a collection of curves containing only this circle arc.- Specified by:
smoothPiecesin interfaceCirculinearContinuousCurve2D- Specified by:
smoothPiecesin interfaceContinuousCurve2D- Overrides:
smoothPiecesin classAbstractSmoothCurve2D
-
isClosed
public boolean isClosed()
Returns false, as a circle arc is never closed by definition.- Specified by:
isClosedin interfaceContinuousCurve2D
-
asPolyline
public Polyline2D asPolyline(int n)
Description copied from class:AbstractContinuousCurve2DConverts this continuous curve to an instance of LinearCurve2D with the given number of edges. Returns either an instance of Polyline2D or LinearRing2D, depending on the curve is closed or not. This method can be overridden to return the correct type.- Specified by:
asPolylinein interfaceContinuousCurve2D- Overrides:
asPolylinein classAbstractContinuousCurve2D- Parameters:
n- the number of line segments- Returns:
- a polyline with
nline segments. - See Also:
ContinuousCurve2D.asPolyline(int)
-
getT0
@Deprecated public double getT0()
Deprecated. replaced by t0()
-
t1
public double t1()
Returns the last position of the circle are, which is given by the absolute angle of angle extent of this arc.
-
getT1
@Deprecated public double getT1()
Deprecated. replaced by t1()
-
point
public Point2D point(double t)
Returns the position of a point form the curvilinear position.
-
position
public double position(Point2D point)
Returns relative position between 0 and the angle extent.- Specified by:
positionin interfaceCurve2D- Parameters:
point- a point belonging to the curve- Returns:
- the position of the point on the curve
- See Also:
Curve2D.point(double)
-
intersections
public java.util.Collection<Point2D> intersections(LinearShape2D line)
Computes intersections of the circle arc with a line. Return an array of Point2D, of size 0, 1 or 2 depending on the distance between circle and line. If there are 2 intersections points, the first one in the array is the first one on the line.- Specified by:
intersectionsin interfaceCurve2D
-
project
public double project(Point2D point)
Description copied from interface:Curve2DReturns the position of the closest orthogonal projection of the point on the curve, or of the closest singular point. This function should always returns a valid value.
-
subCurve
public CircleArc2D subCurve(double t0, double t1)
Returns a new CircleArc2D. Variables t0 and t1 must be comprised between 0 and the angle extent of the arc.- Specified by:
subCurvein interfaceCirculinearContinuousCurve2D- Specified by:
subCurvein interfaceCirculinearCurve2D- Specified by:
subCurvein interfaceCirculinearElement2D- Specified by:
subCurvein interfaceCircularShape2D- Specified by:
subCurvein interfaceEllipseArcShape2D- Specified by:
subCurvein interfaceContinuousCurve2D- Specified by:
subCurvein interfaceCurve2D- Specified by:
subCurvein interfaceSmoothCurve2D- Specified by:
subCurvein interfaceContinuousOrientedCurve2D- Specified by:
subCurvein interfaceSmoothOrientedCurve2D- Parameters:
t0- position of the start of the sub-curvet1- position of the end of the sub-curve- Returns:
- the portion of original curve comprised between t0 and t1.
-
reverse
public CircleArc2D reverse()
Returns the circle arc which refers to the same parent circle, but with exchanged extremities.- Specified by:
reversein interfaceCirculinearContinuousCurve2D- Specified by:
reversein interfaceCirculinearCurve2D- Specified by:
reversein interfaceCirculinearElement2D- Specified by:
reversein interfaceCircularShape2D- Specified by:
reversein interfaceEllipseArcShape2D- Specified by:
reversein interfaceContinuousCurve2D- Specified by:
reversein interfaceCurve2D- Specified by:
reversein interfaceSmoothCurve2D- Specified by:
reversein interfaceContinuousOrientedCurve2D- Specified by:
reversein interfaceOrientedCurve2D- Specified by:
reversein interfaceSmoothOrientedCurve2D
-
continuousCurves
public java.util.Collection<? extends CircleArc2D> continuousCurves()
Returns a collection of curves containing only this circle arc.- Specified by:
continuousCurvesin interfaceCirculinearCurve2D- Specified by:
continuousCurvesin interfaceCurve2D- Overrides:
continuousCurvesin classAbstractContinuousCurve2D- Returns:
- a collection of continuous curves.
-
distance
public double distance(Point2D p)
Description copied from interface:Shape2DReturns the distance of the shape to the given point, or the distance of point to the frontier of the shape in the case of a plain shape.
-
distance
public double distance(double x, double y)Description copied from interface:Shape2DReturns the distance of the shape to the given point, specified by x and y, or the distance of point to the frontier of the shape in the case of a plain (i.e. fillable) shape.
-
isBounded
public boolean isBounded()
Returns true, as a circle arc is bounded by definition.
-
clip
public CurveSet2D<CircleArc2D> clip(Box2D box)
Clips the circle arc by a box. The result is a CurveSet2D, which contains only instances of CircleArc2D. If circle arc is not clipped, the result is an instance of CurveSet2D with zero curves.- Specified by:
clipin interfaceCirculinearContinuousCurve2D- Specified by:
clipin interfaceCirculinearCurve2D- Specified by:
clipin interfaceCirculinearElement2D- Specified by:
clipin interfaceCircularShape2D- Specified by:
clipin interfaceContinuousCurve2D- Specified by:
clipin interfaceCurve2D- Specified by:
clipin interfaceSmoothCurve2D- Specified by:
clipin interfaceContinuousOrientedCurve2D- Specified by:
clipin interfaceOrientedCurve2D- Specified by:
clipin interfaceSmoothOrientedCurve2D- Specified by:
clipin interfaceShape2D- Parameters:
box- the clipping box- Returns:
- the clipped shape
-
transform
public EllipseArcShape2D transform(AffineTransform2D trans)
Returns an instance of EllipseArc2D, or CircleArc2D if transform is a similarity.- Specified by:
transformin interfaceEllipseArcShape2D- Specified by:
transformin interfaceContinuousCurve2D- Specified by:
transformin interfaceCurve2D- Specified by:
transformin interfaceSmoothCurve2D- Specified by:
transformin interfaceContinuousOrientedCurve2D- Specified by:
transformin interfaceOrientedCurve2D- Specified by:
transformin interfaceSmoothOrientedCurve2D- Specified by:
transformin interfaceShape2D- Parameters:
trans- an affine transform- Returns:
- the transformed shape
-
contains
public boolean contains(Point2D p)
Description copied from interface:Shape2DChecks if the shape contains the given point.
-
contains
public boolean contains(double x, double y)Description copied from interface:Shape2DChecks if the shape contains the planar point defined by (x,y).
-
isEmpty
public boolean isEmpty()
Returns false.
-
boundingBox
public Box2D boundingBox()
Description copied from interface:Shape2DReturns the bounding box of the shape.- Specified by:
boundingBoxin interfaceShape2D- Returns:
- the bounding box of the shape.
-
appendPath
public java.awt.geom.GeneralPath appendPath(java.awt.geom.GeneralPath path)
Description copied from interface:ContinuousCurve2DAppend the path of the curve to the given path.- Specified by:
appendPathin interfaceContinuousCurve2D- Parameters:
path- a path to modify- Returns:
- the modified path
-
getGeneralPath
public java.awt.geom.GeneralPath getGeneralPath()
-
draw
public void draw(java.awt.Graphics2D g2)
Description copied from interface:Curve2DDraws the curve on the given Graphics2D object.
-
almostEquals
public boolean almostEquals(GeometricObject2D obj, double eps)
Description copied from interface:GeometricObject2DChecks if the two objects are similar up to a given threshold value. This method can be used to compare the results of geometric computations, that introduce errors due to numerical computations.- Specified by:
almostEqualsin interfaceGeometricObject2D- Parameters:
obj- the object to compareeps- a threshold value, for example the minimal coordinate difference- Returns:
- true if both object have the same value up to the threshold
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
Two circle arc are equal if the have same center, same radius, same starting and ending angles, and same orientation.- Overrides:
equalsin classjava.lang.Object
-
clone
@Deprecated public CircleArc2D clone()
Deprecated. use copy constructor instead (0.11.2)- Specified by:
clonein interfaceCurve2D- Specified by:
clonein classAbstractSmoothCurve2D
-
-
DMelt 3.0 © DataMelt by jWork.ORG