On-Line Geometric Modeling Notes


A cubic Bézier patch has a useful representation when written in a matrix form. This form allows us to specify many operations with Bézier patches as matrix operations which can be performed quickly on computer systems optimized for geometry operations with matrices.

This is an unusual representation for many students as it is not frequently shown in basic courses. If you have not seen this before it is suggested that you begin with the section on matrix representations for Bézier curves in which the equations are simpler and easier to understand.

pdficonsmall.gif To get a pdf version of these notes look here.

Developing the Matrix Formulation

A cubic Bézier curve can be written in a convenient matrix form. A bicubic Bézier patch can be written in a matrix form by using methods similar to that for a Bézier Curve. Utilizing the representation of a Bézier patch as a continuous set of Bézier curves we have

\begin{displaymath}\begin{aligned}{\bf P} (u,v) & = \sum_{j=0}^{3} \sum_{i=0}^{3...
...y}{c} 1 \\  v \\  v^2 \\  v^3 \end{array} \right] \end{aligned}\end{displaymath}

and so the cubic Bézier patch is frequently written

$\displaystyle {\bf P} (t) \: = \:
\left[ \begin{array}{cccc}
1 & u & u^2 & u^3...
\, M^T \,
\left[ \begin{array}{c}
1 \\  v \\  v^2 \\  v^3
\end{array} \right]


$\displaystyle M \: = \:
\left[ \begin{array}{cccc}
1 & 0 & 0 & 0 \\
-3 & 3 & 0 & 0 \\
3 & -6 & 3 & 0 \\
-1 & 3 & -3 & 1
\end{array} \right]

Patch Subdivision Using the Matrix Form

Suppose we wish to subdivide the patch at the point $ u=\frac{1}{2}$. We reparameterize the matrix equation above (by substituting $ \frac{u}{2}$ for $ u$) to cover only the first half of the patch, and simplify to obtain.

\begin{displaymath}\begin{aligned}{\bf P} (\frac{u}{2},v) & = \left[ \begin{arra...
...y}{c} 1 \\  v \\  v^2 \\  v^3 \end{array} \right] \end{aligned}\end{displaymath}

where the matrix $ S_L$ is defined as

\begin{displaymath}\begin{aligned}S_L & = M ^{-1} \left[ \begin{array}{cccc} 1 &...
...} & \frac{3}{8} & \frac{1}{8} \end{array} \right] \end{aligned}\end{displaymath}

and is identical to the left subdivision matrix for the curve case. So in particular, the subpatch $ {\bf P} (\frac{u}{2})$ is again a Bézier patch and the quantity

$\displaystyle \left[ \begin{array}{cccc}
1 & 0 & 0 & 0 \\
\frac{1}{2} & \frac...
..._{3,0} & {\bf P} _{3,1} & {\bf P} _{3,2} & {\bf P} _{3,3}
\end{array} \right]

forms the control points of this patch.

Calculation of the Second Half of the Patch

In the same way, we can obtain the subdivision matrix for the second half of the patch. First we reparameterize the original curve, and then simplify to obtain

\begin{displaymath}\begin{aligned}{\bf P} (\frac{1}{2} + \frac{u}{2},v) & = \lef...
...y}{c} 1 \\  v \\  v^2 \\  v^3 \end{array} \right] \end{aligned}\end{displaymath}


$\displaystyle S_R \: = \:
\left[ \begin{array}{cccc}
\frac{1}{8} & \frac{3}{8} ...
... \\
0 & 0 & \frac{1}{2} & \frac{1}{2} \\
0 & 0 & 0 & 1
\end{array} \right]

which is identical to the right subdivision matrix in the curve case and we obtain a matrix that can be applied to a set of control points to produce the control points for the second half of the patch.

General Subdivision with either Parameter

We can develop a procedure to generate the control points for the first and second portions of the patch when subdivision is done with respect to $ v$. These are

$\displaystyle P S_L \: and \: P S_R


$\displaystyle P \: = \:
\left[ \begin{array}{cccc}
{\bf P} _{0,0} & {\bf P} _{0...
..._{3,0} & {\bf P} _{3,1} & {\bf P} _{3,2} & {\bf P} _{3,3}
\end{array} \right]

The development is exactly parallel to that with respect to $ u$.

Combining these two methods, we can see that the arrays

\begin{displaymath}\begin{aligned}S_L P S_L \\  S_R P S_L \\  S_L P S_R \\  S_R P S_R \end{aligned}\end{displaymath}

segment the patch into quarters, the first array being the quarter that corresponds to $ 0 \leq u \leq \frac{1}{2}, 0 \leq v \leq
\frac{1}{2}$, the second to the one that corresponds to $ 0 \leq u \leq \frac{1}{2}, \frac{1}{2} \leq v \leq 1$, etc.


We have developed a matrix form for the Bézier patch which parallels the development for the Bézier curve. This representation allows us to develop matrices that, which multiplied by the control point array, calculate the control points of a subdivided portion of the patch.

These matrix equations exist for patches of all orders - we have done order 4 (or degree 3) patches here. However, the matrices are $ n
\times n$ for a patch of order $ n$, and are not as easily written down.

\footnotesize\bfseries All contents copyright (c) ...
...ment, University of California, Davis \\
All rights reserved.

Ken Joy