Composite Bézier curve explained

In geometric modelling and in computer graphics, a composite Bézier curve or Bézier spline is a spline made out of Bézier curves that is at least

C0

continuous. In other words, a composite Bézier curve is a series of Bézier curves joined end to end where the last point of one curve coincides with the starting point of the next curve. Depending on the application, additional smoothness requirements (such as

C1

or

C2

continuity) may be added.[1]

A continuous composite Bézier is also called a polybezier, by similarity to polyline, but whereas in polylines the points are connected by straight lines, in a polybezier the points are connected by Bézier curves. A beziergon (also called bezigon) is a closed path composed of Bézier curves. It is similar to a polygon in that it connects a set of vertices by lines, but whereas in polygons the vertices are connected by straight lines, in a beziergon the vertices are connected by Bézier curves.[2] [3] [4] Some authors even call a

C0

composite Bézier curve a "Bézier spline";[5] the latter term is however used by other authors as a synonym for the (non-composite) Bézier curve, and they add "composite" in front of "Bézier spline" to denote the composite case.[6]

Perhaps the most common use of composite Béziers is to describe the outline of each letter in a PostScript or PDF file. Such outlines are composed of one beziergon for open letters, or multiple beziergons for closed letters. Modern vector graphics and computer font systems like PostScript, Asymptote, Metafont, OpenType, and SVG use composite Bézier curves composed of cubic Bézier curves (3rd order curves) for drawing curved shapes.

Smooth joining

A commonly desired property of splines is for them to join their individual curves together with a specified level of parametric or geometric continuity. While individual curves in the spline are fully

Cinfin

continuous within their own interval, there is always some amount of discontinuity where different curves meet.

The Bézier spline is fairly unique in that it's one of the few splines that doesn't guarantee any higher degree of continuity than

C0

. It is, however, possible to arrange control points to guarantee various levels of continuity across joins, though this can come at a loss of local control if the constraint is too strict for the given degree of the Bézier spline.

Smoothly joining cubic Béziers

Given two cubic Bézier curves with control points

[P0,P1,P2,P3]

and

[P3,P4,P5,P6]

respectively, the constraints for ensuring continuity at

P3

can be defined as follows:

C0/G0

(positional continuity) requires that they meet at the same point, which all Bézier splines do by definition. In this example, the shared point is

P3

C1

(velocity continuity) requires the neighboring control points around the join to be mirrors of each other. In other words, they must follow the constraint of

P4=2P3-P2

G1

(tangent continuity) requires the neighboring control points to be collinear with the join. This is less strict than

C1

continuity, leaving an extra degree of freedom which can be parameterized using a scalar

\beta1

. The constraint can then be expressed by

P4=P3+(P3-P2)\beta1

While the following continuity constraints are possible, they are rarely used with cubic Bézier splines, as other splines like the B-spline or the β-spline[7] will naturally handle higher constraints without loss of local control.

C2

(acceleration continuity) is constrained by

P5=P1+4(P3-P2)

. However, applying this constraint across an entire cubic Bézier spline will cause a cascading loss of local control over the tangent points. The curve will still pass through every third point in the spline, but control over its shape will be lost. In order to achieve

C2

continuity using cubic curves, it's recommended to use a cubic uniform B-spline instead, as it ensures

C2

continuity without loss of local control, at the expense of no longer being guaranteed to pass through specific points

G2

(curvature continuity) is constrained by

P5=P3+(P3-P2)(2\beta1+\beta

2+\beta
2/2)+(P

1-P2)\beta

2
1
, leaving two degrees of freedom compared to

C2

, in the form of two scalars

\beta1

and

\beta2

. Higher degrees of geometric continuity is possible, though they get increasingly complex[8]

C3

(jolt continuity) is constrained by

P6=P3+(P3-P0)+6(P1-P2+P3-P2)

. Applying this constraint to the cubic Bézier spline will cause a complete loss of local control, as the entire spline is now fully constrained and defined by the first curve's control points. In fact, it is arguably no longer a spline, as its shape is now equivalent to extrapolating the first curve indefinitely, making it not only

C3

continuous, but

Cinfin

, as joins between separate curves no longer exist

Approximating circular arcs

