math.geom2d.polygon
Class Polyline2D

java.lang.Object
  extended by math.geom2d.curve.AbstractContinuousCurve2D
      extended by math.geom2d.polygon.LinearCurve2D
          extended by math.geom2d.polygon.Polyline2D
All Implemented Interfaces:
java.lang.Cloneable, CirculinearContinuousCurve2D, CirculinearCurve2D, CirculinearShape2D, ContinuousCurve2D, Curve2D, ContinuousOrientedCurve2D, OrientedCurve2D, GeometricObject2D, Shape2D

public class Polyline2D
extends LinearCurve2D
implements CirculinearContinuousCurve2D, java.lang.Cloneable

A polyline is a continuous curve where each piece of the curve is a LineSegment2D.

Author:
dlegland

Field Summary
 
Fields inherited from interface math.geom2d.Shape2D
ACCURACY
 
Constructor Summary
Polyline2D()
           
Polyline2D(java.util.Collection<? extends Point2D> vertices)
           
Polyline2D(double[] xcoords, double[] ycoords)
           
Polyline2D(int nVertices)
          Creates a new polyline by allocating enough memory for the specified number of vertices.
Polyline2D(Point2D... vertices)
           
Polyline2D(Point2D initialPoint)
           
 
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)
          Append the path of the curve to the given path.
 java.awt.geom.GeneralPath asGeneralPath()
          Returns a general path iterator.
 Polyline2D clone()
          Overrides Object declaration to ensure Curve2D implementation are cloned as Curve2D.
 java.util.Collection<? extends Polyline2D> continuousCurves()
          Returns the collection of continuous curves which constitute this curve.
static Polyline2D create(java.util.Collection<? extends Point2D> points)
          Static factory for creating a new Polyline2D from a collection of points.
static Polyline2D create(Point2D... points)
          Static factory for creating a new Polyline2D from an array of points.
 LineSegment2D edge(int index)
          Returns the i-th edge of this linear curve.
 int edgeNumber()
          Returns the number of edges of this linear curve.
 java.util.Collection<LineSegment2D> edges()
          Returns an array of LineSegment2D.
 boolean equals(java.lang.Object object)
           
 double getT1()
          Deprecated. replaced by t1() (since 0.11.1).
 boolean isClosed()
          Returns false, as Polyline2D is open by definition.
 boolean isInside(Point2D pt)
          Returns true if the point is 'inside' the domain bounded by the curve.
 LineSegment2D lastEdge()
           
 Point2D lastPoint()
          Returns the last point of this polyline, or null if the polyline does not contain any point.
 Point2D point(double t)
          Returns the point located at the given position on the curve.
 Polyline2D reverse()
          Returns the polyline with same points considered in reverse order.
 Polyline2D subCurve(double t0, double t1)
          Return an instance of Polyline2D.
 double t1()
          Returns the number of points in the polyline, minus one.
 Polyline2D transform(AffineTransform2D trans)
          Transforms the shape by an affine transform.
 CirculinearContinuousCurve2D transform(CircleInversion2D inv)
          Transforms the shape by a circle inversion.
 double windingAngle(Point2D point)
          Return the angle portion that the curve turn around the given point.
 
Methods inherited from class math.geom2d.polygon.LinearCurve2D
addVertex, boundingBox, buffer, clearVertices, clip, closestVertexIndex, contains, contains, curvature, distance, distance, draw, firstEdge, firstPoint, getT0, insertVertex, intersections, isBounded, isEmpty, isSingular, leftTangent, length, length, parallel, position, position, project, removeVertex, removeVertex, rightTangent, setVertex, signedDistance, signedDistance, singularPoints, smoothPieces, t0, vertex, vertexArray, vertexIterator, vertexNumber, vertices
 
Methods inherited from class math.geom2d.curve.AbstractContinuousCurve2D
asAwtShape, asPolyline
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface math.geom2d.circulinear.CirculinearContinuousCurve2D
clip, parallel, smoothPieces
 
Methods inherited from interface math.geom2d.circulinear.CirculinearCurve2D
length, length, position
 
Methods inherited from interface math.geom2d.circulinear.CirculinearShape2D
buffer
 
Methods inherited from interface math.geom2d.curve.ContinuousCurve2D
asPolyline, curvature, leftTangent, rightTangent
 
