Documentation of 'org.jhotdraw.geom.Bezier' Java class
Bezier
org.jhotdraw.geom

Class Bezier



  • public class Bezier
    extends java.lang.Object
    Provides algorithms for fitting Bezier curves to a set of digitized points.

    Source:
    Phoenix: An Interactive Curve Design System Based on the Automatic Fitting of Hand-Sketched Curves.
    © Copyright by Philip J. Schneider 1988.
    A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science, University of Washington.

    http://autotrace.sourceforge.net/Interactive_Curve_Design.ps.gz

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method and Description
      static java.util.ArrayList<java.lang.Integer> findCorners(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints, double minAngle, double minDistance)
      Finds corners in the provided point list, and returns their indices.
      static BezierPath fitBezierPath(BezierPath digitizedPoints, double error)
      Fits a bezier path to the specified list of digitized points.
      static BezierPath fitBezierPath(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints, double error)
      Fits a bezier path to the specified list of digitized points.
      static BezierPath fitBezierPath(java.awt.geom.Point2D.Double[] digitizedPoints, double error)
      Fits a bezier path to the specified list of digitized points.
      static void main(java.lang.String[] args) 
      static java.util.ArrayList<java.awt.geom.Point2D.Double> reduceNoise(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints, double weight)
      Reduces noise from the digitized points, by applying an approximation of a gaussian filter to the data.
      static java.util.ArrayList<java.awt.geom.Point2D.Double> removeClosePoints(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints, double minDistance)
      Removes points which are closer together than the specified minimal distance.
      static java.util.ArrayList<java.util.ArrayList<java.awt.geom.Point2D.Double>> splitAtCorners(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints, double maxAngle, double minDistance)
      Splits the digitized points into multiple segments at each corner point.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • main

        public static void main(java.lang.String[] args)
      • fitBezierPath

        public static BezierPath fitBezierPath(java.awt.geom.Point2D.Double[] digitizedPoints,
                                               double error)
        Fits a bezier path to the specified list of digitized points.

        This is a convenience method for calling fitCubicSegments(List, double);

        Parameters:
        digitizedPoints - digited points.
        error - the maximal allowed error between the bezier path and the digitized points.
      • fitBezierPath

        public static BezierPath fitBezierPath(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints,
                                               double error)
        Fits a bezier path to the specified list of digitized points.
        Parameters:
        digitizedPoints - digited points.
        error - the maximal allowed error between the bezier path and the digitized points.
      • fitBezierPath

        public static BezierPath fitBezierPath(BezierPath digitizedPoints,
                                               double error)
        Fits a bezier path to the specified list of digitized points.

        This is a convenience method for calling fitCubicSegments(List, double);

        Parameters:
        digitizedPoints - digited points.
        error - the maximal allowed error between the bezier path and the digitized points.
      • removeClosePoints

        public static java.util.ArrayList<java.awt.geom.Point2D.Double> removeClosePoints(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints,
                                                                                          double minDistance)
        Removes points which are closer together than the specified minimal distance.

        The minimal distance should be chosen dependent on the size and resolution of the display device, and on the sampling rate. A good value for mouse input on a display with 100% Zoom factor is 2.

        The purpose of this method, is to remove points, which add no additional information about the shape of the curve from the list of digitized points.

        The cleaned up set of digitized points gives better results, when used as input for method splitAtCorners(java.util.List<java.awt.geom.Point2D.Double>, double, double).

        Parameters:
        digitizedPoints - Digitized points
        minDistance - minimal distance between two points. If minDistance is 0, this method only removes sequences of coincident points.
        Returns:
        Digitized points with a minimal distance.
      • splitAtCorners

        public static java.util.ArrayList<java.util.ArrayList<java.awt.geom.Point2D.Double>> splitAtCorners(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints,
                                                                                                            double maxAngle,
                                                                                                            double minDistance)
        Splits the digitized points into multiple segments at each corner point.

        Corner points are both contained as the last point of a segment and the first point of a subsequent segment.

        Parameters:
        digitizedPoints - Digitized points
        maxAngle - maximal angle in radians between the current point and its predecessor and successor up to which the point does not break the digitized list into segments. Recommended value 44° = 44 * 180d / Math.PI
        Returns:
        Segments of digitized points, each segment having less than maximal angle between points.
      • findCorners

        public static java.util.ArrayList<java.lang.Integer> findCorners(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints,
                                                                         double minAngle,
                                                                         double minDistance)
        Finds corners in the provided point list, and returns their indices.
        Parameters:
        digitizedPoints - List of digitized points.
        minAngle - Minimal angle for corner points
        minDistance - Minimal distance between a point and adjacent points for corner detection
        Returns:
        list of corner indices.
      • reduceNoise

        public static java.util.ArrayList<java.awt.geom.Point2D.Double> reduceNoise(java.util.List<java.awt.geom.Point2D.Double> digitizedPoints,
                                                                                    double weight)
        Reduces noise from the digitized points, by applying an approximation of a gaussian filter to the data.

        The filter does the following for each point P, with weight 0.5:

        x[i] = 0.5*x[i] + 0.25*x[i-1] + 0.25*x[i+1]; y[i] = 0.5*y[i] + 0.25*y[i-1] + 0.25*y[i+1];

        Parameters:
        digitizedPoints - Digitized points
        weight - Weight of the current point
        Returns:
        Digitized points with reduced noise.

DataMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.