math.geom2d.conic
Class EllipseArc2D

java.lang.Object
  extended by math.geom2d.conic.EllipseArc2D
All Implemented Interfaces:
java.awt.Shape, ContinuousCurve2D, ContinuousOrientedCurve2D, Curve2D, OrientedCurve2D, SmoothCurve2D, SmoothOrientedCurve2D, Shape2D
Direct Known Subclasses:
CircleArc2D

public class EllipseArc2D
extends java.lang.Object
implements SmoothOrientedCurve2D

An arc of ellipse. It is defined by an ellipse, a starting angle, and a signed angle extent.

Author:
dlegland

Field Summary
protected  double angleExtent
           
protected  Ellipse2D ellipse
           
protected  double startAngle
           
 
Fields inherited from interface math.geom2d.curve.ContinuousCurve2D
CIRCLE, CLOSED_EDGE, LOOP, OPEN_EDGE
 
Fields inherited from interface math.geom2d.Shape2D
ACCURACY, defaultClipWindow, EMPTY_SET
 
Constructor Summary
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 wheter the arc is directed or not.
 
Method Summary
 java.awt.geom.GeneralPath appendPath(java.awt.geom.GeneralPath path)
          Append the path of the curve to the given path.
 CurveSet2D<? extends EllipseArc2D> clip(Box2D box)
          Clip the ellipse arc by a box.
 boolean contains(double x, double y)
           
 boolean contains(double xr, double yr, double wr, double hr)
          return always false, as every curve
 boolean contains(java.awt.geom.Point2D point)
           
 boolean contains(java.awt.geom.Rectangle2D arg0)
          return always false, as every curve
 boolean equals(java.lang.Object obj)
           
 double getAngle(double position)
          Get angle associated to given position
 Polyline2D getAsPolyline(int n)
          Returns an approximation of the curve as a polyline with n line segments.
 Box2D getBoundingBox()
          Returns the bounding box of the shape.
 java.awt.Rectangle getBounds()
          Return bounding box of the shape.
 java.awt.geom.Rectangle2D getBounds2D()
          Return more precise bounds for the shape.
 java.util.Collection<ContinuousCurve2D> getContinuousCurves()
          Returns the collection of continuous curves which constitute this curve.
 double getCurvature(double t)
          returns the curvature of the ellipse arc.
 double getDistance(double x, double y)
          get 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.
 double getDistance(java.awt.geom.Point2D point)
          get 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.
 Point2D getFirstPoint()
          Get the first point of the curve.
protected  java.awt.geom.GeneralPath getGeneralPath()
           
 java.awt.geom.GeneralPath getInnerPath()
           
 java.util.Collection<Point2D> getIntersections(StraightObject2D line)
          Returns the intersection points of the curve with the specified line.
 Point2D getLastPoint()
          Get the last point of the curve.
 java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans)
          Return pathiterator for this ellipse arc.
 java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans, double flatness)
          Return pathiterator for this ellipse arc.
 Point2D getPoint(double t)
          Gets the point from a parametric representation of the curve.
 Point2D getPoint(double t, Point2D point)
          Same as getPoint(t), but gives the point as a parameter.
 double getPosition(Point2D point)
          Get position of the point on the curve.
 EllipseArc2D getReverseCurve()
          returns the ellipse arc which refers to the reversed parent ellipse, with same start angle, and with opposite angle extent.
 double getSignedDistance(double x, double y)
          The same as getSignedDistance(Point2D), but by passing 2 double as arguments.
 double getSignedDistance(java.awt.geom.Point2D p)
          Get the signed distance of the curve to the given point : this distance is positive if the point lies outside the shape, and is negative if the point lies inside the shape.
 java.util.Collection<? extends SmoothCurve2D> getSmoothPieces()
          return a SmoothCurve array containing this ellipse arc.
 EllipseArc2D getSubCurve(double t0, double t1)
          return a new EllipseArc2D.
 double getT0()
          Always returns 0
 double getT1()
          Always returns the absolute value of the angle extent
 Vector2D getTangent(double t)
           
 double getWindingAngle(java.awt.geom.Point2D point)
          Return the angle portion that the curve turn around the given point.
 boolean intersects(double x, double y, double w, double h)
           
 boolean intersects(java.awt.geom.Rectangle2D rect)
           
 boolean isBounded()
          Always return true: an ellipse arc is bounded by definition
 boolean isClosed()
          Return false, as an ellipse arc is never closed.
 boolean isInside(java.awt.geom.Point2D p)
          return true if the point is 'inside' the domain bounded by the curve.
 double project(Point2D point)
          Returns the position of the closest orthogonal projection of the point on the curve, or of the closest singular point.
 EllipseArc2D transform(AffineTransform2D trans)
          Transforms the curve by an affine transform.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ellipse

protected Ellipse2D ellipse

