POV-Ray : Newsgroups : povray.advanced-users : bicubic bezier and hermite patches : Re: bicubic bezier and hermite patches Server Time
29 Jul 2024 02:23:45 EDT (-0400)
  Re: bicubic bezier and hermite patches  
From: Sascha Ledinsky
Date: 17 Mar 2004 14:18:37
Message: <4058a48d$1@news.povray.org>
I asked because I'm interested in generating (at least G1 continuous) patches 
over a mesh of splines (cubic bezier curves). It should allow for 3-, 4- and 
5-sided patches and different "levels of detail", i.e. two small patches, 
connecting seamlessly to one side of a larger patch.

If case of 4-sided patches the spline-mesh specifies 12 of the 16 
control-points, so I'm looking for a method to compute the missing 4 
control-points. Setting the twist vectors to 0 is fine if the mesh has only 
rectangular patches, but it leads to cracks when joining non-4-sided patches.

I thought that twist vectors might be easier to handle than bezier controlpoints.

Another thing related is splitting non-4-sided patches into 4-sided ones.

-sascha


andrel wrote:
> 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

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