math.geom2d.conic
Class Parabola2D

java.lang.Object
  extended by math.geom2d.curve.AbstractContinuousCurve2D
      extended by math.geom2d.curve.AbstractSmoothCurve2D
          extended by math.geom2d.conic.Parabola2D
All Implemented Interfaces:
java.lang.Cloneable, Conic2D, ContinuousCurve2D, Curve2D, SmoothCurve2D, Boundary2D, ContinuousOrientedCurve2D, Contour2D, OrientedCurve2D, GeometricObject2D, Shape2D

public class Parabola2D
extends AbstractSmoothCurve2D
implements Contour2D, Conic2D, java.lang.Cloneable

A parabola, defined by its vertex, its orientation, and its pedal. Orientation is defined as the orientation of derivative at vertex point, with the second derivative pointing to the top.

Following parametric representation is used:

x(t)=t

y(t)=a*t^2

This is a signed parameter (negative a makes the parabola point to opposite side).

Author:
dlegland

Nested Class Summary
 
Nested classes/interfaces inherited from interface math.geom2d.conic.Conic2D
Conic2D.Type
 
Field Summary
 
Fields inherited from interface math.geom2d.Shape2D
ACCURACY
 
Constructor Summary
Parabola2D()
           
Parabola2D(double xv, double yv, double a, double theta)
           
Parabola2D(Point2D vertex, double a, double theta)
           
 
Method Summary
 boolean almostEquals(GeometricObject2D obj, double eps)
          Checks if the two objects are similar up to a given threshold value.
 java.awt.geom.GeneralPath appendPath(java.awt.geom.GeneralPath path)
          Throws an infiniteShapeException
 Box2D boundingBox()
          Returns the bounding box of the shape.
 CurveSet2D<ParabolaArc2D> clip(Box2D box)
          Clip the parabola by a box.
 Parabola2D clone()
          Overrides Object declaration to ensure Curve2D implementation are cloned as Curve2D.
 double[] conicCoefficients()
          Returns the coefficient of the Cartesian representation of the conic.
 Conic2D.Type conicType()
           
 boolean contains(double x, double y)
          Checks if the shape contains the planar point defined by (x,y).
 boolean contains(Point2D point)
          Checks if the shape contains the given point.
 java.util.Collection<? extends Parabola2D> continuousCurves()
          Returns the collection of continuous curves which constitute this curve.
