0

Hi people i have 2 question related to Decasteljau algorithm,they are more of a general questions,but if im right it could help solving many problems.Here it is:

We have some sufrace: Ʃ(i=0,n) Ʃ(j=o,m) Bi,n(U),Bi,m(v) Pi,j analysis that i have found says that first we take some value for one parameter u=uo,then we itterate other parametar v -> 1 get a set of points,then increment u by one etc....for loop inside for loop in code language.My question is can we fix one parameter U=Uo for what ever value,and then just compute points on for parameter v?Because all points that are on one curve are also on the surface,and if distance between curves approaches to zero (which itteration really is) we can apply DeCasteljau algorithm only to one set of curves itterating only one parameter.Or i got something wrong?:) Second question is i havent really figured out what do we really need DeCasteljau algorithm for,unless we are drawing curves by hand?If we know order of the curve we can easily form Bernstain polynoms for that curve order and compute point for given value of parametar.Because when you unwrap Decasteljau what you get is Bernstain polynom? So like i said,please help have i got i wrong?

python starter
  • 183
  • 1
  • 12

1 Answers1

1

Yes you can fix one parameter (say U) and change the other (V) to generate an iso-U curve.

You can see the things as if you had an NxM array of control points. If you perform a first interpolation on U (actually M interpolations involving N control points), you get M new control points that define a Bezier curve. and by varying U, the curve moves in space.

The De Casteljau's algorithm is used for convenience: it computes the interpolant by using a cascade of linear interpolations between the control points. Direct evaluation of the Bernstein polynomials would require the precomputation of the coefficients, and would not be faster, even when implemented by Horner's scheme, and can be numerically less stable.

The De Casteljau's algorithm is also appreciated for its geometrical interpretation, and for its connection with the subdivision process: if you want to build the control points for just a part of a Bezier curve, De Calsteljau's provides them.

  • So if i understand you can really only do recursion on one set of curves,for one parameter to get all the points that you need on surface. – python starter Jul 14 '14 at 20:28
  • Yep, to mesh a surface, you compute N curves (defined by sets of M control points) and on every curve you compute M vertexes. –  Jul 14 '14 at 20:30
  • When it comes to DeCasteljau im not sure about what you said,but please correct me if im wrong since you sound like you know what are you speaking about.When you say "coefficients" you are refering to control points coordinates,right?If that is the case we have them in a first place.And when it comes to Horner wouldnt recomend using it because it is prone to errors especially when coefficients vary alot – python starter Jul 14 '14 at 20:35
  • The coefficients are those that you compute from the coordinates of the control points and the Binomial numbers, be it in the Bernstein basis or the canonical basis (1,t, t²,t³...). Instability is not due to Horner's scheme, it is due to the polynomial representation itself. –  Jul 14 '14 at 20:44
  • Hmmm now im not sure if I got you.let say we have 3rd order curve bernstains which provide us with points on this curve (and the curve it self) are:(1-t)3*Po+3t(1-t)2*P1+3t2(1-t) *P2+t3*P3 where P0,P1,P2,P3 are coordinates for control points.I just applied those,with out any further computations.Sorry if i am asking stupid stuff,I recently got interested with this topic – python starter Jul 14 '14 at 20:51
  • .....and Binomial coefficients can be easily computed from Pascals triangle,right?Plus i think that i saw a code which computes both polynoms and coefficients – python starter Jul 14 '14 at 20:59
  • The De Castlejau's algorithm IS Pascal's triangle, enhanced/generalized with a weighting parameter. Instead of just adding two values in the triangle (using weights (1, 1)), you interpolate between them (using weights (t,1-t)), and get Bernstein polynomials evaluations. –  Jul 14 '14 at 21:14
  • We don't speak differently. The coefficients of, say, t(1-t)^2 are 3.X1, 3.Y1, 3.Z1. They are multiples of the coordinates, not the coordinates themselves. And if you consider the canonical basis, expressions get more complex. –  Jul 14 '14 at 21:22
  • Ok,now im over my head :)...im not nearly good at maht as you are,like i said i just started learning bout this and i know only one way to perform certain task....thanks anyway you really helped me – python starter Jul 15 '14 at 08:58