POV-Ray : Newsgroups : povray.advanced-users : bicubic bezier and hermite patches Server Time
28 Dec 2024 14:44:14 EST (-0500)
  bicubic bezier and hermite patches (Message 1 to 10 of 13)  
Goto Latest 10 Messages Next 3 Messages >>>
From: Sascha Ledinsky
Subject: bicubic bezier and hermite patches
Date: 9 Mar 2004 06:56:25
Message: <404db0e9@news.povray.org>
I'd like to convert the 16 control-points of a (bicubic) bezier patch into a 
hermite patch and vice versa.
I know how to do it for curves, but with patches I don't know how the 4 inner 
bezier-controlpoints can be converted into the "twist vectors" of the hermite 
form (and vice versa).
What do the twist vectors actually represent?
Do you know an equation, or a link to some paper describing this issue?

Thanks for your help!


Post a reply to this message

From: andrel
Subject: Re: bicubic bezier and hermite patches
Date: 9 Mar 2004 10:52:07
Message: <404DE7F7.8050406@hotmail.com>
The way I do it is as follows:
For both representations I compute the values at the 16
points (0,0),(1/3,0),(2/3,0),(1,0),(0,1/3),(1/3,1/3),...(1,1)
as a function of the input parameters. This wil give a 16 by
16 matrix. Then I compute the inverses of these matrices.
conversion from bezier to hermite is then by first applying
the bezier matrix followed by the inverse hermite matrix.
You can do this in one step of course.

Hermite patches use the value at the 4 points, plus the
two first order derivatives in the u and v direction,
plus the second order derivative in the uv direction.
So we have for each corner i: A_i, dA_i/du, dA_i/dv and
d^2A_i/dudv, if this notation makes any sense to you.

If you need more help I will be glad to be of assistance,
(<didactic mode> but you generally understand it better if
you do the computations yourself </didactic mode>).

	Andrel

Sascha Ledinsky wrote:
> I'd like to convert the 16 control-points of a (bicubic) bezier patch 
> into a hermite patch and vice versa.
> I know how to do it for curves, but with patches I don't know how the 4 
> inner bezier-controlpoints can be converted into the "twist vectors" of 
> the hermite form (and vice versa).
> What do the twist vectors actually represent?
> Do you know an equation, or a link to some paper describing this issue?
> 
> Thanks for your help!


Post a reply to this message

From: Sascha Ledinsky
Subject: Re: bicubic bezier and hermite patches
Date: 9 Mar 2004 11:21:34
Message: <404def0e$1@news.povray.org>
andrel wrote:

> The way I do it is as follows:
> For both representations I compute the values at the 16
> points (0,0),(1/3,0),(2/3,0),(1,0),(0,1/3),(1/3,1/3),...(1,1)
> as a function of the input parameters. This wil give a 16 by
> 16 matrix.

16 x 16 ?

> Then I compute the inverses of these matrices.
> conversion from bezier to hermite is then by first applying
> the bezier matrix followed by the inverse hermite matrix.
> You can do this in one step of course.

I'll try that.

> Hermite patches use the value at the 4 points, plus the
> two first order derivatives in the u and v direction,
> plus the second order derivative in the uv direction.
> So we have for each corner i: A_i, dA_i/du, dA_i/dv and
> d^2A_i/dudv, if this notation makes any sense to you.

I've read about the twist vectors being the mixed partial derivatives, I just 
can't imagine what that means :-)
In the bezier form I can visualize the surface "bending towards" the 
control-points. In the hermite form the first derivatives are the tangents, but 
is there a geometric interpretation of the twist vectors?

Thanks a lot!


Post a reply to this message

From: andrel
Subject: Re: bicubic bezier and hermite patches
Date: 9 Mar 2004 12:09:46
Message: <404DFA2B.3090807@hotmail.com>
Sascha Ledinsky wrote:

> andrel wrote:
> 
>> The way I do it is as follows:
>> For both representations I compute the values at the 16
>> points (0,0),(1/3,0),(2/3,0),(1,0),(0,1/3),(1/3,1/3),...(1,1)
>> as a function of the input parameters. This wil give a 16 by
>> 16 matrix.
> 
> 
> 16 x 16 ?
you have 16 points and 16 parameters.
for the bezier the 16 control points and for the
hermite 4 points, 4 x 2 first order derivatives
and 4 second order derivatives.

