Talk:De Casteljau's algorithm

Active discussions
WikiProject Computer graphics (Rated Start-class, Low-importance)
WikiProject Mathematics (Rated Start-class, Low-priority)

Dynamic Programming

It would be nice to add a remark regarding Dynamic Programming and how the algorithm may be implemented using a tabular method or a recursive method (possibly with memoization). Also, describing the existing implementations in terms of which approach they take might be helpful (e.g., Haskell implementation is recursive whereas the Python implementation is tabular). --SomeTimeLater (talk) 16:27, 24 December 2021 (UTC)

Untitled

I would like to see this illustrated: any takers? --Phil | Talk 12:49, Sep 22, 2004 (UTC)

Illustration would be really nice. Perhaps Κσυπ Cyp would do one if asked nicely.MathMartin 13:40, 22 Sep 2004 (UTC)

Just added the illustration and few words disscussing the geomtric interpretation of what is going on. The image was prepared in Asymptote (), I include herewith the sources in case someone wishes to modifie the image one day (don't worry about licensing, I release it under public domain). Pkoprowski 17:36, 7 October 2006 (UTC)

Is there a reason the images from the Bezier_curves page aren't shown here? RaydenUni 20:33, 18 December 2006 (UTC)

Image sources

size(10cm,4cm);
real t = 0.33;
pair[][] P = {{(0,0), (0.25,1.5), (1,2), (1,0)},

{(0,0), (0.5,1), (1,2), (1,0)}, {(0,0), (0.5,1), (1,2), (1,0)}, {(0,0), (0.5,1), (1,2), (1,0)}};

path C[] = {nullpath, nullpath, nullpath, nullpath};
path g,ctr,d;
g = P..controls P and P..P;
d = scale(0.025)*unitcircle;
int i,j,k;
C = P--P--P--P;
for(i = 1; i <= 3; ++i) {

for(j = 0; j <= 3-i; ++j) { P[i][j] = (1-t)*P[i-1][j] + t*P[i-1][j+1]; C[i] = C[i]--P[i][j]; }

}
for(k =  0; k < 3; ++k) {
draw(shift((2*k,0)) * C[k]);
for(i = 0; i < 4-k; ++i) {
string L = format("\$P_%d\$",i);
label(L, shift((2*k,0)) * P[k][i], i < (4-k)/2 ? W : E);

filldraw(shift((2*k,0)) * shift(P[k][i])*d); }

draw(shift((2*k,0)) * C[k+1], dashed);
for(i = 0; i < 3-k; ++i)

draw(shift((2*k,0)) * shift(P[k+1][i])*d);

draw(shift((2*k,0)) * g);
}

I'm confused. What is little b? --jivy 16:48, 29 October 2005 (UTC)

Never mind little b, what about all the other variables? 129.11.146.164 (talk) 10:23, 12 November 2008 (UTC)

Would it be more clear to say that bi,n(t) is the Bernstein basis polynomial? I don't see what little b means just by itself.Ten-K (talk) 10:58, 3 March 2010 (UTC)

German article in english Wikipedia?

The article http://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm is written in german. Is this a mistake, a stopgap until an english translation becomes available or something else? -- Roland Kaufmann Insert non-formatted text here

I fail to see how using Haskell clarifies the algorithm. Should have been pseudocode or something with a transparent procedural syntax. Angry bee (talk) 20:30, 31 May 2010 (UTC)

I think that the example Haskell code implements the algorithm rather lucidly, though I was initially confused by its choice of variable names. -vk (talk) 03:15, 11 May 2013 (UTC)

I totally agree. For the vast majority of people, a procedural implementation would be clearer, like the one found here. —Ben FrantzDale (talk) 13:31, 10 October 2014 (UTC)
From someone who is familiar with programming in general but not Haskell, the current example is rather opaque. An example like linked above would be very helpful. --Miguelmurca (talk) 10:17, 29 January 2018 (UTC)
Haskell does not clarify. It is, of course, of use to Haskell programmers, but not to anybody else. JDAWiseman (talk) 16:42, 20 January 2019 (UTC)

Numerical stability

The intro says that this algorithm is "slower for most architectures when compared with the direct approach, it is more numerically stable". I believe it, based on the fact that this algorithm is based entirely on linear interpolation between points, and so it should be well behaved and doesn't involve taking the difference of large powers of numbers, but this should be expanded upon. —Ben FrantzDale (talk) 13:33, 10 October 2014 (UTC)

Stopping condition

Recursive algorithms need a stopping condition. Please could the stopping condition be explained more overtly? JDAWiseman (talk) 16:42, 20 January 2019 (UTC)