CAGD-banner.gif
On-Line Geometric Modeling Notes
BÉZIER CURVES ON BÉZIER PATCHES


Overview

The Bézier patch is the surface extension of the Bézier curve. The definition of the patch follows directly the definition of the curve, with the primary differences being the use of an array of control points and the bivariate Bernstein Polynomials. The edge curves of the patch are Bézier curves and the ``corner'' control points are always on the curve.

In these notes we show that a patch can be treated as a continuous set of Bézier curves. That is, for any fixed parameter $ u_0$ or $ v_0$ we can define a Bézier curve that lies directly on the surface of the patch. This is a very valuable tool for calculations on the patch.

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


Calculating Bézier Curves on Bézier Patches

In the development of the Bézier patch, we have shown that the boundary curves of the patch are Bézier curves - that is, $ {\bf P} (0,v)$ and $ {\bf P} (1,v)$ are Bézier curves lying on the boundary of the patch.

If we examine the definition of a Bézier patch closely, and group factors appropriately,

$\displaystyle {\bf P} (u,v) \: = \: \sum_{j=0}^{m}
\left[ \sum_{i=0}^n {\bf P} _{i,j}
B_{i,n}(u) \right] B_{j,m}(v)
$

we notice that portion of the equation inside the brackets is the representation of a Bézier curve. If we fix $ u=u_0$, the internal sum can be calculated (for $ j=0,...,m$). This implies that $ {\bf P} (u_0,v)$ is a Bézier curve on the surface.

If we define $ {\bf Q} _j(u)$ to be the value

$\displaystyle {\bf Q} _j(u) \: = \: \sum_{i=0}^n {\bf P} _{i,j} B_{i,n}(u)
$

(i.e. the value inside the brackets above) then we can see that

$\displaystyle {\bf P} (u,v) \: = \: \sum_{j=0}^{m} {\bf Q} _j(u) B_{j,m}(v)
$

That is, the quantities $ {\bf Q} _j(u)$ form the control points of another Bézier curve, and together for all $ u$ and $ v$, they form the surface.

Therefore, given $ u=u_0$, we can calculate the quantities $ {\bf Q} _0(u_0)$, $ {\bf Q} _1(u_0)$, ..., $ {\bf Q} _m(u_0)$, giving $ m$ control points to utilize for the curve

$\displaystyle {\bf Q} (v) \: = \:\sum_{j=0}^{m} {\bf Q} _j(u_0) B_{j,m}(v)
$

This curve lies on the patch - since it is really $ {\bf P} (u_0,v)$, and calculating $ {\bf Q} (v_0)$ gives us the point on the patch at $ (u_0,v_0)$. Since $ {\bf Q} (v)$ is a Bézier curve, this calculating is straightforward. The following illustration shows the relationship between the $ {\bf Q} $s and the $ {\bf P} $s in the $ 4 \times 4$ case.

First the point $ {\bf Q} _0(u_0)$ is calculated as a point on the Bézier curve defined by the control points $ {\bf P} _{0,0}$, $ {\bf P} _{0,1}$, $ {\bf P} _{0,2}$ and $ {\bf P} _{0,3}$.

\includegraphics {figures/bezier-patch-5a}

next the point $ {\bf Q} _1(u_0)$ is calculated as a point on the Bézier curve defined by the control points $ {\bf P} _{1,0}$, $ {\bf P} _{1,1}$, $ {\bf P} _{1,2}$ and $ {\bf P} _{1,3}$.

\includegraphics {figures/bezier-patch-5b}

then the point $ {\bf Q} _2(u_0)$ is calculated as a point on the Bézier curve defined by the control points $ {\bf P} _{2,0}$, $ {\bf P} _{2,1}$, $ {\bf P} _{2,2}$ and $ {\bf P} _{2,3}$.

\includegraphics {figures/bezier-patch-5c}

and finally, the point $ {\bf Q} _2(u_0)$ is calculated as a point on the Bézier curve defined by the control points $ {\bf P} _{2,0}$, $ {\bf P} _{2,1}$, $ {\bf P} _{2,2}$ and $ {\bf P} _{2,3}$.

\includegraphics {figures/bezier-patch-5d}

The point $ {\bf P} (u_0,v_0)$, on the patch, is calculated as a point on the Bézier curve defined by the control points $ {\bf Q} _0(u_0)$, $ {\bf Q} _1(u_0)$, $ {\bf Q} _2(u_0)$ and $ {\bf Q} _3(u_0)$,

\includegraphics {figures/bezier-patch-5e}


Calculating with the Other Parameter

If we reverse the order of the sums in the defining equation and regroup, we find that

$\displaystyle {\bf P} (u,v) \: = \: \sum_{i=0}^{m}
\left[ \sum_{j=0}^n {\bf P} _{i,j}
B_{j,n}(v) \right] B_{i,m}(u)
$

which implies, if we do the above construction again, that we can first fix $ v=v_0$, define control points $ {\bf Q} _0(v_0)$, $ {\bf Q} _1(v_0)$, $ ...$, $ {\bf Q} _n(v_0)$ and define the equation as

$\displaystyle {\bf P} (u,v_0) \: = \: \sum_{i=0}^{m} {\bf Q} _i(v_0) B_{i,m}(u)
$

which is again a Bézier curve lying on the surface.

Thus, we can either do this procedure by fixing $ u$ first, or fixing $ v$ first, and we obtain the same result.


Summary

The Bézier patch is a direct extension of Bézier curves to surfaces. The definition of the patch follows directly the definition of the curve, with the primary differences being the use of an array of control points and the bivariate Bernstein Polynomials. However, the patch can be treated as a continuous set of Bézier curves, and the calculations to find a point on the patch can be reduced to finding several points on curves. The calculations are parameter independent in that it does not matter whether we start with the $ u$ or $ v$ parameter.


\begin{singlespace}
\noindent
\footnotesize\bfseries All contents copyright (c) ...
...ment, University of California, Davis \\
All rights reserved.
\end{singlespace}


Ken Joy
2000-11-28