Methods inherited from interface math.geom2d.domain.OrientedCurve2D
signedDistance, signedDistance
 
Methods inherited from interface math.geom2d.curve.Curve2D
asAwtShape, draw, firstPoint, getT0, intersections, isSingular, position, project, singularPoints, t0, vertices
 
Methods inherited from interface math.geom2d.Shape2D
boundingBox, contains, contains, distance, distance, isBounded, isEmpty
 

Constructor Detail

Polyline2D

public Polyline2D()

Polyline2D

public Polyline2D(int nVertices)
Creates a new polyline by allocating enough memory for the specified number of vertices.

Parameters:
nVertices -

Polyline2D

public Polyline2D(Point2D initialPoint)

Polyline2D

public Polyline2D(Point2D... vertices)

Polyline2D

public Polyline2D(java.util.Collection<? extends Point2D> vertices)

Polyline2D

public Polyline2D(double[] xcoords,
                  double[] ycoords)
Method Detail

create

public static Polyline2D create(java.util.Collection<? extends Point2D> points)
Static factory for creating a new Polyline2D from a collection of points.

Since:
0.8.1

create

public static Polyline2D create(Point2D... points)
Static factory for creating a new Polyline2D from an array of points.

Since:
0.8.1

edges

public java.util.Collection<LineSegment2D> edges()
Returns an array of LineSegment2D. The number of edges is the number of vertices minus one.

Specified by:
edges in class LinearCurve2D
Returns:
the edges of the polyline

edgeNumber

public int edgeNumber()
Description copied from class: LinearCurve2D
Returns the number of edges of this linear curve.

Specified by:
edgeNumber in class LinearCurve2D

edge

public LineSegment2D edge(int index)
Description copied from class: LinearCurve2D
Returns the i-th edge of this linear curve.

Specified by:
edge in class LinearCurve2D

lastEdge

public LineSegment2D lastEdge()
Specified by:
lastEdge in class LinearCurve2D

transform

public CirculinearContinuousCurve2D transform(CircleInversion2D inv)
Description copied from interface: CirculinearShape2D
Transforms the shape by a circle inversion. The result is still an instance a CirculinearShape2D.

Specified by:
transform in interface CirculinearContinuousCurve2D
Specified by:
transform in interface CirculinearCurve2D
Specified by:
transform in interface CirculinearShape2D
Parameters:
inv - the circle inversion
Returns:
the transformed shape

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

isInside

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

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

isClosed

public boolean isClosed()
Returns false, as Polyline2D is open by definition.

Specified by:
isClosed in interface ContinuousCurve2D

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

t1

public double t1()
Returns the number of points in the polyline, minus one.

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

lastPoint

public Point2D lastPoint()
Returns the last point of this polyline, or null if the polyline does not contain any point.

Specified by:
lastPoint in interface Curve2D
Overrides:
lastPoint in class AbstractContinuousCurve2D
Returns:
the last point of the curve.
See Also:
Curve2D.t1(), Curve2D.point(double)

reverse

public Polyline2D reverse()
Returns the polyline with same points considered in reverse order. Reversed polyline keep same references as original polyline.

Specified by:
reverse in interface CirculinearContinuousCurve2D
Specified by:
reverse in interface CirculinearCurve2D
Specified by:
reverse in interface ContinuousCurve2D
Specified by:
reverse in interface Curve2D
Specified by:
reverse in interface ContinuousOrientedCurve2D
Specified by:
reverse in interface OrientedCurve2D

continuousCurves

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

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

subCurve

public Polyline2D subCurve(double t0,
                           double t1)
Return an instance of Polyline2D. If t1 is lower than t0, return an instance of Polyline2D with zero points.

Specified by:
subCurve in interface CirculinearContinuousCurve2D
Specified by:
subCurve in interface CirculinearCurve2D
Specified by:
subCurve in interface ContinuousCurve2D
Specified by:
subCurve in interface Curve2D
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.

transform

public Polyline2D transform(AffineTransform2D trans)
Description copied from interface: Shape2D
Transforms the shape by an affine transform. Subclasses may override the type of returned shape.

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

asGeneralPath

public java.awt.geom.GeneralPath asGeneralPath()
Returns a general path iterator.

Overrides:
asGeneralPath in class LinearCurve2D

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

equals

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

clone

public Polyline2D 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 AbstractContinuousCurve2D
Returns:
the cloned curve