Introducing Bezier Curves
Author: Steve Arnold

Most of the curves you see on a computer screen or printed page - everything from text fonts to animations - are generated mathematically using Bezier Curves.

Two examples are shown here - a quadratic bezier (controlled by points A, B and C) and a cubic bezier (controlled by all four points, A, B, C and D).

Drag the control points around and see the effect this has upon the curves.

These curves have been generated geometrically, but the real control comes when they are generated algebraically.

This may be done in several ways, but one relatively easy way involves using a recursive formula:

Bezier(a,b,r) = a*(1 - r) + b*r

Suppose a and b are two numbers (say, 1 and 5). What happens as the value of r varies between 0 and 1?

When r = 0, the formula is completely "a" and when r = 1, it gives "b". For values between 0 and 1, it gives values between a and b, just like dragging a slider point P between the points A and B on the figure.

Then explore (using a computer algebra system if you have one) the second order bezier function,

Bezier2(a,b,c,r) - bezier(a,b,r)*(1 - r) + Bezier(b,c,r)*r

Can you see how this might relate to our figure?

Bezier Curves

Move the points A, B, C and D - observe the effects upon the two curves shown.

The red curve is called a Quadratic Bezier.
It is controlled by points A, B and C.

The blue curve is called a cubic bezier and is
controlled by all four points.

Can you find the algebraic forms for these curves?

A = (3, 5)
B = (1, 2)
a = Segment(A, B)
C = (5, -1)
b = Segment(B, C)
P = Point(a)
c = Segment(P, A)
Q = Dilate(C, c / a, B)
R = Dilate(Q, c / a, P)
loc1 = Locus(R, P)
D = (6.640000000000001, 4.98)
S = Dilate(D, c / a, C)
T = Dilate(S, c / a, Q)
U = Dilate(T, c / a, R)
loc2 = Locus(U, P)
d = Segment(Q, B)
e = Segment(S, C)
f = Segment(R, U)
g = Segment(T, S)