startAngle

protected double startAngle

angleExtent

protected double angleExtent
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 ellipse
start - 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 wheter the arc is directed or not.

Parameters:
ell - the supporting ellipse
start - the starting angle
end - the ending angle
direct - 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

getAngle

public double getAngle(double position)
Get angle associated to given position


getWindingAngle

public double getWindingAngle(java.awt.geom.Point2D point)
Description copied from interface: OrientedCurve2D
Return the angle portion that the curve turn around the given point. Result is a signed angle.

Specified by:
getWindingAngle in interface OrientedCurve2D
Parameters:
point - a point of the plane
Returns:
a signed angle

isInside

public boolean isInside(java.awt.geom.Point2D p)
Description copied from interface: OrientedCurve2D
return true if the point is 'inside' the domain bounded by the curve.

Specified by:
isInside in interface OrientedCurve2D
Parameters:
p - a point in the plane
Returns:
true if the point is on the left side of the curve.

getSignedDistance

public double getSignedDistance(java.awt.geom.Point2D p)
Description copied from interface: OrientedCurve2D
Get the signed distance of the curve to the given point : this distance is positive if the point lies outside the shape, and is negative if the point lies inside the shape. In this case, absolute value of distance is equals to the distance to the border of the shape.

Specified by:
getSignedDistance in interface OrientedCurve2D
Parameters:
p - a point of the plane
Returns:
the signed distance to the curve

getSignedDistance

public double getSignedDistance(double x,
                                double y)
Description copied from interface: OrientedCurve2D
The same as getSignedDistance(Point2D), but by passing 2 double as arguments.

Specified by:
getSignedDistance in interface OrientedCurve2D
Parameters:
x - x-coord of a point
y - y-coord of a point
Returns:
the signed distance of the point (x,y) to the curve

getTangent

public Vector2D getTangent(double t)
Specified by:
getTangent in interface SmoothCurve2D

getCurvature

public double getCurvature(double t)
returns the curvature of the ellipse arc.

Specified by:
getCurvature in interface SmoothCurve2D

getAsPolyline

public Polyline2D getAsPolyline(int n)
Description copied from interface: ContinuousCurve2D
Returns an approximation of the curve as a polyline with n line segments. If the curve is closed, the method should return an instance of ClosedPolyline2D.

Specified by:
getAsPolyline in interface ContinuousCurve2D
Parameters:
n - the number of line segments
Returns:
a closed polyline with n line segments.

isClosed

public boolean isClosed()
Return false, as an ellipse arc is never closed.

Specified by:
isClosed in interface ContinuousCurve2D

getSmoothPieces

public java.util.Collection<? extends SmoothCurve2D> getSmoothPieces()
return a SmoothCurve array containing this ellipse arc.

Specified by:
getSmoothPieces in interface ContinuousCurve2D
See Also:
math.geom2d.ContinuousCurve2D#getSmoothPieces()

getT0

public double getT0()
Always returns 0

Specified by:
getT0 in interface Curve2D

getT1

public double getT1()
Always returns the absolute value of the angle extent

Specified by:
getT1 in interface Curve2D

getPoint

public Point2D getPoint(double t)
Description copied from interface: Curve2D
Gets the point from a parametric representation of 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.

Specified by:
getPoint in interface Curve2D

getPoint

public Point2D getPoint(double t,
                        Point2D point)
Description copied from interface: Curve2D
Same as getPoint(t), but gives the point as a parameter. This avoids repetitive memory allocations.

Specified by:
getPoint in interface Curve2D

getPosition

public double getPosition(Point2D point)
Description copied from interface: Curve2D
Get position of the point on the curve. If the point does not belong to the curve, return Double.NaN.

Specified by:
getPosition in interface Curve2D
Parameters:
point - a point belonging to the curve
Returns:
the position of the point on the curve

project

public double project(Point2D point)
Description copied from interface: Curve2D
Returns 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.

Specified by:
project in interface Curve2D
Parameters:
point - a point to project
Returns:
the position of the closest orthogonal projection

getFirstPoint

public Point2D getFirstPoint()
Get the first point of the curve.

Specified by:
getFirstPoint in interface Curve2D
Returns:
the first point of the curve

getLastPoint

public Point2D getLastPoint()
Get the last point of the curve.

Specified by:
getLastPoint in interface Curve2D
Returns:
the last point of the curve.

getIntersections

public java.util.Collection<Point2D> getIntersections(StraightObject2D line)
Description copied from interface: Curve2D
Returns the intersection points of the curve with the specified line. The length of the result array is the number of intersection points.

Specified by:
getIntersections in interface Curve2D

getReverseCurve

public EllipseArc2D getReverseCurve()
returns the ellipse arc which refers to the reversed parent ellipse, with same start angle, and with opposite angle extent.