Therefore: you start with 16 values and do a matrix
multiplication to get 16 other values. So it must
be a 16 by 16 matrix (and if it was not square you
could not invert it).

The 'interpolation' is independent (and the same) for the
x, y, and z coordinates.

Perhaps I should add that I am a bit lazy and have not
done the inversion by hand. I used a program to do
it for me.

	Andrel


Post a reply to this message

From: Dave Matthews
Subject: Re: bicubic bezier and hermite patches
Date: 9 Mar 2004 16:48:41
Message: <404e3bb9$1@news.povray.org>
andrel wrote:

> Perhaps I should add that I am a bit lazy and have not
> done the inversion by hand. I used a program to do
> it for me.
> 
>     Andrel

Come on!  What's happened to people these days?  Why, I remember when I 
used to invert a dozen 16x16 matrices by hand before breakfast! ;-)

(Thanks for the explanation, by the way.  I'd also (amazingly) wondered 
about this a while back, then put it on the shelf, where it got lost 
amongst many other dusty things.)

Dave Matthews


Post a reply to this message

From: andrel
Subject: Re: bicubic bezier and hermite patches
Date: 9 Mar 2004 17:32:55
Message: <404E45E7.3040809@hotmail.com>
Dave Matthews wrote:
> 
> 
> andrel wrote:
> 
>> Perhaps I should add that I am a bit lazy and have not
>> done the inversion by hand. I used a program to do
>> it for me.
>>
>>     Andrel
> 
> 
> Come on!  What's happened to people these days?  Why, I remember when I 
> used to invert a dozen 16x16 matrices by hand before breakfast! ;-)
Well, these the good old days. Although to be honest I think I could
just invert a 6 by 6 by hand before breakfast and even then I would
have made a few sign mistakes.

> (Thanks for the explanation, by the way.  I'd also (amazingly) wondered 
> about this a while back, then put it on the shelf, where it got lost 
> amongst many other dusty things.)

My pleasure. On the subject of Hermite patches: because they are
defined in the cornerpoints, it is trivial to align them. For that 
reason I think they merit perhaps more attention in this group.
On the other hand, as all descriptions of bicubic patches (Bezier,
Hermite and e.g. specifying 16 actual points) result in the same
surface, perhaps a macro package will be sufficient.

	Andrel


Post a reply to this message

From: Sascha Ledinsky
Subject: Re: bicubic bezier and hermite patches
Date: 11 Mar 2004 04:26:26
Message: <405030c2$1@news.povray.org>
I've got to delve into that.
Thanks a lot for your help!
-Sascha


Post a reply to this message

From: andrel
Subject: Re: bicubic bezier and hermite patches
Date: 15 Mar 2004 18:16:39
Message: <4056392C.7040405@hotmail.com>
Have you solved your ploblem yet.

Today in the train I realized that my suggestion
is correct, but that it is too much influenced by
the fact that I do have a program to solve the inverse
of a 16 by 16.

Rethinking it from the perspective of: 'how would
I solve this by hand?' often gives better results.
- there are only three types of points in the (realized)
  patch: corner points (4), side points (8) and center
  poinys (4)
- cornerpoints are in all representations the same, so
  we do not have to apply any interpolation.
- sidepoints are only influenced by the two cornerpoints
  on that side and in case ot the bezier patch the control
  points on that side, and in the hermite case by the
  2 derivatives along the side. All in all we need 4
  numbers only to do the conversion from one representation
  to the other. We use symmetry to apply the same 4 to
  every sidepoint of course.
- For the center points we need only 16 numbers to
  describe the conversions.
All in al we need compute only 4+16 numbers to do
all conversions. so the 16 by 16 matrix is a bit overkill
(I will keep using it because it greatly somplifies
  my code but that is another issue).

   Andrel
Sascha Ledinsky wrote:

> I've got to delve into that.
> Thanks a lot for your help!
> -Sascha


Post a reply to this message

