Parametric Curves

Bezier Curves

The Bezier Curves are used in computer-aided design and are named after a mathematician working in the automotive industry.

A cubic Bezier curve is determined by four control points P[0](x[0],y[0]) , P[1](x[1],y[1]) , P[2](x[2],y[2]) , and P[3](x[3],y[3]) , and is defined by the parametric equations

x = x[0]*(1-t)^3+3*x[1]*t*(1-t)^2+3*x[2]*t^2*(1-t)+...

y = y[0]*(1-t)^3+3*y[1]*t*(1-t)^2+3*y[2]*t^2*(1-t)+...

where t is in [ 0, 1 ].

Notice that when
t = 0 we have (x, y) = (x[0], y[0]) and when t = 1 we have
(x, y) = (x[3], y[3]) , so the curve starts at P[0] and ends at P[3] .

Here we graph the Bezier curve with control points P[0](4,1) , P[1](28,48) , P[2](50,42) , and P[3](40,5) .

(Here is a procedure to graph Bezier curves )

> display( G, t0, t1, t2, t3, pp );

[Maple Plot]

Then on the same screen, graph the line segments P[0] P[1] , P[1] P[2] , and P[2] P[3] . Notice that the middle control points P[1] and P[2] do not lie on the curve; the curve starts at P[0] heads toward P[1] and P[2] without reaching them, and ends at P[3] .

(Here is a procedure to graph Bezier curves with line segments connecting control points.)

> x0 := 4:    y0 := 1:
>
x1 := 28:  y1 := 48:
>
x2 := 50:  y2 := 42:
>
x3 := 40:  y3 := 5:
>
Bezier_L( x0, y0, x1, y1, x2, y2, x3, y3 );

[Maple Plot]

From the graph above, it appears that the tangent at P[0] passes through P[1] and the tangent at P[3] passes through P[2] .

To produce a Bezier curve with a loop, we can change the second control point P[1] .

> display( seq( Bezier_L( x0, y0, 28+5*n, 48-4.3*n, x2, y2, x3, y3 ), n=0..10 ), insequence=true);

[Maple Plot]
 


Some laser printer use Bezier curves to represent letters and other symbols. A reasonable representation of the letter C can be done as follows:

> x0 := 35.5:  y0 := 22:
>
x1 := 28:     y1 := 30:
>
x2 := 25:     y2 := 10:
>
x3 := 36:     y3 := 17:
>
Bezier( x0, y0, x1, y1, x2, y2, x3, y3 );

[Maple Plot]

More complicated shapes can be represented by piecing together two or more Bezier curves. Suppose the first Bezier curve has control points P[0] , P[1] , P[2] , P[3] and the second one has control points P[3] , P[4] , P[5] , P[6] . If we want these two pieces to join together smoothly, then the tangents at P[3] should match and so the points P[2] , P[3] and P[4] all have to lie on this common tangent line. We can use this principle to find control points for a pair of Bezier curves that represent the letter S.

> x0 := 30:     y0 := 13:
>
x1 := 26.5:  y1 := 16:
>
x2 := 24:     y2 := 10:
>
x3 := 29:     y3 := 9.5:
>
b1 := Bezier( x0, y0, x1, y1, x2, y2, x3, y3 ):
>
x4 := 34:     y4 := 9:
>
x5 := 29.5:  y5 := 0.5:
>
x6 := 26:     y6 := 7:
>
b2 := Bezier( x3, y3, x4, y4, x5, y5, x6, y6 ):
>
display( b1, b2 );

[Maple Plot]