Specified by:
getReverseCurve in interface ContinuousCurve2D
Specified by:
getReverseCurve in interface ContinuousOrientedCurve2D
Specified by:
getReverseCurve in interface Curve2D
Specified by:
getReverseCurve in interface OrientedCurve2D
Specified by:
getReverseCurve in interface SmoothCurve2D
Specified by:
getReverseCurve in interface SmoothOrientedCurve2D

getContinuousCurves

public java.util.Collection<ContinuousCurve2D> getContinuousCurves()
Description copied from interface: Curve2D
Returns the collection of continuous curves which constitute this curve.

Specified by:
getContinuousCurves in interface Curve2D
Returns:
a collection of continuous curves.

getSubCurve

public EllipseArc2D getSubCurve(double t0,
                                double t1)
return a new EllipseArc2D.

Specified by:
getSubCurve in interface ContinuousCurve2D
Specified by:
getSubCurve in interface ContinuousOrientedCurve2D
Specified by:
getSubCurve in interface Curve2D
Specified by:
getSubCurve in interface SmoothCurve2D
Specified by:
getSubCurve in interface SmoothOrientedCurve2D
Parameters:
t0 - position of the start of the sub-curve
t1 - position of the end of the sub-curve
Returns:
the portion of original curve comprised between t0 and t1.

getDistance

public double getDistance(java.awt.geom.Point2D point)
Description copied from interface: Shape2D
get 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.

Specified by:
getDistance in interface Shape2D

getDistance

public double getDistance(double x,
                          double y)
Description copied from interface: Shape2D
get 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.

Specified by:
getDistance in interface Shape2D

isBounded

public boolean isBounded()
Always return true: an ellipse arc is bounded by definition

Specified by:
isBounded in interface Shape2D

clip

public CurveSet2D<? extends EllipseArc2D> clip(Box2D box)
Clip 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:
clip in interface ContinuousCurve2D
Specified by:
clip in interface ContinuousOrientedCurve2D
Specified by:
clip in interface Curve2D
Specified by:
clip in interface OrientedCurve2D
Specified by:
clip in interface SmoothCurve2D
Specified by:
clip in interface SmoothOrientedCurve2D
Specified by:
clip in interface Shape2D
Parameters:
box - the clipping box
Returns:
the clipped shape

getBoundingBox

public Box2D getBoundingBox()
Description copied from interface: Shape2D
Returns the bounding box of the shape.

Specified by:
getBoundingBox in interface Shape2D
Returns:
the bounding box of the shape.

transform

public EllipseArc2D transform(AffineTransform2D trans)
Description copied from interface: Curve2D
Transforms the curve by an affine transform. The result is an instance of Curve2D.

Specified by:
transform in interface ContinuousCurve2D
Specified by:
transform in interface ContinuousOrientedCurve2D
Specified by:
transform in interface Curve2D
Specified by:
transform in interface OrientedCurve2D
Specified by:
transform in interface SmoothCurve2D
Specified by:
transform in interface SmoothOrientedCurve2D
Specified by:
transform in interface Shape2D
Parameters:
trans - an affine transform
Returns:
the transformed shape

getBounds

public java.awt.Rectangle getBounds()
Return bounding box of the shape.

Specified by:
getBounds in interface java.awt.Shape

getBounds2D

public java.awt.geom.Rectangle2D getBounds2D()
Return more precise bounds for the shape.

Specified by:
getBounds2D in interface java.awt.Shape

contains

public boolean contains(double x,
                        double y)
Specified by:
contains in interface java.awt.Shape

contains

public boolean contains(java.awt.geom.Point2D point)
Specified by:
contains in interface java.awt.Shape

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
Specified by:
intersects in interface java.awt.Shape

intersects

public boolean intersects(java.awt.geom.Rectangle2D rect)
Specified by:
intersects in interface java.awt.Shape

contains

public boolean contains(double xr,
                        double yr,
                        double wr,
                        double hr)
return always false, as every curve

Specified by:
contains in interface java.awt.Shape

contains

public boolean contains(java.awt.geom.Rectangle2D arg0)
return always false, as every curve

Specified by:
contains in interface java.awt.Shape

appendPath

public java.awt.geom.GeneralPath appendPath(java.awt.geom.GeneralPath path)
Description copied from interface: ContinuousCurve2D
Append the path of the curve to the given path.

Specified by:
appendPath in interface ContinuousCurve2D
Parameters:
path - a path to modify
Returns:
the modified path

getInnerPath

public java.awt.geom.GeneralPath getInnerPath()

getGeneralPath

protected java.awt.geom.GeneralPath getGeneralPath()

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans)
Return pathiterator for this ellipse arc.

Specified by:
getPathIterator in interface java.awt.Shape

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans,
                                                  double flatness)
Return pathiterator for this ellipse arc.

Specified by:
getPathIterator in interface java.awt.Shape

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object