[2] A set of discrete "control points" defines a smooth, continuous curve by means of a formula.
"Paths", as they are commonly referred to in image manipulation programs,[note 1] are combinations of linked Bézier curves.
When animators or interface designers talk about the "physics" or "feel" of an operation, they may be referring to the particular Bézier curve used to control the velocity over time of the move in question.
This also applies to robotics where the motion of a welding arm, for example, should be smooth to avoid unnecessary wear.
The mathematical basis for Bézier curves—the Bernstein polynomials—was established in 1912, but the polynomials were not applied to graphics until some 50 years later when mathematician Paul de Casteljau in 1959 developed de Casteljau's algorithm, a numerically stable method for evaluating the curves, and became the first to apply them to computer-aided design at French automaker Citroën.
[6] De Casteljau's method was patented in France but not published until the 1980s[7] while the Bézier polynomials were widely publicised in the 1960s by the French engineer Pierre Bézier, who discovered them independently and used them to design automobile bodies at Renault.
A quadratic Bézier curve is the path traced by the function B(t), given points P0, P1, and P2, which can be interpreted as the linear interpolant of corresponding points on the linear Bézier curves from P0 to P1 and from P1 to P2 respectively.
Rearranging the preceding equation yields: This can be written in a way that highlights the symmetry with respect to P1: Which immediately gives the derivative of the Bézier curve with respect to t: from which it can be concluded that the tangents to the curve at P0 and P2 intersect at P1.
denote the Bézier curve determined by any selection of points P0, P1, ..., Pk.
Application of the binomial theorem to the definition of the curve followed by some rearrangement will yield where This could be practical if
; however one should use caution as high order curves may lack numeric stability (de Casteljau's algorithm should be used if this occurs).
These representations rest on the process used in De Casteljau's algorithm to calculate Bézier curves.
[15] The conversion from offset curves to filled Bézier contours is of practical importance in converting fonts defined in Metafont, which require stroking of Bézier curves, to the more widely used PostScript type 1 fonts, which only require (for efficiency purposes) the mathematically simpler operation of filling a contour defined by (non-self-intersecting) Bézier curves.
[21][22] The rational Bézier curve adds adjustable weights to provide closer approximations to arbitrary shapes.
Rational Bézier curves can, among other uses, be used to represent segments of conic sections exactly, including circular arcs.
[23] Given n + 1 control points P0, ..., Pn, the rational Bézier curve can be described by or simply The expression can be extended by using number systems besides reals for the weights.
The simplest method for scan converting (rasterizing) a Bézier curve is to evaluate it at many closely spaced points and scan convert the approximating sequence of line segments.
If not, the curve is subdivided parametrically into two segments, 0 ≤ t ≤ 0.5 and 0.5 ≤ t ≤ 1, and the same procedure is applied recursively to each half.
There are also forward differencing methods, but great care must be taken to analyse error propagation.
[26] Analytical methods where a Bézier is intersected with each scan line involve finding roots of cubic polynomials (for cubic Béziers) and dealing with multiple roots, so they are not often used in practice.
[28] In animation applications, such as Adobe Flash and Synfig, Bézier curves are used to outline, for example, movement.
[31] Bézier curves are now very frequently used to control the animation easing in CSS, JavaScript, JavaFx and Flutter SDK.
[12] Typically font engines and vector graphics engines render Bézier curves by splitting them recursively up to the point where the curve is flat enough to be drawn as a series of linear or circular segments.
The exact splitting algorithm is implementation dependent, only the flatness criteria must be respected to reach the necessary precision and to avoid non-monotonic local changes of curvature.
This is inefficient as there exists also approximations of all Bézier curves using arcs of circles or ellipses, which can be rendered incrementally with arbitrary precision.
Another approach, used by modern hardware graphics adapters with accelerated geometry, can convert exactly all Bézier and conic curves (or surfaces) into NURBS, that can be rendered incrementally without first splitting the curve recursively to reach the necessary flatness condition.
This approach also preserves the curve definition under all linear or perspective 2D and 3D transforms and projections.
[citation needed] Because the control polygon allows to tell whether or not the path collides with any obstacles, Bézier curves are used in producing trajectories of the end effectors.
[34] Furthermore, joint space trajectories can be accurately differentiated using Bézier curves.
Consequently, the derivatives of joint space trajectories are used in the calculation of the dynamics and control effort (torque profiles) of the robotic manipulator.