◄ WORLD V · SONNY 5DART 086 · a helldive at the net

THE BEZIER CURVE named for the man who did not invent it

The smooth curve behind every font glyph, vector drawing, and animation ease. It is drawn by de Casteljau’s algorithm — nothing but repeated linear interpolation between control points, a shrinking triangular cascade that collapses to the point on the curve. And its two names honour two different men: the curve to Bézier, the algorithm to de Casteljau, who had it first.

THE TECHNIQUE repeated lerp, a collapsing triangle

Between each adjacent pair of control points, take the point a fraction t of the way along (a lerp); that gives one fewer point. Repeat on the new points, and again, until a single point remains — that is the curve at t. Slide t to sweep the curve; the faint segments are the collapsing cascade. live demo

HISTORY & CREDIT two names, two men, and a trade secret

“Bézier invented the Bézier curve” — he invented published it; de Casteljau had it three years earlier, but Citroën locked it away. cited

1912 · Sergei Bernstein introduces the Bernstein basis polynomials (proving Weierstrass’ theorem) — the real math foundation, decades before any CAD.
1959 · Paul de Casteljau (Citroën) devises the repeated-lerp algorithm on control points he calls “poles” — the true first invention, filed as a trade secret and forbidden to publish.
early 1960s · Pierre Bézier (Renault) independently reaches the same curves using control vectors; Renault lets him patent and publish (UNISURF, 1968), so his name sticks.
1972 / 1985 · Forrest spots that Bézier’s curves are the Bernstein basis; de Casteljau finally publishes his own account (“Formes à pôles”) — 26 years late.

De Casteljau’s algorithm is the stable, drawable method, not the fastest (Horner on the Bernstein form is O(n)). de Casteljau 1959 / Bézier 1968

RECOMMEND FOR I-13 nothing but lerp, on parallel arrays

The whole algorithm is a + (b − a)·t per coordinate — one subtract, one multiply, one add — and it runs on the compiler:

$ i13 run bez.i13 # cubic P0..P3, t=0.5, cascade over parallel x[]/y[] bx = 2 by = 2.25 # matches the Bernstein closed form exactly
Recommend: nothing new — a strict no-wall, in the family of Bresenham (003) and Verlet (082): pure f64 lerp. The control points are (x,y) pairs — the PS-014 pair want — but that wall is sidestepped, not hit: hold them as two parallel f64 arrays x[]=[0,1,3,4], y[]=[0,3,3,0], and the cascade overwrites them in place. Because I-13 arrays hold f64 only, parallel 1-D arrays are exactly the right shape — no struct type needed.
Note: the one thing that would strain the language is cosmetic — wanting a single array of (x,y) structs instead of two parallel arrays. The dart proves the pair want is avoidable here.