Package com.itextpdf.text.pdf.parser
Class BezierCurve
- java.lang.Object
-
- com.itextpdf.text.pdf.parser.BezierCurve
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<Point2D>
controlPoints
static double
curveCollinearityEpsilon
If the distance between a point and a line is less than this constant, then we consider the point lies on the line.static double
distanceToleranceManhattan
The Manhattan distance is used in the case when either the line ((x1, y1), (x4, y4)) passes through both (x2, y2) and (x3, y3) or (x1, y1) = (x4, y4).static double
distanceToleranceSquare
In the case when neither the line ((x1, y1), (x4, y4)) passes through both (x2, y2) and (x3, y3) nor (x1, y1) = (x4, y4) we use the square of the sum of the distances mentioned below in compare to this field as the criterion of good approximation.
-
Constructor Summary
Constructors Constructor Description BezierCurve(java.util.List<Point2D> controlPoints)
Constructs new bezier curve.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<Point2D>
getBasePoints()
Treat base points as the points which are enough to construct a shape.java.util.List<Point2D>
getPiecewiseLinearApproximation()
You can adjust precision of the approximation by varying the following parameters:curveCollinearityEpsilon
,distanceToleranceSquare
,distanceToleranceManhattan
private void
recursiveApproximation(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, java.util.List<Point2D> points)
-
-
-
Field Detail
-
curveCollinearityEpsilon
public static double curveCollinearityEpsilon
If the distance between a point and a line is less than this constant, then we consider the point lies on the line.
-
distanceToleranceSquare
public static double distanceToleranceSquare
In the case when neither the line ((x1, y1), (x4, y4)) passes through both (x2, y2) and (x3, y3) nor (x1, y1) = (x4, y4) we use the square of the sum of the distances mentioned below in compare to this field as the criterion of good approximation. 1. The distance between the line and (x2, y2) 2. The distance between the line and (x3, y3)
-
distanceToleranceManhattan
public static double distanceToleranceManhattan
The Manhattan distance is used in the case when either the line ((x1, y1), (x4, y4)) passes through both (x2, y2) and (x3, y3) or (x1, y1) = (x4, y4). The essential observation is that when the curve is a uniform speed straight line from end to end, the control points are evenly spaced from beginning to end. Our measure of how far we deviate from that ideal uses distance of the middle controls: point 2 should be halfway between points 1 and 3; point 3 should be halfway between points 2 and 4.
-
controlPoints
private final java.util.List<Point2D> controlPoints
-
-
Constructor Detail
-
BezierCurve
public BezierCurve(java.util.List<Point2D> controlPoints)
Constructs new bezier curve.- Parameters:
controlPoints
- Curve's control points.
-
-
Method Detail
-
getBasePoints
public java.util.List<Point2D> getBasePoints()
Treat base points as the points which are enough to construct a shape. E.g. for a bezier curve they are control points, for a line segment - the start and the end points of the segment.- Specified by:
getBasePoints
in interfaceShape
- Returns:
- Ordered
List
consisting of shape's base points.
-
getPiecewiseLinearApproximation
public java.util.List<Point2D> getPiecewiseLinearApproximation()
You can adjust precision of the approximation by varying the following parameters:curveCollinearityEpsilon
,distanceToleranceSquare
,distanceToleranceManhattan
- Returns:
List
containing points of piecewise linear approximation for this bezier curve.- Since:
- 5.5.6
-
recursiveApproximation
private void recursiveApproximation(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, java.util.List<Point2D> points)
-
-