Disclamer: Rendering the Coons patch is part of 3D Graphics homework, but finding the normals at a given point isn't. Just curious.
Here's what I got so far:
It's a Coons patch defined by four Hermite curves. I render the Coons patch by making a mesh of triangles from points calculated on the Coons patch.
The surface could look much smoother than it actually is if I could figure out how to get the normal of the patch at any given point, instead of using the normals of the flat triangles.
Now I know that if I have two tangents of the surface at a given point, their cross product will give me what I look for. I also know that, for an Hermite curve in 2D space, finding the tangent means getting the derivative, which is easy if you see Hermite curve as a product of matrixes and the vector (1, t, t^2, t^3); just use this vector instead (0, 1, 2t 3t^2). The normal is just the perpendicular of the tangent then:
But how do I translate that knowledge into finding the two tangents necessary for finding the normal of the Coons patch at a given point? My shaky programmer maths fail me.
EDIT: Here's how I build my Coons patch. Taken at Wikipedia. The 4 curves are Hermites.
Given four space curves c0(s), c1(s), d0(t), d1(t) which meet at four corners c0(0) = d0(0), c0(1) = d1(0), c1(0) = d0(1), c1(1) = d1(1); linear interpolation can be used to interpolate between c0 and c1, that is
$L_c(s,t)=(1-t) c_0(s)+ t c_1(s) $
and between d0, d1
$L_d(s,t)=(1-s) d_0(t)+ s d_1(t) $
producing two ruled surfaces defined on the unit square.
The bilinear interpolation on the four corner points is another surface
$ B(s,t) = c_0(0) (1-s)(1-t) + c_0(1) s(1-t) + c_1(0) (1-s)t + c_1(1) s t. $
A bilinearly blended Coons patch is the surface