The Unit Normal to a Parametric Surface
Suppose that
r
(
u,v
) is a parametrization of a given surface. Then
(
u,v
) and
(
u,v
) are tangent to the surface at the point
r
(
u,v
), and as a result, the cross product
x
is perpendicular to both
(
u,v
) and
(
u,v
). Consequently, the cross product
x
is perpendicular to the tangent plane, which implies
x
is
normal
to the surface
r
(
u,v
).
The unit vector in the direction of
x
is defined to be the
unit surface normal.
That is, the unit surface normal to a parametric surface
r
(
u,v
) is given by
n =
Let's look at an example.
Example:
Find the unit surface normal to
r
(
u,v
) =
for
u
= 0..2
and for
v
= -1..1.
Solution: To begin with, let us define the surface as a Vector that can be manipulated with tools in the VectorCalculus package.
> | r:=Vector([cosh(v)*cos(u),cosh(v)*sin(u),sinh(v)]); |
> |
Next, we must calculate the basis vectors
(
u,v
) and
(
u,v
) and their cross product. To do so, however, we use the VectorCalculus cross product command &x.
> | r_u:=diff(r,u); r_v:=diff(r,v); ru_cross_rv:=r_u &x r_v; |
> |
The unit normal is the unit vector in the direction of the cross product. Hence, we must calculate the norm of the cross product and use it to produce a unit vector.
> | n:=ru_cross_rv/sqrt(simplify(ru_cross_rv . ru_cross_rv)); |
> |
Let's illustrate by plotting a "field"
> | umin:=0: umax:=2*Pi: vmin:=-1: vmax:=1: ugrid:=15: #Determines number of arrows used vgrid:=5: #Calculate partition widths udelt:=evalf(abs(umax-umin)/ugrid,10): vdelt:=evalf(abs(vmax-vmin)/vgrid,10): #Commands to create normal field on surface umin:=evalf(umin,10):umax:=evalf(umax,10):vmin:=evalf(vmin,10):vmax:=evalf(vmax,10): p1:=plot3d(r,u=umin..umax,v=vmin..vmax): iii:=0: ppp:='ppp': for unow from umin to umax by udelt do for vnow from vmin to vmax by vdelt do iii:=iii+1: curr_pt:=subs(u=unow,v=vnow,r): curr_vec:=subs(u=unow,v=vnow,n): #print(iii,curr_pt,curr_vec): ppp[iii]:=plots[arrow](curr_pt,curr_vec,color=green): end do: end do: ppp:=convert(ppp,'list'): p2:=display(seq(ppp[iii],iii=1..nops(ppp)),insequence=false): display(p1,p2,scaling=constrained); |
> |