[comp.graphics] Need help converting almost Coons type surface patches...

tima@agora.uucp (Tim Anderson) (12/11/90)

Hello NET! I humbly ask the net for assistance...

I am trying to convert an almost COONS style surface patch into something
that I can dump in and out through IGES. If it were merely COONS, it would
be pretty easy...

Given parametric variables u and v,
      Hermite interpolant [F0 F1 F2 F3] = [u^3 u^2 u 1] | 2 -2  1  1 |
							|-3  3 -2 -1 |
							| 0  0  1  0 |
							| 1  0  0  0 |

      in other words F(u) = U M

      Points and appropriate tangents

            | p00  p01  pv00  pv01  |
        B = | p10  p11  pv10  pv11  |
            | pu00 pu01 puv00 puv01 |
            | pu10 pu11 puv10 puv11 |

You get a COONS surface when you do this:

   F(u) * B * /transpose F(v)

Now lets define
   (rab - rcd) = /norm (pab - pcd)
   where a,b,c,d /element [0,1]

   In other words (r10 - r00) = The distance between point p10 and p00.

and

1) g(v) = F0(v)*(r10-r00) + F1(v)*(r11-r01)
   h(u) = F0(u)*(r01-r00) + F1(u)*(r11-r10)

2) U(u,v) = [F0(u) F1(u) g(v)F2(u) g(v)F3(u)]
   V(u,v) = [F0(v) F1(v) h(u)F2(v) h(u)F3(v)]

Our *new and exciting* COONS is 

3) U(u,v) * B * /transpose V(u,v)

So instead of just Coonsing across the surface, we 1) blend the appropriate
chord lengths accross the surface, 2) scale the tangent vectors down
to keep the bloody thing from looping, then 3) Coons what's left over.

I've been beating on this thing for awhile, and yet I still don't quite
see any way to convert this thing nicely. Does anyone have some hints
on this thing? I think that I've been looking at the trees for so long that
I might be missing something...

tima@agora.hf.intel.com

PS: I think some guy named Butterfield may have documented this type of
Coonsian surface. I don't have the original reference so I cannot credit
the appropriate person for coming up with this kludge (oops, I mean 
enhancement) to Coons style surfaces.