## org.apache.batik.ext.awt.geom
Class PathLength

    java.lang.Object
      org.apache.batik.ext.awt.geom.PathLength

    public class PathLength

extends java.lang.Object

Utilitiy class for length calculations of paths.

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 `PathIterator` that returns only the next path segment from another `PathIterator`.

Field Summary
`protected boolean` `initialised` Whether this path been flattened yet.
`protected java.awt.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 `segments` that corresponds to that original path segment.
`protected java.util.List` `segments` The list of flattened path segments.

Constructor Summary
`PathLength(java.awt.Shape path)` Creates a new PathLength object for the specified `Shape`.

Method Summary
`float` `angleAtLength(float length)` Returns the slope of the path at the specified length.
`float` `angleAtLength(int index, float proportion)` 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.
`java.awt.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.
`java.awt.geom.Point2D` `pointAtLength(float length)` Returns the point that is at the given length along the path.
`java.awt.geom.Point2D` `pointAtLength(int index, float proportion)` Returns the point that is the given proportion along the path segment given by the specified index.
`int` `segmentAtLength(float length)` Returns the index of the segment at the given distance along the path.
`void` `setPath(java.awt.Shape v)` Sets the path to use for calculations.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### path

    protected java.awt.Shape path

  The path to use for calculations.

### segments

    protected java.util.List segments

  The list of flattened path segments.

### segmentIndexes

    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 `segments` that corresponds to that original path segment.

### pathLength

    protected float pathLength

  Cached copy of the path length.

### initialised

    protected boolean initialised

  Whether this path been flattened yet.

Constructor Detail

### PathLength

    public PathLength(java.awt.Shape path)

  Creates a new PathLength object for the specified `Shape`.

  Parameters:
    `path` - The Path (or Shape) to use.

Method Detail

### getPath

    public java.awt.Shape getPath()

  Returns the path to use for calculations.

  Returns:
    Path used in calculations.

### setPath

    public void setPath(java.awt.Shape v)

  Sets the path to use for calculations.

  Parameters:
    `v` - Path to be used in calculations.

### lengthOfPath

    public float lengthOfPath()

  Returns the length of the path used by this PathLength object.

  Returns:
    The length of the path.

### initialise

    protected void initialise()

  Flattens the path and determines the path length.

### getNumberOfSegments

    public int getNumberOfSegments()

  Returns the number of segments in the path.

### getLengthAtSegment

    public float getLengthAtSegment(int index)

  Returns the length at the start of the segment given by the specified index.

### segmentAtLength

    public int segmentAtLength(float length)

  Returns the index of the segment at the given distance along the path.

### pointAtLength

    public java.awt.geom.Point2D pointAtLength(int index,
                                               float proportion)

  Returns the point that is the given proportion along the path segment given by the specified index.

### pointAtLength

    public java.awt.geom.Point2D pointAtLength(float length)

  Returns the point that is at the given length along the path.

  Parameters:
    `length` - The length along the path
  Returns:
    The point at the given length

### angleAtLength

    public float angleAtLength(int index,
                               float proportion)

  Returns the slope of the path at the specified length.

  Parameters:
    `index` - The segment number
    `proportion` - The proportion along the given segment
  Returns:
    the angle in radians, in the range [-`Math.PI`, `Math.PI`].

### angleAtLength

    public float angleAtLength(float length)

  Returns the slope of the path at the specified length.

  Parameters:
    `length` - The length along the path
  Returns:
    the angle in radians, in the range [-`Math.PI`, `Math.PI`].

### findUpperIndex

    public int findUpperIndex(float length)

  Returns the index of the path segment that bounds the specified length along the path.

  Parameters:
    `length` - The length along the path
  Returns:
    The path segment index, or -1 if there is not such segment

Copyright © 2008 Apache Software Foundation. All Rights Reserved.