static Parabola2D create(Point2D vertex, Point2D focus)
          Creates a parabola by supplying the vertex and the focus.
 double curvature(double t)
          Returns the curvature of the parabola at the given position.
 double distance(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. fillable) shape.
 double distance(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.
 Domain2D domain()
          Returns the domain delimited by this boundary.
 double eccentricity()
          Return 1, by definition for a parabola.
 boolean equals(java.lang.Object obj)
           
 void fill(java.awt.Graphics2D g2)
          Throws an infiniteShapeException
 double getAngle()
          Returns orientation angle of parabola.
 Point2D getFocus()
          Returns the focus of the parabola.
 double getFocusDistance()
           
 double getParameter()
           
 double getT0()
          Deprecated. replaced by t0() (since 0.11.1).
 double getT1()
          Deprecated. replaced by t1() (since 0.11.1).
 Vector2D getVector1()
          Returns the first direction vector of the parabola
 Vector2D getVector2()
          Returns the second direction vector of the parabola.
 Point2D getVertex()
           
 java.util.Collection<Point2D> intersections(LinearShape2D line)
          Returns the intersection points of the curve with the specified line.
 boolean isBounded()
          Always returns false, because a parabola is not bounded.
 boolean isClosed()
          Returns false, as a parabola is an open curve.
 boolean isDirect()
          Returns true if the parameter a is positive.
 boolean isEmpty()
          Returns false, as a parabola is never empty.
 boolean isInside(Point2D point)
          Returns true if the point is 'inside' the domain bounded by the curve.
 Point2D point(double t)
          Returns the point located at the given position on the curve.
 double position(Point2D point)
          Returns position of point on the parabola.
 double project(Point2D point)
          Returns position of point on the parabola.
 Parabola2D reverse()
          Returns the parabola with same vertex, direction vector in opposite direction and opposite parameter p.
 double signedDistance(double x, double y)
          The same as distanceSigned(Point2D), but by passing 2 double as arguments.
 double signedDistance(Point2D p)
          Returns the signed distance of the curve to the given point.
 ParabolaArc2D subCurve(double t0, double t1)
          Returns a new ParabolaArc2D, or null if t1
 double t0()
          Returns the parameter of the first point of the line, which is always Double.NEGATIVE_INFINITY.
 double t1()
          Returns the parameter of the last point of the line, which is always Double.POSITIVE_INFINITY.
 Vector2D tangent(double t)
          Returns the tangent of the curve at the given position.
 java.lang.String toString()
           
 Parabola2D transform(AffineTransform2D trans)
          Transforms the parabola by an affine transform.
 double windingAngle(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, smoothPieces, vertices
 
Methods inherited from class math.geom2d.curve.AbstractContinuousCurve2D
asAwtShape, asPolyline, draw, firstPoint, lastPoint
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface math.geom2d.curve.ContinuousCurve2D
asPolyline, leftTangent, rightTangent, smoothPieces
 
Methods inherited from interface math.geom2d.curve.Curve2D
asAwtShape, draw, firstPoint, isSingular, lastPoint, singularPoints, vertices
 

Constructor Detail

Parabola2D

public Parabola2D()

Parabola2D

public Parabola2D(Point2D vertex,
                  double a,
                  double theta)

Parabola2D

public Parabola2D(double xv,
                  double yv,
                  double a,
                  double theta)
Method Detail

create

public static final Parabola2D create(Point2D vertex,
                                      Point2D focus)
Creates a parabola by supplying the vertex and the focus.

Parameters:
vertex - the vertex point of the parabola
focus - the focal point of the parabola
Returns:
the parabola with given vertex and focus

getFocus

public Point2D getFocus()
Returns the focus of the parabola.


getParameter

public double getParameter()

getFocusDistance

public double getFocusDistance()

getVertex

public Point2D getVertex()

getVector1

public Vector2D getVector1()
Returns the first direction vector of the parabola


getVector2

public Vector2D getVector2()
Returns the second direction vector of the parabola.


getAngle

public double getAngle()
Returns orientation angle of parabola. It is defined as the angle of the derivative at the vertex.


isDirect

public boolean isDirect()
Returns true if the parameter a is positive.


conicType

public Conic2D.Type conicType()
Specified by:
conicType in interface Conic2D

conicCoefficients

public double[] conicCoefficients()
Description copied from interface: Conic2D
Returns 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:
conicCoefficients in interface Conic2D

eccentricity

public double eccentricity()
Return 1, by definition for a parabola.

Specified by:
eccentricity in interface Conic2D

domain

public Domain2D domain()
Description copied from interface: Boundary2D
Returns the domain delimited by this boundary.

Specified by:
domain in interface Boundary2D
Returns:
the domain delimited by this boundary

windingAngle

public double windingAngle(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:
windingAngle in interface OrientedCurve2D
Parameters:
point - a point of the plane
Returns:
a signed angle

signedDistance

public double signedDistance(Point2D p)
Description copied from interface: OrientedCurve2D
Returns 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:
signedDistance in interface OrientedCurve2D
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: OrientedCurve2D
The same as distanceSigned(Point2D), but by passing 2 double as arguments.

Specified by:
signedDistance 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

isInside

public boolean isInside(Point2D point)
Description copied from interface: Boundary2D
Returns true if the point is 'inside' the domain bounded by the curve.

Specified by:
isInside in interface Boundary2D
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.

tangent

public Vector2D tangent(double t)
Description copied from interface: SmoothCurve2D
Returns the tangent of the curve at the given position.

Specified by:
tangent in interface SmoothCurve2D
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 parabola at the given position.

Specified by:
curvature in interface ContinuousCurve2D
Parameters:
t - the position on the curve
Returns:
the curvature of the curve for position t

continuousCurves

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

Specified by:
continuousCurves in interface Curve2D
Specified by:
continuousCurves in interface Boundary2D
Overrides:
continuousCurves in class AbstractContinuousCurve2D
Returns:
a collection of continuous curves.

isClosed

public boolean isClosed()
Returns false, as a parabola is an open curve.

Specified by:
isClosed in interface ContinuousCurve2D

t0

public double t0()
Returns the parameter of the first point of the line, which is always Double.NEGATIVE_INFINITY.

Specified by:
t0 in interface Curve2D

getT0

@Deprecated
public double getT0()
Deprecated. replaced by t0() (since 0.11.1).

Specified by:
getT0 in interface Curve2D

t1

public double t1()
Returns the parameter of the last point of the line, which is always Double.POSITIVE_INFINITY.

Specified by:
t1 in interface Curve2D

getT1

@Deprecated
public double getT1()
Deprecated. replaced by t1() (since 0.11.1).

Specified by:
getT1 in interface Curve2D

point

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

Specified by:
point in interface Curve2D

position

public double position(Point2D point)
Returns position of point on the parabola. If point is not on the parabola returns the positions on its "vertical" projection (i.e. its projection parallel to the symetry axis of the parabola).

Specified by:
position in interface Curve2D
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)
Returns position of point on the parabola. If point is not on the parabola returns the positions on its "vertical" projection (i.e. its projection parallel to the symetry axis of the parabola).

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

intersections

public java.util.Collection<Point2D> intersections(LinearShape2D 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:
intersections in interface Curve2D

reverse

public Parabola2D reverse()
Returns the parabola with same vertex, direction vector in opposite direction and opposite parameter p.

Specified by:
reverse in interface Conic2D
Specified by:
reverse in interface ContinuousCurve2D
Specified by:
reverse in interface Curve2D
Specified by:
reverse in interface SmoothCurve2D
Specified by:
reverse in interface Boundary2D
Specified by:
reverse in interface ContinuousOrientedCurve2D
Specified by:
reverse in interface Contour2D
Specified by:
reverse in interface OrientedCurve2D

subCurve

public ParabolaArc2D subCurve(double t0,
                              double t1)
Returns a new ParabolaArc2D, or null if t1
Specified by:
subCurve in interface ContinuousCurve2D
Specified by:
subCurve in interface Curve2D
Specified by:
subCurve in interface SmoothCurve2D
Specified by:
subCurve in interface ContinuousOrientedCurve2D
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.

distance

public double distance(Point2D p)
Description copied from interface: Shape2D
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.

Specified by:
distance in interface Shape2D

distance

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

Specified by:
distance in interface Shape2D

appendPath

public java.awt.geom.GeneralPath appendPath(java.awt.geom.GeneralPath path)
Throws an infiniteShapeException

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

fill

public void fill(java.awt.Graphics2D g2)
Throws an infiniteShapeException

Specified by:
fill in interface Boundary2D
Parameters:
g2 - the Graphics to fill on

isBounded

public boolean isBounded()
Always returns false, because a parabola is not bounded.

Specified by:
isBounded in interface Shape2D

isEmpty

public boolean isEmpty()
Returns false, as a parabola is never empty.

Specified by:
isEmpty in interface Shape2D
Returns:
true if the shape does not contain any point.

clip

public CurveSet2D<ParabolaArc2D> clip(Box2D box)
Clip the parabola by a box. The result is an instance of CurveSet2D, which contains only instances of ParabolaArc2D. If the parabola is not clipped, the result is an instance of CurveSet2D which contains 0 curves.

Specified by:
clip in interface Conic2D
Specified by:
clip in interface ContinuousCurve2D
Specified by:
clip in interface Curve2D
Specified by:
clip in interface SmoothCurve2D
Specified by:
clip in interface ContinuousOrientedCurve2D
Specified by:
clip in interface OrientedCurve2D
Specified by:
clip in interface Shape2D
Parameters:
box - the clipping box
Returns:
the clipped shape

boundingBox

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

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

transform

public Parabola2D transform(AffineTransform2D trans)
Transforms the parabola by an affine transform. The transformed parabola is direct if this parabola and the affine transform are both either direct or indirect.

Specified by:
transform in interface Conic2D
Specified by:
transform in interface ContinuousCurve2D
Specified by:
transform in interface Curve2D
Specified by:
transform in interface SmoothCurve2D
Specified by:
transform in interface Boundary2D
Specified by:
transform in interface ContinuousOrientedCurve2D
Specified by:
transform in interface Contour2D
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)
Description copied from interface: Shape2D
Checks if the shape contains the planar point defined by (x,y).

Specified by:
contains in interface Shape2D

contains

public boolean contains(Point2D point)
Description copied from interface: Shape2D
Checks if the shape contains the given point.

Specified by:
contains in interface Shape2D

almostEquals

public boolean almostEquals(GeometricObject2D obj,
                            double eps)
Description copied from interface: GeometricObject2D
Checks 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:
almostEquals in interface GeometricObject2D
Parameters:
obj - the object to compare
eps - 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:
toString in class java.lang.Object

equals

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

clone

public Parabola2D clone()
Description copied from interface: Curve2D
Overrides Object declaration to ensure Curve2D implementation are cloned as Curve2D.

Specified by:
clone in interface Curve2D
Specified by:
clone in class AbstractSmoothCurve2D
Returns:
the cloned curve