
On-Line Geometric Modeling Notes
Overview
A cubic Bézier curve has a useful representation in a matrix form. This is a non-standard representation but extremely valuable if we can multiply matrices quickly. The matrix which we develop, when examined closely, is uniquely defined by the cubic Bernstein polynomials. We can use this form to develop ``subdivision matrices'' that allow us to use matrix multiplication to generate different Bézier control polygons for the cubic curve.
To get a postscript version of these notes look here.
Developing the Matrix Equation
A cubic Bézier Curve can be written in a matrix form by expanding the
analytic definition of the curve into its Bernstein polynomial coefficients,
and then writing these coefficients in a matrix form using the polynomial
power basis. That is,

and so a cubic Bézier curve is can be written in a matrix form of

where

The matrix M defines the blending functions for the curve
- i.e. the
cubic Bernstein polynomials. In reality
there are three equations here, one for each of the x, y and z
components of
.
Utilizing equipment that is designed for fast
matrix calculations,
this formulation can be used to quickly calculate points on the
curve.
Subdivision Using the Matrix Form
Suppose we wish to generate the control polygon for the portion of the
curve
where t ranges between 0 and
- subdivide
the curve at the point
. This can be done by defining
a new curve
which is equal to
. Clearly
this new curve is a cubic polynomial, and traces out the desired
portion of
as t ranges between 0 and 1. We can calculate
the Bézier control polygon for
by using the matrix form of the
curve
.

where the matrix
is defined as

So
is a Bézier curve, with a control polygon given by

In the same way, we can
obtain the Bézier control polygon for the second half of the curve
- the portion where t ranges between
and 1. If we
call this new curve
, then

where

obtaining a matrix that can be applied to the original Bézier
control points to
produce Bézier control points for the second half of the curve.
Generating a Sequence of Bézier Control Polygons.
Using matrix calculations similar to those above, we can generate an
iterative scheme to generate a sequence of points on the curve.
To do this, we need one additional S matrix.
If we consider the portion of the cubic curve
where t
ranges between 1 and 2,
We generate the Bézier control points of
by reparameterization of the original curve - namely by
replacing t by t+1 - to obtain

where, after some calculation,
is given by

Now, using a combination of
,
and
, we can produce Bézier
control polygons along
the curve similar to methods developed with divided differences.
To see what I mean here, first notice that
![]()
This states that by applying
to
obtain a Bézier control polygon for the first half of the curve, we can
then apply
to this control polygon to obtain
the Bézier control polygon for the second half of the curve.
Extending this, if we apply
![]()
(that is, apply
k times and then
i times), we obtain the Bézier control
polygon for the portion of the curve where t ranges between
and
. By repeatedly applying
, we move our control polygons along the
curve.
Summary
We have developed a matrix form for the cubic Bézier curve. Using
reparameterization,
we then developed matrices which enabled us to produce Bézier control
polygons for sections of the curve, and to move from one Bézier control
polygon to an adjacent for on the curve.
These operations are extremely useful when utilizing hardware
with geometry engines that multiply
matrices rapidly.
|
This document maintained by
Ken Joy
All contents copyright (c) 1996, 1997 |
|