org.apache.batik.ext.awt.geom
public class PathLength extends Object
PathLength is a utility class for calculating the length of a path, the location of a point at a particular length along the path, and the angle of the tangent to the path at a given length.
It uses a FlatteningPathIterator to create a flattened version of the Path. This means the values returned are not always exact (in fact, they rarely are), but in most cases they are reasonably accurate.
Nested Class Summary | |
---|---|
protected static class | PathLength.PathSegment
A single path segment in the flattened version of the path.
|
protected static class | PathLength.SingleSegmentPathIterator
A {@link PathIterator} that returns only the next path segment from
another {@link PathIterator}. |
Field Summary | |
---|---|
protected boolean | initialised
Whether this path been flattened yet. |
protected Shape | path
The path to use for calculations. |
protected float | pathLength
Cached copy of the path length. |
protected int[] | segmentIndexes
Array where the index is the index of the original path segment
and the value is the index of the first of the flattened segments
in {@link #segments} that corresponds to that original path segment. |
protected List | segments
The list of flattened path segments. |
Constructor Summary | |
---|---|
PathLength(Shape path)
Creates a new PathLength object for the specified {@link Shape}. |
Method Summary | |
---|---|
float | angleAtLength(int index, float proportion)
Returns the slope of the path at the specified length. |
float | angleAtLength(float length)
Returns the slope of the path at the specified length. |
int | findUpperIndex(float length)
Returns the index of the path segment that bounds the specified
length along the path. |
float | getLengthAtSegment(int index)
Returns the length at the start of the segment given by the specified
index. |
int | getNumberOfSegments()
Returns the number of segments in the path. |
Shape | getPath()
Returns the path to use for calculations. |
protected void | initialise()
Flattens the path and determines the path length. |
float | lengthOfPath()
Returns the length of the path used by this PathLength object. |
Point2D | pointAtLength(int index, float proportion)
Returns the point that is the given proportion along the path segment
given by the specified index. |
Point2D | pointAtLength(float length)
Returns the point that is at the given length along the path. |
int | segmentAtLength(float length)
Returns the index of the segment at the given distance along the path. |
void | setPath(Shape v)
Sets the path to use for calculations. |
Parameters: path The Path (or Shape) to use.
Parameters: index The segment number proportion The proportion along the given segment
Returns: the angle in radians, in the range [-{@link Math#PI}, {@link Math#PI}].
Parameters: length The length along the path
Returns: the angle in radians, in the range [-{@link Math#PI}, {@link Math#PI}].
Parameters: length The length along the path
Returns: The path segment index, or -1 if there is not such segment
Returns: Path used in calculations.
Returns: The length of the path.
Parameters: length The length along the path
Returns: The point at the given length
Parameters: v Path to be used in calculations.