Class PathLength

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

public class PathLength extends 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

    Nested Classes
    Modifier and Type
    Class
    Description
    protected static class 
    A single path segment in the flattened version of the path.
    protected static class 
    A PathIterator that returns only the next path segment from another PathIterator.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
    Whether this path been flattened yet.
    protected Shape
    The path to use for calculations.
    protected float
    Cached copy of the path length.
    protected int[]
    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 List
    The list of flattened path segments.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new PathLength object for the specified Shape.
  • Method Summary

    Modifier and Type
    Method
    Description
    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
    Returns the number of segments in the path.
    Returns the path to use for calculations.
    protected void
    Flattens the path and determines the path length.
    float
    Returns the length of the path used by this PathLength object.
    pointAtLength(float length)
    Returns the point that is at the given length along the path.
    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
    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 Details

    • path

      protected Shape path
      The path to use for calculations.
    • segments

      protected 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 Details

    • PathLength

      public PathLength(Shape path)
      Creates a new PathLength object for the specified Shape.
      Parameters:
      path - The Path (or Shape) to use.
  • Method Details

    • getPath

      public Shape getPath()
      Returns the path to use for calculations.
      Returns:
      Path used in calculations.
    • setPath

      public void setPath(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 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 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