An implementation of the de Casteljau’s Algorithm for interpolating Bézier curves.
More...
#include <qwt_bezier.h>
|
| | QwtBezier (double tolerance=0.5) |
| | Constructor.
|
| |
|
| ~QwtBezier () |
| | Destructor.
|
| |
| void | setTolerance (double tolerance) |
| | Set the tolerance.
|
| |
| double | tolerance () const |
| |
| QPolygonF | toPolygon (const QPointF &p1, const QPointF &cp1, const QPointF &cp2, const QPointF &p2) const |
| | Interpolate a Bézier curve by a polygon.
|
| |
| void | appendToPolygon (const QPointF &p1, const QPointF &cp1, const QPointF &cp2, const QPointF &p2, QPolygonF &polygon) const |
| | Interpolate a Bézier curve by a polygon.
|
| |
|
| static QPointF | pointAt (const QPointF &p1, const QPointF &cp1, const QPointF &cp2, const QPointF &p2, double t) |
| | Find a point on a Bézier Curve.
|
| |
An implementation of the de Casteljau’s Algorithm for interpolating Bézier curves.
The flatness criterion for terminating the subdivision is based on "Piecewise Linear Approximation of Bézier Curves" by Roger Willcocks ( http://www.rops.org )
This article explains the maths behind in a very nice way: https://jeremykun.com/2013/05/11/bezier-curves-and-picasso
◆ QwtBezier()
| QwtBezier::QwtBezier |
( |
double |
tolerance = 0.5 | ) |
|
Constructor.
- Parameters
-
| tolerance | Termination criterion for the subdivision |
- See also
- setTolerance()
◆ appendToPolygon()
| void QwtBezier::appendToPolygon |
( |
const QPointF & |
p1, |
|
|
const QPointF & |
cp1, |
|
|
const QPointF & |
cp2, |
|
|
const QPointF & |
p2, |
|
|
QPolygonF & |
polygon |
|
) |
| const |
Interpolate a Bézier curve by a polygon.
appendToPolygon() is tailored for cumulating points from a sequence of bezier curves like being created by a spline interpolation.
- Parameters
-
| p1 | Start point |
| cp1 | First control point |
| cp2 | Second control point |
| p2 | End point |
| polygon | Polygon, where the interpolating points are added |
- Note
- If the last point of the incoming polygon matches p1 it won't be inserted a second time.
◆ pointAt()
| QPointF QwtBezier::pointAt |
( |
const QPointF & |
p1, |
|
|
const QPointF & |
cp1, |
|
|
const QPointF & |
cp2, |
|
|
const QPointF & |
p2, |
|
|
double |
t |
|
) |
| |
|
static |
Find a point on a Bézier Curve.
- Parameters
-
| p1 | Start point |
| cp1 | First control point |
| cp2 | Second control point |
| p2 | End point |
| t | Parameter value, something between [0,1] |
- Returns
- Point on the curve
◆ setTolerance()
| void QwtBezier::setTolerance |
( |
double |
tolerance | ) |
|
Set the tolerance.
The tolerance is a measurement for the flatness of a curve. A curve with a flatness below the tolerance is considered as being flat terminating the subdivision algorithm.
When interpolating a Bezier curve to render it as a sequence of lines to some sort of raster ( f.e to screen ) a value of 0.5 of the pixel size is a good value for the tolerance.
- Parameters
-
| tolerance | Termination criterion for the subdivision |
- See also
- tolerance()
◆ tolerance()
| double QwtBezier::tolerance |
( |
| ) |
const |
|
inline |
- Returns
- Tolerance, that is used as criterion for the subdivision
- See also
- setTolerance()
◆ toPolygon()
| QPolygonF QwtBezier::toPolygon |
( |
const QPointF & |
p1, |
|
|
const QPointF & |
cp1, |
|
|
const QPointF & |
cp2, |
|
|
const QPointF & |
p2 |
|
) |
| const |
Interpolate a Bézier curve by a polygon.
- Parameters
-
| p1 | Start point |
| cp1 | First control point |
| cp2 | Second control point |
| p2 | End point |
- Returns
- Interpolating polygon
The documentation for this class was generated from the following files:
- /home/runner/work/QWT/QWT/src/qwt_bezier.h
- /home/runner/work/QWT/QWT/src/qwt_bezier.cpp