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
,
,
, and
, and is defined by the parametric equations
![]()
![]()
where
is in [
].
Notice that whenwe have
and when
we have
, so the curve starts at
and ends at
.
(Here is a procedure to graph Bezier curves )
> display( G, t0, t1, t2, t3, pp );
Then on the same screen, graph the line segments
,
, and
. Notice that the middle control points
and
do not lie on the curve; the curve starts at
heads toward
and
without reaching them, and ends at
.
(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 );
From the graph above, it appears that the tangent at
passes through
and the tangent at
passes through
.
To produce a Bezier curve with a loop, we can change the second control point
.
> display( seq( Bezier_L( x0, y0, 28+5*n, 48-4.3*n, x2, y2, x3, y3 ), n=0..10 ), insequence=true);
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 );
More complicated shapes can be represented by piecing together two or more Bezier curves. Suppose the first Bezier curve has control points
,
,
,
and the second one has control points
,
,
,
. If we want these two pieces to join together smoothly, then the tangents at
should match and so the points
,
and
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 );