Edge surface normals

To apply the Coons patch technique, the partial derivatives of the surface at the boundary curves must be specified. We do this by constructing a surface normal along each boundary curve, in a way which is dependent only on the two vertices and vertex normals of the edge so that the surface normal will be compatible with an adjacent triangle sharing the edge and vertex normals.

By definition, the surface normals at the vertices are simply the corresponding vertex normals. The surface normals along the edges, however, must be perpendicular to the tangents of the boundary curves constructed in the previous section, but this still leaves one degree of freedom. There are two obvious candidates for the surface normal: the interpolated normal along the edge, and the boundary curve normal obtained from the second derivative. But neither works. The interpolated normal does not generally match the curve tangent along the edge, while the curve normal fails to match the the vertex normals at the endpoints. So we use a normal constructed as

$\displaystyle N_S(\alpha , \beta , \gamma )= \left[{\bf T}(\alpha , \beta , \ga...
...}(\alpha , \beta , \gamma )\right] \!\times\! {\bf T}(\alpha , \beta , \gamma )$ (10)

where $ {\bf T}$ is the tangent vector to the boundary curve, and $ {\bf n}$ is the interpolated normal on the edge. The tangent vector is simply the derivative of the boundary curve; in terms of the expressions above, these derivatives are
$\displaystyle \frac{\partial {\bf p}}{\partial \beta }(1 - \beta , \beta , 0)$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf p}_1 - {\bf p}_0 + h(1 - \beta , \beta , 0)({\bf n}_1 - {\bf n}_0)$  
  $\displaystyle \makebox[0in]{$+$}$ $\displaystyle \frac{\partial h}{\partial \beta }(1 - \beta , \beta , 0)
\left[(1 - \beta ){\bf n}_0 + \beta {\bf n}_1 \right]$  
$\displaystyle \frac{\partial {\bf p}}{\partial \gamma }(0, 1 - \gamma , \gamma )$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf p}_2 - {\bf p}_1 + h(0, 1 - \gamma , \gamma ) ({\bf n}_2 - {\bf n}_1)$  
  $\displaystyle \makebox[0in]{$+$}$ $\displaystyle \frac{\partial h}{\partial \gamma }(0, 1 - \gamma , \gamma )
\left[(1 - \gamma ){\bf n}_1 + \gamma {\bf n}_2 \right]$  
$\displaystyle \frac{\partial {\bf p}}{\partial \alpha }(\alpha , 0, 1 - \alpha )$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf p}_0 - {\bf p}_2 + h(\alpha , 0, 1 - \alpha )({\bf n}_0 - {\bf n}_2)$  
  $\displaystyle \makebox[0in]{$+$}$ $\displaystyle \frac{\partial h}{\partial \alpha }(\alpha , 0, 1 - \alpha )
\left[\alpha {\bf n}_0 + (1 - \alpha ){\bf n}_2 \right]$  

where
$\displaystyle \frac{\partial h}{\partial \beta }(1 - \beta , \beta , 0)$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf n}_0\cdot({\bf p}_0 - {\bf p}_1)
\left[3(1 \!\!-\!\! \beta )^2 - 2(1 \!\!-\!\! \beta )\right]$  
  $\displaystyle \makebox[0in]{$-$}$ $\displaystyle {\bf n}_1\cdot({\bf p}_0 - {\bf p}_1)
\left[2\beta - 3 \beta ^2\right]$  
$\displaystyle \frac{\partial h}{\partial \gamma }(0, 1 - \gamma , \gamma )$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf n}_1\cdot({\bf p}_1 - {\bf p}_2)
\left[3(1 \!\!-\!\! \gamma )^2 - 2(1 \!\!-\!\! \gamma )\right]$  
  $\displaystyle \makebox[0in]{$-$}$ $\displaystyle {\bf n}_2\cdot({\bf p}_1 - {\bf p}_2)
\left[2\gamma - 3 \gamma ^2\right]$  
$\displaystyle \frac{\partial h}{\partial \alpha }(\alpha , 0, 1 - \alpha )$ $\displaystyle \makebox[0in]{$=$}$ $\displaystyle {\bf n}_2\cdot({\bf p}_2 - {\bf p}_0)
\left[3(1 \!\!-\!\! \alpha )^2 - 2(1 \!\!-\!\! \alpha )\right]$  
  $\displaystyle \makebox[0in]{$-$}$ $\displaystyle {\bf n}_0\cdot({\bf p}_2 - {\bf p}_0)
\left[2\alpha - 3 \alpha ^2\right].$  

By construction, the boundary curve tangents are perpendicular to the vertex normals at the vertices, so equation (10) matches the direction of the vertex normals. Also by construction, the surface normal is smooth on the edges, and only depends on the two incident vertices and vertex normals, so an adjacent triangle with the same vertex normals will have matching edge normals. Substituting the appropriate derivative for $ {\bf T}$ in Equation 10 produces a viable surface normal on each edge. This construction therefore provides a viable edge surface normal, as long as neither the tangent vector nor the interpolated normal is zero.

Comments: Brian Smits
2000-06-02