From: Sascha Ledinsky
Subject: Re: bicubic bezier and hermite patches
Date: 17 Mar 2004 06:50:57
Message: <40583ba1$1@news.povray.org>
As I was able to compute all but the four inner bezier controlpoints (or the 
hermite twist vectors) I searched the internet again and found the following 
equation to convert from bezier to hermite (or vice versa):

d^2P/dudv(0,0) = 9(P00-P011+P10-P11)

I'll have to try it, but it looks promising.

Anyway, thanks a lot for your help!
-Sascha


andrel wrote:
> Have you solved your ploblem yet.
> 
> Today in the train I realized that my suggestion
> is correct, but that it is too much influenced by
> the fact that I do have a program to solve the inverse
> of a 16 by 16.
> 
> Rethinking it from the perspective of: 'how would
> I solve this by hand?' often gives better results.
> - there are only three types of points in the (realized)
>  patch: corner points (4), side points (8) and center
>  poinys (4)
> - cornerpoints are in all representations the same, so
>  we do not have to apply any interpolation.
> - sidepoints are only influenced by the two cornerpoints
>  on that side and in case ot the bezier patch the control
>  points on that side, and in the hermite case by the
>  2 derivatives along the side. All in all we need 4
>  numbers only to do the conversion from one representation
>  to the other. We use symmetry to apply the same 4 to
>  every sidepoint of course.
> - For the center points we need only 16 numbers to
>  describe the conversions.
> All in al we need compute only 4+16 numbers to do
> all conversions. so the 16 by 16 matrix is a bit overkill
> (I will keep using it because it greatly somplifies
>  my code but that is another issue).
> 
>   Andrel
> Sascha Ledinsky wrote:
> 
>> I've got to delve into that.
>> Thanks a lot for your help!
>> -Sascha
> 
>


Post a reply to this message

From: andrel
Subject: Re: bicubic bezier and hermite patches
Date: 17 Mar 2004 08:14:36
Message: <40584F11.60102@hotmail.com>
Ok, I wil put the generation of the four 16 by 16 matrices
on my todo list. It may be a few days before I have some time
to do it. If you have access to Matlab it will be even easier,
then I could send you some of my scripts.

Further down on my list will be to create some macros for
the conversion and even further down to create some
tutorial pages on bicubic patches in POV and how to convert
from one representation to the other (unless someone already
did that of course).

	Andrel

Sascha Ledinsky wrote:

> As I was able to compute all but the four inner bezier controlpoints (or 
> the hermite twist vectors) I searched the internet again and found the 
> following equation to convert from bezier to hermite (or vice versa):
> 
> d^2P/dudv(0,0) = 9(P00-P011+P10-P11)
> 
> I'll have to try it, but it looks promising.
> 
> Anyway, thanks a lot for your help!
> -Sascha
> 
> 
> andrel wrote:
> 
>> Have you solved your ploblem yet.
>>
>> Today in the train I realized that my suggestion
>> is correct, but that it is too much influenced by
>> the fact that I do have a program to solve the inverse
>> of a 16 by 16.
>>
>> Rethinking it from the perspective of: 'how would
>> I solve this by hand?' often gives better results.
>> - there are only three types of points in the (realized)
>>  patch: corner points (4), side points (8) and center
>>  poinys (4)
>> - cornerpoints are in all representations the same, so
>>  we do not have to apply any interpolation.
>> - sidepoints are only influenced by the two cornerpoints
>>  on that side and in case ot the bezier patch the control
>>  points on that side, and in the hermite case by the
>>  2 derivatives along the side. All in all we need 4
>>  numbers only to do the conversion from one representation
>>  to the other. We use symmetry to apply the same 4 to
>>  every sidepoint of course.
>> - For the center points we need only 16 numbers to
>>  describe the conversions.
>> All in al we need compute only 4+16 numbers to do
>> all conversions. so the 16 by 16 matrix is a bit overkill
>> (I will keep using it because it greatly somplifies
>>  my code but that is another issue).
>>
>>   Andrel
>> Sascha Ledinsky wrote:
>>
>>> I've got to delve into that.
>>> Thanks a lot for your help!
>>> -Sascha
>>
>>
>>


Post a reply to this message

Goto Latest 10 Messages Next 3 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.