math.geom2d.conic
Class ParametricConic2D

java.lang.Object
  extended by math.geom2d.conic.ParametricConic2D
All Implemented Interfaces:
java.awt.Shape, Conic2D, Curve2D, OrientedCurve2D, Shape2D

public class ParametricConic2D
extends java.lang.Object
implements Curve2D, Conic2D

A parametric Conic is defined directly from its parametric equation:

a*x^2 + b*x*y + c*y^2 + d*x + e*y + f

Author:
Legland

Field Summary
protected  double a
           
protected  double b
           
protected  double c
           
protected  Conic2D conic
          the reduced conic.
protected  double d
           
protected  double e
           
protected  double f
           
protected  int type
           
 
Fields inherited from interface math.geom2d.conic.Conic2D
CIRCLE, ELLIPSE, HYPERBOLA, NOT_A_CONIC, PARABOLA, POINT, STRAIGHT_LINE, TWO_LINES
 
Fields inherited from interface math.geom2d.Shape2D
ACCURACY, defaultClipWindow, EMPTY_SET
 
Constructor Summary
ParametricConic2D(double[] parameters)
           
ParametricConic2D(double a, double b, double c, double d, double e, double f)
           
 
Method Summary
 CurveSet2D<? extends ContinuousOrientedCurve2D> clip(Box2D box)
          When a curve is clipped, the result is a set of curves.
 boolean contains(double x, double y)
           
 boolean contains(double arg0, double arg1, double arg2, double arg3)
           
 boolean contains(java.awt.geom.Point2D point)
           
 boolean contains(java.awt.geom.Rectangle2D arg0)
           
 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.
 double[] getCartesianEquation()
          Return the coefficient of the cartesian representation of the conic.
 int getConicType()
           
 java.util.Collection<? extends ContinuousCurve2D> getContinuousCurves()
          Returns the collection of continuous curves which constitute this curve.
 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 p)
          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.
 double getEccentricity()
          Return eccentricity of the conic.
 Point2D getFirstPoint()
          Get the first point of the curve.
 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)
           
 java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans, double flatness)
           
 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.
 Conic2D getReverseCurve()
          Returns the curve with same trace on the plane with parametrization in reverse order.
 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.
 Curve2D getSubCurve(double t0, double t1)
          Returns a portion of the original curve, delimited by two positions on the curve.
 double getT0()
          Get value of parameter t for the first point of the curve.
 double getT1()
          Get value of parameter t for the last point of the curve.
 double getWindingAngle(java.awt.geom.Point2D point)
          Return the angle portion that the curve turn around the given point.
 boolean intersects(double arg0, double arg1, double arg2, double arg3)
           
 boolean intersects(java.awt.geom.Rectangle2D rect)
           
 boolean isBounded()
          Returns true if the shape is bounded, that is if we can draw a finite rectangle enclosing the shape.
 boolean isInside(java.awt.geom.Point2D point)
          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.
 Conic2D transform(AffineTransform2D trans)
          Transforms the curve by an affine transform.
protected  void updateParameters()
          When internal parameters are modified, recompute type, focal...
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

a

protected double a

b

protected double b

c

protected double c

d

protected double d

e

protected double e

f

protected double f

type

protected int type

conic

protected Conic2D conic
the reduced conic. Its class is given by the integer "type".

Constructor Detail

ParametricConic2D

public ParametricConic2D(double[] parameters)

ParametricConic2D

public ParametricConic2D(double a,
                         double b,
                         double c,
                         double d,
                         double e,
                         double f)
Method Detail

getConicType

public int getConicType()
Specified by:
getConicType in interface Conic2D

getCartesianEquation

public double[] getCartesianEquation()
Description copied from interface: Conic2D
Return the coefficient of the cartesian representation of the conic. Cartesian equation has the form :

a*x^2 + b*x*y + c*y^2 + d*x + e*y + f

The length of the array is then of size 6.

Specified by:
getCartesianEquation in interface Conic2D

getEccentricity

public double getEccentricity()
Description copied from interface: Conic2D
Return eccentricity of the conic.

Specified by:
getEccentricity in interface Conic2D

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 point)
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:
point - a point in the plane
Returns:
true if the point is on the left side 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

getT0

public double getT0()
Description copied from interface: Curve2D
Get value of parameter t for the first point of the curve. It can be -Infinity, in this case the piece of curve is not bounded.

Specified by:
getT0 in interface Curve2D

getT1

public double getT1()
Description copied from interface: Curve2D
Get value of parameter t for the last point of the curve. It can be +Infinity, in this case the piece of curve is not bounded.

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

getFirstPoint

public Point2D getFirstPoint()
Description copied from interface: Curve2D
Get the first point of the curve. It must returns the same result as getPoint(getT0()).

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

getLastPoint

public Point2D getLastPoint()
Description copied from interface: Curve2D
Get the last point of the curve. It must returns the same result as getPoint(getT1()).

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

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

getReverseCurve

public Conic2D getReverseCurve()
Description copied from interface: Curve2D
Returns the curve with same trace on the plane with parametrization in reverse order.

Specified by:
getReverseCurve in interface Conic2D
Specified by:
getReverseCurve in interface Curve2D
Specified by:
getReverseCurve in interface OrientedCurve2D

getContinuousCurves

public java.util.Collection<? extends 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 Curve2D getSubCurve(double t0,
                           double t1)
Description copied from interface: Curve2D
Returns a portion of the original curve, delimited by two positions on the curve.

Specified by:
getSubCurve in interface Curve2D
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 p)
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

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

isBounded

public boolean isBounded()
Description copied from interface: Shape2D
Returns true if the shape is bounded, that is if we can draw a finite rectangle enclosing the shape. For example, a straight line or a parabola are not bounded.

Specified by:
isBounded in interface Shape2D

clip

public CurveSet2D<? extends ContinuousOrientedCurve2D> clip(Box2D box)
Description copied from interface: Curve2D
When a curve is clipped, the result is a set of curves.

Specified by:
clip in interface Conic2D
Specified by:
clip in interface Curve2D
Specified by:
clip in interface OrientedCurve2D
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 Conic2D 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 Conic2D
Specified by:
transform in interface Curve2D
Specified by:
transform in interface OrientedCurve2D
Specified by:
transform in interface Shape2D
Parameters:
trans - an affine transform
Returns:
the transformed shape

contains

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

contains

public boolean contains(double arg0,
                        double arg1,
                        double arg2,
                        double arg3)
Specified by:
contains in interface java.awt.Shape

intersects

public boolean intersects(double arg0,
                          double arg1,
                          double arg2,
                          double arg3)
Specified by:
intersects in interface java.awt.Shape

contains

public boolean contains(java.awt.geom.Point2D point)
Specified by:
contains in interface java.awt.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(java.awt.geom.Rectangle2D arg0)
Specified by:
contains in interface java.awt.Shape

intersects

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

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans)
Specified by:
getPathIterator in interface java.awt.Shape

getPathIterator

public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform trans,
                                                  double flatness)
Specified by:
getPathIterator in interface java.awt.Shape

updateParameters

protected void updateParameters()
When internal parameters are modified, recompute type, focal...