math.geom2d.conic
Class EllipseArc2D
- java.lang.Object
-
- math.geom2d.curve.AbstractContinuousCurve2D
-
- math.geom2d.curve.AbstractSmoothCurve2D
-
- math.geom2d.conic.EllipseArc2D
-
- All Implemented Interfaces:
- java.lang.Cloneable, EllipseArcShape2D, ContinuousCurve2D, Curve2D, SmoothCurve2D, ContinuousOrientedCurve2D, OrientedCurve2D, SmoothOrientedCurve2D, GeometricObject2D, Shape2D
public class EllipseArc2D extends AbstractSmoothCurve2D implements SmoothOrientedCurve2D, EllipseArcShape2D, java.lang.Cloneable
An arc of ellipse. It is defined by a supporting ellipse, a starting angle, and a signed angle extent, both in radians. The ellipse arc is oriented counter-clockwise if angle extent is positive, and clockwise otherwise.
-
-
Constructor Summary
Constructors Constructor and Description EllipseArc2D()Construct a default Ellipse arc, centered on (0,0), with radii equal to 1 and 1, orientation equal to 0, start angle equal to 0, and angle extent equal to PI/2.EllipseArc2D(double xc, double yc, double a, double b, double theta, double start, double extent)Specify parameters of supporting ellipse, start angle, and angle extent.EllipseArc2D(double xc, double yc, double a, double b, double theta, double start, double end, boolean direct)Specify parameters of supporting ellipse, bounding angles and flag for direct ellipse.EllipseArc2D(Ellipse2D ell, double start, double extent)Specify supporting ellipse, start angle and angle extent.EllipseArc2D(Ellipse2D ell, double start, double end, boolean direct)Specify supporting ellipse, start angle and end angle, and a flag indicating whether the arc is directed 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.CurveSet2D<? extends EllipseArc2D>clip(Box2D box)Clips the ellipse arc by a box.EllipseArc2Dclone()booleancontains(double x, double y)Checks if the shape contains the planar point defined by (x,y).booleancontains(Point2D point)Checks if the shape contains the given point.booleancontainsAngle(double angle)java.util.Collection<? extends EllipseArc2D>continuousCurves()Returns the collection of continuous curves which constitute this curve.static EllipseArc2Dcreate(Ellipse2D ell, double start, double extent)Deprecated.since 0.11.1static EllipseArc2Dcreate(Ellipse2D ell, double start, double end, boolean direct)Deprecated.since 0.11.1doublecurvature(double t)Returns the curvature of the ellipse 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 point)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)doublegetAngle(double position)Returns the angle associated with the given positiondoublegetAngleExtent()java.awt.geom.GeneralPathgetGeneralPath()doublegetStartAngle()Ellipse2DgetSupportingEllipse()doublegetT0()Deprecated.replaced by t0() (since 0.11.1).doublegetT1()Deprecated.replaced by t1() (since 0.11.1).java.util.Collection<Point2D>intersections(LinearShape2D line)Returns the intersection points of the curve with the specified line.booleanisBounded()Always return true: an ellipse arc is bounded by definitionbooleanisClosed()Returns false, as an ellipse arc is never closed.booleanisDirect()Returns true if the ellipse arc is direct, i.e.booleanisEmpty()Returns false.booleanisInside(Point2D p)Returns true if the point is 'inside' the domain bounded by the curve.Point2Dpoint(double t)Returns the point located at the given position on the curve.doubleposition(Point2D point)Computes the position of the point on the curve.doubleproject(Point2D point)Returns the position of the closest orthogonal projection of the point on the curve, or of the closest singular point.EllipseArc2Dreverse()Returns the ellipse arc which refers to the reversed parent ellipse, with same start angle, and with opposite angle extent.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 EllipseArc2D>smoothPieces()Returns a collection of curves containing only this circle arc.EllipseArc2DsubCurve(double t0, double t1)Returns a new EllipseArc2D.doublet0()Always returns 0doublet1()Always returns the absolute value of the angle extentVector2Dtangent(double t)Returns the tangent of the curve at the given position.java.lang.StringtoString()EllipseArc2Dtransform(AffineTransform2D trans)Transforms the curve by an affine transform.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
-
EllipseArc2D
public EllipseArc2D()
Construct a default Ellipse arc, centered on (0,0), with radii equal to 1 and 1, orientation equal to 0, start angle equal to 0, and angle extent equal to PI/2.
-
EllipseArc2D
public EllipseArc2D(Ellipse2D ell, double start, double extent)
Specify supporting ellipse, start angle and angle extent.- Parameters:
ell- the supporting ellipsestart- the starting angle (angle between 0 and 2*PI)extent- the angle extent (signed angle)
-
EllipseArc2D
public EllipseArc2D(Ellipse2D ell, double start, double end, boolean direct)
Specify supporting ellipse, start angle and end angle, and a flag indicating whether the arc is directed or not.- Parameters:
ell- the supporting ellipsestart- the starting angleend- the ending angledirect- flag indicating if the arc is direct
-
EllipseArc2D
public EllipseArc2D(double xc, double yc, double a, double b, double theta, double start, double extent)Specify parameters of supporting ellipse, start angle, and angle extent.
-
EllipseArc2D
public EllipseArc2D(double xc, double yc, double a, double b, double theta, double start, double end, boolean direct)Specify parameters of supporting ellipse, bounding angles and flag for direct ellipse.
-
-
Method Detail
-
create
@Deprecated public static EllipseArc2D create(Ellipse2D ell, double start, double extent)
Deprecated. since 0.11.1Specify supporting ellipse, start angle and end angle, and a flag indicating whether the arc is directed or not.- Parameters:
ell- the supporting ellipsestart- the starting angleextent- the (signed) angle extent
-
create
@Deprecated public static EllipseArc2D create(Ellipse2D ell, double start, double end, boolean direct)
Deprecated. since 0.11.1Specify supporting ellipse, start angle and end angle, and a flag indicating whether the arc is directed or not.- Parameters:
ell- the supporting ellipsestart- the starting angleend- the ending angledirect- flag indicating if the arc is direct
-
getSupportingEllipse
public Ellipse2D getSupportingEllipse()
-
getStartAngle
public double getStartAngle()
-
getAngleExtent
public double getAngleExtent()
-
isDirect
public boolean isDirect()
Returns true if the ellipse arc is direct, i.e. if the angle extent is positive (or zero).
-
containsAngle
public boolean containsAngle(double angle)
-
getAngle
public double getAngle(double position)
Returns the angle associated with the given position
-
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 p)
Description copied from interface:OrientedCurve2DReturns true if the point is 'inside' the domain bounded by the curve.- Specified by:
isInsidein interfaceOrientedCurve2D- Parameters:
p- 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 the curvature of the ellipse arc. Curvature is negative if the arc is indirect.- Specified by:
curvaturein interfaceContinuousCurve2D- Parameters:
t- the position on the curve- Returns:
- the curvature of the curve for position t
-
isClosed
public boolean isClosed()
Returns false, as an ellipse arc is never closed.- Specified by:
isClosedin interfaceContinuousCurve2D
-
smoothPieces
public java.util.Collection<? extends EllipseArc2D> smoothPieces()
Returns a collection of curves containing only this circle arc.- Specified by:
smoothPiecesin interfaceContinuousCurve2D- Overrides:
smoothPiecesin classAbstractSmoothCurve2D
-
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() (since 0.11.1).
-
t1
public double t1()
Always returns the absolute value of the angle extent
-
getT1
@Deprecated public double getT1()
Deprecated. replaced by t1() (since 0.11.1).
-
point
public Point2D point(double t)
Description copied from interface:Curve2DReturns the point located at the given position on the curve. If the parameter lies outside the definition range, the parameter corresponding to the closest bound is used instead. This method can be used to draw an approximated outline of a curve, by selecting multiple values for t and drawing lines between them.
-
position
public double position(Point2D point)
Description copied from interface:Curve2DComputes the position of the point on the curve. If the point does not belong to the curve, return Double.NaN. It is complementary to thepoint(double)method.- 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)
-
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.
-
intersections
public java.util.Collection<Point2D> intersections(LinearShape2D line)
Description copied from interface:Curve2DReturns the intersection points of the curve with the specified line. The length of the result array is the number of intersection points.- Specified by:
intersectionsin interfaceCurve2D
-
reverse
public EllipseArc2D reverse()
Returns the ellipse arc which refers to the reversed parent ellipse, with same start angle, and with opposite angle extent.- 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 EllipseArc2D> continuousCurves()
Description copied from interface:Curve2DReturns the collection of continuous curves which constitute this curve.- Specified by:
continuousCurvesin interfaceCurve2D- Overrides:
continuousCurvesin classAbstractContinuousCurve2D- Returns:
- a collection of continuous curves.
-
subCurve
public EllipseArc2D subCurve(double t0, double t1)
Returns a new EllipseArc2D.- 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.
-
distance
public double distance(Point2D point)
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()
Always return true: an ellipse arc is bounded by definition
-
isEmpty
public boolean isEmpty()
Returns false.
-
clip
public CurveSet2D<? extends EllipseArc2D> clip(Box2D box)
Clips the ellipse arc by a box. The result is an instance of CurveSet2D, which contains only instances of EllipseArc2D. If the ellipse arc is not clipped, the result is an instance of CurveSet2D which contains 0 curves.- 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
-
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.
-
transform
public EllipseArc2D transform(AffineTransform2D trans)
Description copied from interface:Curve2DTransforms the curve by an affine transform. The result is an instance of Curve2D.- 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(double x, double y)Description copied from interface:Shape2DChecks if the shape contains the planar point defined by (x,y).
-
contains
public boolean contains(Point2D point)
Description copied from interface:Shape2DChecks if the shape contains the given point.
-
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)
- Overrides:
equalsin classjava.lang.Object
-
clone
public EllipseArc2D clone()
- Specified by:
clonein interfaceCurve2D- Specified by:
clonein classAbstractSmoothCurve2D
-
-
DMelt 3.0 © DataMelt by jWork.ORG