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.