In case circular arc primitives are not supported in a particular environment, they may be approximated by Bézier curves.[9] Commonly, eight quadratic segments[10] or four cubic segments are used to approximate a circle. It is desirable to find the length

k

of control points which result in the least approximation error for a given number of cubic segments.

Using four curves

Considering only the 90-degree unit-circular arc in the first quadrant, we define the endpoints

A

and

B

with control points

A'

and

B'

, respectively, as:

\begin{align} A&=[0,1]\\ A'&=[k,1]\\ B'&=[1,k]\\ B&=[1,0]\\ \end{align}

From the definition of the cubic Bézier curve, we have:

C(t)=(1-t)3A+3(1-t)2tA'+3(1-t)t2B'+t3B

With the point

C(t=0.5)

as the midpoint of the arc, we may write the following two equations:

\begin{align} C&=

1
8

A+

3A'+
8
3B'+
8
1
8

B\\ C&=\sqrt{1/2}=\sqrt{2}/2 \end{align}

Solving these equations for the x-coordinate (and identically for the y-coordinate) yields:

0+
8
3k+
8
3
8

+

1
8

=\sqrt{2}/2

k=

4
3

(\sqrt{2}-1)0.5522847498

Note however that the resulting Bézier curve is entirely outside the circle, with a maximum deviation of the radius of about 0.00027.By adding a small correction to intermediate points such as

\begin{align} A'&=[k+0.0009,1-0.00103]\\ B'&=[1-0.00103,k+0.0009], \end{align}

the magnitude of the radius deviation to 1 is reduced by a factor of about 3, to 0.000068 (at the expense of the derivability of the approximated circle curve at endpoints).

General case

We may approximate a circle of radius

R

from an arbitrary number of cubic Bézier curves. Let the arc start at point

A

and end at point

B

, placed at equal distances above and below the x-axis, spanning an arc of angle

\theta=2\phi

:

\begin{align} Ax&=R\cos(\phi)\\ Ay&=R\sin(\phi)\\ Bx&=Ax\\ By&=-Ay \end{align}

The control points may be written as:[11]

\begin{align} A'x&=

4R-Ax
3

\\ A'y&=

(R-Ax)(3R-Ax)
3Ay

\\ B'x&=A'x\\ B'y&=-A'y \end{align}

Examples

Fonts

TrueType fonts use composite Béziers composed of quadratic Bézier curves (2nd order curves). To describe a typical type design as a computer font to any given accuracy, 3rd order Beziers require less data than 2nd order Beziers; and these in turn require less data than a series of straight lines. This is true even though any one straight line segment requires less data than any one segment of a parabola; and that parabolic segment in turn requires less data than any one segment of a 3rd order curve.

See also

Notes and References

  1. Book: Eugene V. Shikin. Alexander I. Plis. Handbook on Splines for the User. 14 July 1995. CRC Press. 978-0-8493-9404-1. 96.
  2. http://msdn2.microsoft.com/en-us/library/ms534244.aspx Microsoft polybezier API
  3. http://libpapyrus.sourceforge.net/guide_beziergon.html Papyrus beziergon API reference
  4. https://books.google.com/books?id=nFAEAAAAMBAJ&dq=bezigon+curve&pg=PA85 "A better box of crayons"
  5. Book: Rebaza, Jorge. A First Course in Applied Mathematics. 2012-04-24. John Wiley & Sons. 9781118277157. en.
  6. Book: (Firm), Wolfram Research. Mathematica ® 3.0 Standard Add-on Packages. 1996-09-13. Cambridge University Press. 9780521585859. en.
  7. Properties of β-splines. Goodman. T.N.T. Journal of Approximation Theory . en. 1983-12-09. 44 . 2 . 132–153 . 10.1016/0021-9045(85)90076-0 . free.
  8. Web site: Geometric Continuity: A Parametrization Independent Measure of Continuity for Computer Aided Geometric Design. DeRose. Anthony D.. en. 1985-08-01.
  9. Web site: Stanislav . G. Adam . Drawing a circle with Bézier Curves . 10 April 2010 .
  10. Web site: Apple. Digitizing letterform designs. 26 July 2014.
  11. Web site: DeVeneza . Richard . Drawing a circle with Bézier Curves . 10 April 2010 .