Talk:Bézier curve

G1 continuity
What is G1 continuity? --AxelBoldt

Continuous curves with tangents pointing in the same direction. Used by graphics/font workers http://www.google.com/search?q=g1.continuity

What is the point on the cubic curve in the recursive algorithm?

What does "A truly parallel Bézier curve cannot be derived mathematically" mean?


 * Good question... I have no idea. &#922;&#963;&#965;&#960; Cyp  21:59, 15 Sep 2004 (UTC)


 * It means you can't derive a second curve that is parallel to the first by mathematical operations on the control points of the first. It works for some cases, but not in general. Maybe the phrasing could be better, but it seemed clear enough to me.Graham 22:57, 15 Sep 2004 (UTC)


 * What does parallel mean, when it's about curves? Is it a relation between two Bézier curves? &#922;&#963;&#965;&#960; Cyp  23:09, 15 Sep 2004 (UTC)


 * Well strictly speaking parallel refers to straight lines or planes, so if we are speaking strictly, then 'parallel curves' is an oxymoron. However, in everyday language it should be clear what this means - a second curve that maintains a constant distance from the first at every similar point, like a pair of railway tracks rounding a bend. If there is a "proper" word for this I don't know what it is. The ability to do this is actually rather important in the real world, where bezier curves are not just mathematical curiosities but are a practical way of implementing computer graphics, etc. Creating a curve 'parallel' to another is often needed, but coming up with an algorithm for it requires some cunning, because of the mentioned limitation of the curve's essential properties. I made a stab at rewording the sentence, but 'parallel' is still in there ;-) Graham 23:47, 15 Sep 2004 (UTC)

Wow, if only there was an explanation for the layman. Someone below claims this is it: I did maths to the end of school and have no idea about this, and in particular the use of these curves in Illustrator remains a mystery to me. Please help!

Merging Bezier curve & Bernstein polynomial
I want to merge Bézier curve and Bernstein polynomial. I do not care what the resulting article is called. The two article are talking about the same subject and so there is a lot of duplicated material and inconsistent notation. Any comments ?MathMartin 12:52, 19 Sep 2004 (UTC)

I changed my opinion. The material should stay on separate pages, although the notation should be more consistent. What is the term for splines that are patched together using polynomials in Bézier form ? And what exactly is a Bezigon ? Is the term common ? What I was trying to do when rewriting Bézier curve and Bernstein polynomial was to make the connection between the two topics clearer. At the moment I think the articles should be structured like this
 * Bernstein polynomial mathematical treatment of Bernstein polynomials.
 * Bézier curve a Bernstein polynomial restricted to [0,1], cubic and quartic curves as examples
 * Bezigon or ?? a spline composed of polynomials in Bezier form, application in industry

It is not clear to me what the last two pages should be called, perhaps someone with more knowledge can propose some naming. MathMartin 10:20, 20 Sep 2004 (UTC)

✅. Currently there are 3 articles exactly as you suggested. The article about "a spline composed of polynomials in Bezier form" is titled Bézier spline, with Bezigon as a redirect to that article, which I think is appropriate. --DavidCary (talk) 04:48, 21 February 2013 (UTC)

Removed from page

 * Generalizing the cubic case leads to higher order curves which require more than four control points. The use of high order Bezier curves and surfaces has been limited to a few highly specialized and expensive surface modeling and industrial design applications.


 * For most applications, complicated curves are pieced together from cubic curves to form bezigons: the first Bézier curve has control points A, B, C, and D, the second has control points D, E, F, and G, and if G1 continuity (i.e. smoothness of the curve) at D is required, then the direction of C-D needs to equal the direction of D-E.

I removed the following two paragraphs from the page. The first does not contain information, and the second is a bit obscure. MathMartin 17:09, 19 Sep 2004 (UTC)


 * I would hazard a guess from your user name that you're a mathematician rather than one who soils his hands on real-world applications ;-) If that's the case then I'd gently put you straight about the second part being "a bit obscure". This is how bezier curves are almost always used in practice for computer graphics, etc. Cubic curves are relatively fast to compute, higher order ones are not, so chaining the cubic segments together to form a desired shape is done in every case I've ever come across. And to ensure a smooth "join" between segments, the end point tangents are made the same, which is what that statement is saying. Another reason higher order curves ar not generally used is because most graphics programs need to implement the "find closest point on the curve to an arbitrary point" functionality, and that requires finding the roots of a fifth order polynomial - which can be done. But higher orders have no known algorithm. I really think that the article would be of most interest and use to BOTH mathematicians and as in an introduction for graphics. Therefore these real-world aspects should definitely be included.Graham 23:50, 19 Sep 2004 (UTC)

You misunderstood me, perhaps because my comment was too cryptic. I understand the sentence
 * Generalizing the cubic case leads to higher order curves which require more than four control points. The use of high order Bezier curves and surfaces has been limited to a few highly specialized and expensive surface modeling and industrial design applications.

I put the mathematical definition at the top, so there is no need to generalize form the cubic case to higher order curves. Stating that only low order curves are used in the industry without any reason is not very useful.


 * Another reason higher order curves ar not generally used is because most graphics programs need to implement the "find closest point on the curve to an arbitrary point" functionality, and that requires finding the roots of a fifth order polynomial - which can be done

Now that is a good reason not to use high order Bezier curves, you should have put it in the article. I intend to expand the article in the next few days and will include it. Just a short correction, even roots of a fifth order polynomial can generally not be found analytically.


 * For most applications, complicated curves are pieced together from cubic curves to form bezigons: the first Bézier curve has control points A, B, C, and D, the second has control points D, E, F, and G, and if G1 continuity (i.e. smoothness of the curve) at D is required, then the direction of C-D needs to equal the direction of D-E.

I understand the need to patch together low degree Bezier curves to form splines, and that one must observe certain smoothness conditions when patching the curves together. But I think Bezier curve article is the wrong place to talk about splines, (to some extend I already talked about splines in the introduction) and the paragraph was very badly written. What is the direction C-D ? What is G1 continuity ? You do not have to explain those terms to me, I know them or can guess them. But for the reader who does not know the material, who just wants to look up some information, the paragraph is obscure.

To sum up the gist of my arguments. Yes I am a mathematician. I believe there should be formal mathematical definition even if they scare the laymen. But there should be real world explanations and examples too. But the math definitions and the laymen explanations should not be mixed, they should be put in separate sections. In an encylopaedia it is better to provide a general definition and then give examples then to give an example and then generalize form this example.

On a different note perhaps you can shed some light on the notation used on the page. What is the deal with the upper case Bézier coefficients (A, B etc.) written in bold ? Why not call them p_0, p_1 ..?MathMartin 10:20, 20 Sep 2004 (UTC)


 * MathMartin wrote: "Stating that only low order curves are used in the industry without any reason is not very useful." Sure it's useful, it's a fact about the real world that is good to know!  Luckily this fact is now in the article, perhaps in a more appropriate place.  The math explanation is not the place for these facts about the real world.  John Baez (talk) 01:21, 16 September 2014 (UTC)

Removed some more paragraphs
Points on a quadratic Bézier curve can be computed recursively:
 * 1) Let A, B and C be the startpoint, control point and endpoint of the curve respectively.
 * 2) Let D be the midpoint of the line AB.
 * 3) Let E be the midpoint of the line BC.
 * 4) Let F be the midpoint of the line DE. F is a point on the curve.
 * 5) Recurse with A = A, B = D and C = F.
 * 6) Recurse with A = F, B = E and C = C.

The points on a Bézier curve can be quickly computed using a recursive procedure which uses division by two as its fundamental operation and avoids floating point arithmetic altogether;
 * $$\begin{vmatrix}

A' \\ B' \\ C' \\ D' \end{vmatrix} = \begin{vmatrix} 1 &  0  &  0  &  0 \\  1/2 & 1/2 &  0  &  0 \\  1/4 & 2/4 & 1/4 &  0 \\  1/8 & 3/8 & 3/8 & 1/8 \end{vmatrix} \cdot \begin{vmatrix} A \\ B \\ C \\ D \end{vmatrix}$$


 * or

D:=(C+D)/2, C:=(B+C)/2, D:=(C+D)/2, B:=(A+B)/2, C:=(B+C)/2, D:=(C+D)/2    (No language in particular)

I removed the above paragraphs from the article. They don't make any sense to me. MathMartin 15:00, 20 Sep 2004 (UTC)


 * Not sure who wrote what in there (know I wrote the matrix), but reading it (the removed paragraphs, that is) now, it doesn't make any sense to me either... It was supposed to mean that, given a Bézier curve with points A, B, C, D, the Bézier curve can be cut into two separate Bézier curves, one with points A', B', C' and D', and the other with points 'A, 'B, 'C and 'D, where $$\begin{vmatrix}

A' \\ B' \\ C' \\ D' \end{vmatrix} = \begin{vmatrix} 1 &  0  &  0  &  0 \\  1/2 & 1/2 &  0  &  0 \\  1/4 & 2/4 & 1/4 &  0 \\  1/8 & 3/8 & 3/8 & 1/8 \end{vmatrix} \cdot \begin{vmatrix} A \\ B \\ C \\ D \end{vmatrix}$$ and $$\begin{vmatrix} 'A \\ 'B \\ 'C \\ 'D \end{vmatrix} = \begin{vmatrix} 1/8 & 3/8 & 3/8 & 1/8 \\  0  & 1/4 & 2/4 & 1/4 \\   0  &  0  & 1/2 & 1/2 \\   0  &  0  &  0  &  1 \end{vmatrix} \cdot \begin{vmatrix} A \\ B \\ C \\ D \end{vmatrix}$$. (Equivalent of substituting t:=2t and t:=2t-1. (Where := is assignment.)) Instead of using matrices, it is possible to cut the curve in half by setting the points to the average of neighbouring points several times in the right order, where the talk of a mysterious division by two comes in. &#922;&#963;&#965;&#960; Cyp  01:00, 21 Sep 2004 (UTC) and 00:27, 21 Sep 2004 (UTC)


 * The article is much better for Martin's edits I think. I didn't follow the mtraix stuff either since there's no context for it - I've added a simple C example in the applications section which does give a practical method for computing a cubic curve. I hope it's not too long, and reasoanably correct (untested). Feel free to fix any bugs! Graham 00:36, 21 Sep 2004 (UTC).

Is it possible to return structures in C? (Haven't tried testing the code.)

Here's something like what I'd write (which isn't quite as long), to do the same thing. Haven't tested. Not sure whether 2 multiplies or 6 add/subtracts are faster.


 * 1) define ComputeBezier(a,b,c) computebezier((float *)(a),(b),(float *)(c))

void computebezier(float *cp, int n, float *res) { float s, s2, s3, t, t2, t3, st2, s2t, ds; float ax, ay, bx, by, cx, cy, dx, dy; ax=*cp++; ay=*cp++; bx=3**cp++; by=3**cp++; cx=3**cp++; cy=3**cp++; dx=*cp++; dy=*cp; ds=1./(n-1); s=0; t=1; while(n--) { s+=ds; s2=s*s; s3=s*s2; t-=ds; t2=t*t; t3=t*t2; st2=s*t2; s2t=s2*t; *res++=ax*t3+bx*st2+cx*s2t+dx*s3; *res++=ay*t3+by*st2+cy*s2t+dy*s3; } } &#922;&#963;&#965;&#960; Cyp  11:03, 21 Sep 2004 (UTC)
 * It's for quadratic curve? Here is example in Java. Method draws quadratic curve on specified Graphics object in n steps.

private void bezier(Graphics g, int n, double x1, double y1, double x2, double y2, double x3, double y3){ double sx1=(x2-x1)/n, sx2=(x3-x2)/n, sy1=(y2-y1)/n, sy2=(y3-y2)/n; for(int i=0;i<n;++i){ g.drawLine((int)(x1+i*sx1+i*i*(sx2+sx1)/n),                  (int)(y1+i*sy1*2+i*i*(sy2-sy1)/n),                   (int)(x1+(i+1)*sx1+(i+1)*(i+1)*(sx2+sx1)/n),                   (int)(y1+(i+1)*sy1*2+(i+1)*(i+1)*(sy2-sy1)/n)); } }
 * You can return structs at least from ANSI C 99, not sure when this came in, I know that old dialects couldn't. My code is meant to serve as a clear example, not necessarily what a software engineer would actually write as optimum code. I believe it's easier to relate the code to the maths in the article than your example, which is no doubt faster... we must remember that this is an encyclopaedia, not a code text book - maybe even C is too technical here, a BASIC (shudder) or Pascal example might be better for readability.Graham 23:46, 21 Sep 2004 (UTC)

Dimension
Just a short note on the introduction.

Generalizations of Bézier curves to three (or more) dimensions are called a Bézier surface and a Bézier triangle.

This is not a very clear formulation. In mathematics a curve is a 1 dimensional object because it depends on one parameter t. A Bézier surface would be a 2 dimensional object because it depends on 2 parameters. Consider this explanation: a curve can be drawn in a 2 dimensional space or in a 3 dimensional space (or any dimension for this matter) but it still is a curve, a 1 dimensional object.

For me this is clear. But other people may not know this. Perhaps someone can reformulate the sentence to make it clearer. Until then I will just remove the exact dimension number and speak about higher dimension. MathMartin 12:22, 21 Sep 2004 (UTC)


 * Again this may be a layman vs. mathematician situation. Mathematically the bezier curve may be one dimensional, but intuitively it's two dimensional because it produces a point (x,y). I agree that the maths should be rigorous but I also think we musn't lose sight of the audience - which in general are not other mathematicians (who will have better references to work from than this), or even computer graphics programmers, but just people who are interested and looking for a simple introduction to the topic, but with enough info to go away and do something useful with it if they want to. That's my opinion anyway. Graham 23:52, 21 Sep 2004 (UTC)

Mathematically the bezier curve may be one dimensional, but intuitively it's two dimensional because it produces a point (x,y).

I rewrote the defininition to clear this up. How many points the curve produces is dependend on the dimension of the control points. If I choose control points in 3 dimensional space I get a curve in 3 dimensional space. If this is not clear I will expand the material in the article.

mathematicians (who will have better references to work from than this)

You should not make assumptions about the audience :) Even mathematicians need to look stuff up, and start from the beginning when learning a new topic. Most math books are crap because they do not contain enough examples and motivation.

An encyclopaedia should be accessible to a wide range of people. I think at the moment the article is well balanced. The laymen can read and understand the history section (should be expanded) and the applications in computer graphics sections. The programmer can grab the examples and implement them. And the mathematician (or any person with some training in math) can lookup the definition.

''I believe it's easier to relate the code to the maths in the article than your example, which is no doubt faster... we must remember that this is an encyclopaedia, not a code text book - maybe even C is too technical here, a BASIC (shudder) or Pascal example might be better for readability''

I agree. The code should match the math in the article and perhaps C is not the best choice. But as far as I know there is no standard computer language on wikipedia for examples, so whoever writes the code gets to choose the language. In my opinion code should only be used the make algorithms clearer. Complete implementations should be put at http://wikisource.org/wiki/Wikisource:Source_code and linked form the article.

MathMartin 12:11, 22 Sep 2004 (UTC)

source code
should be put here http://wikisource.org/w/index.php?title=Beizer_Curve&action=edit preferred language should be Python cause it's a high level, easily readable, used by mathematicians worldwide language that has bright future (pascal/fortran/basic are dead)


 * Well feel free to do that then. However, I think you'll find that C is more universally understood by programmers since most other languages that are commonly used now are based on it - C, C++, Java, Javascript, etc etc. Perhaps Python is for all I know but I don't know Python - but I do know C which is why I wrote the Bezier code in that language. I think we should guard against just using a language because it's "flavour of the month" - let's give it a chance to establoish itself as C has in the last 30+ years. Graham 06:24, 26 Dec 2004 (UTC)

The coefficients for the cubic curive are calculated wrong in the example source code given. This can easily be verified by drawing lines between the control points and see that the points on the curve calculated by the example code goes outside the lines between the control points.

The correct coefficients should be (easily expanded from the parametric form):

$$a = -A + 3B - 3C + D$$ $$b = 3A - 6B + 3C$$ $$c = 3B - 3A$$

such as:

$$B(t) = at^3 + bt^2 + ct + A$$

The code for generating this (in Java) is:

private Point pointOnCubic(float t) { Point res = new Point;

float t2 = t * t;     float t3 = t2 * t;

// cp[] is an array of Point's specifying the control points float ax = -cp[0].x + 3*cp[1].x - 3*cp[2].x + cp[3].x;     float bx = 3*cp[0].x - 6*cp[1].x + 3*cp[2].x;      float cx = 3*cp[1].x - 3*cp[0].x;

float ay = -cp[0].y + 3*cp[1].y - 3*cp[2].y + cp[3].y;     float by = 3*cp[0].y - 6*cp[1].y + 3*cp[2].y;      float cy = 3*cp[1].y - 3*cp[0].y;

res.x = (int) ((ax * t3) + (bx * t2) + (cx * t) + cp[0].x); res.y = (int) ((ay * t3) + (by * t2) + (cy * t) + cp[0].y);

return res; }

-- netd


 * I will check it and try and set up a place where I can actually run it. The code is derived from some I'm using in a project and it draws Bezier's correctly - as far as I can see it looks right here but I may be missing something. Certainly the actual code I'm using (which is far too complex to use directly as an example here) does not draw outside the control point bounds.


 * Please note that when adding comments to a talk page, you should always add them to the bottom of the page (not the top) if they are a new toic, or appended to an existing section if it's an already open topic. You should always sign and date your comment using four tildes (~) following the comment, otherwise it's very hard to see whan something was added. I had to use the history and diffing the file to pick out your comment, so you're lucky I even noticed it. I have moved it to the right place on the page. Graham 00:51, 17 Apr 2005 (UTC)


 * I have just now tested the code posted here exactly as given. It works exactly correctly as far as I can see, and does not draw outside the control point tangent lines. This isn't much of a surprise, since I've been using very similar code for quite a while with no problems, but it might help to reassure others who don't trust it having read the above. While I don't necessarily dispute the analysis, I'm a practical guy and the code as given works well. I stick by it! Graham 04:06, 26 October 2005 (UTC)

History
The history section says that Pierre Bézier just used the curve, but [here] I found that he actually discovered the curve independently: "This set of curves was discovered around the same time by two people: Bezier and de Casteljau. Bezier discovered it using the Berstein polynomials, while de Casteljau found a geometric representation". Is it right? Rodrigo Rocha 02:05, 16 Jun 2005 (UTC)


 * It is right. Due to the fact they didn't come from the same engenieer school, it is still a French issue to know who found that the first one. Generally people say that Bezier discovered the mathematical form and de Casteljau invented the algorithm - the only reason which made bezier surfaces so usefull -.   Celui from french wikipedia.

00
Am I missing something or should we adopt the convention that 00 = 1? Say we need to calculate the following Bernstein polynomial (for a given n, with i=0 and t=0):


 * $$b_{i,n}(t):= {n \choose i} t^i (1-t)^{n-i} \qquad$$
 * $$b_{0,n}(0):= {n \choose 0} 0^0 (1-0)^{n-0} \qquad$$

Here we have 00.


 * Of course 00 = 1 !!

00 = 0*0-1 = (1-1)*0-1 = 0-1-0-1 = 0

=> 0=1

(Which would be a valid argument if 0-1 were an element of *any* number field...)94.0.147.195 (talk) 04:11, 23 September 2010 (UTC)

Dropped roots comment
I dropped "and there is no analytic formula to calculate the roots of polynomials of degree 5 and higher" for 2 reasons : Firstly, in most cases numerical approximations can be used instead of analytical solutions. But more importantly, it is seldom necessary to compute t. The most frequent operation is to compute the coeficients with Gaussian elimination if not directly. -- Nic Roets 09:18, 30 July 2005 (UTC)

I'd second dropping that phrase. There is no *algebraic* formula for the roots of a quintic, but there is a closed form solution in terms of hypergeometric functions (which are analytic). That is, there is no formula for the roots in terms of the coefficients using a finite number of additions, multiplications, and root takings (for quintic and higher order polynomials). There is, however, a formula involving a finite number of additions, multiplications, root takings, and evaluations of hypergeometric functions (for polynomials of degree greater than five, one needs generalizations of the hypergeometric functions). -- jimbo 00:44, 12 October 2005 (CDT)

Circle description
Some curves that seem simple, like the circle, cannot be described by a Bézier curve or a piecewise Bézier curve I have a different opinion. If you create a cubic Bezière curve which starts at [0,1],goes through [sqrt(1/2),sqrt(1/2)] and ends at [1,0] (its control points are [0,1],[x,1],[1,x],[1,0] where x=0.552285), the resulting curve is equivalent to a circle - the point distance from radius only differs in tenths of permille of the radius.--janndvorakk 10:13, 1 January 2006 (UTC)

If there is some difference in radius, no matter how miniscule, then the curve cannot describe the circle. Dysprosia 10:24, 1 January 2006 (UTC)


 * The Bézier spline article and its corresponding talk page is a better place for describing a Bézier spline that looks like a circle. --DavidCary (talk) 22:03, 8 August 2011 (UTC)

Constructing Bézier curves
I've added a section on constructing Bézier curves including some animated GIFs, because I think it helps to visualise Bézier curve formulae. I thought about adding a derivation so you can see from the construction how the Bézier formula comes about because someone was complaning "Wow, if only there was an explanation for the layman". For example something like this for a quadratic curve:

$$\mathbf{Q}_0(t) = (1 - t)\mathbf{P}_0 + t\mathbf{P}_1 \mbox{, } t \in [0,1]$$

$$\mathbf{Q}_1(t) = (1 - t)\mathbf{P}_1 + t\mathbf{P}_2 \mbox{, } t \in [0,1]$$

$$\mathbf{B}(t) = (1 - t)\mathbf{Q}_0 + t\mathbf{Q}_1 \mbox{, } t \in [0,1]$$

So doing some substitution...

$$\mathbf{B}(t) = (1 - t)((1 - t)\mathbf{P}_0 + t\mathbf{P}_1) + t((1 - t)\mathbf{P}_1 + t\mathbf{P}_2) \mbox{, } t \in [0,1]$$

$$\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + t(1 - t)\mathbf{P}_1 + t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2) \mbox{, } t \in [0,1]$$

$$\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2 \mbox{, } t \in [0,1]$$

I decided this was more appropriate to a high school textbook than an encyclopedia so I left it out. Twirlip 16:43, 27 August 2006 (UTC)
 * Wow, your section rocks. The article was understandable enough, but your section really finished the deal (especially the sexy animations.) Thank you JakeParker 02:07, 2 September 2006 (UTC)

In main page I have change these formulae:

$$\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t)$$

Correct formulae (Bézier curve is an interpolation between two degree $$n-1$$ Bézier curves):

$$\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_1\mathbf{P}_2\ldots\mathbf{P}_n}(t)$$

Animations
The animations for the curves are too fast for anyone who actually wants to study them. Perhaps slow them down by about fifty percent or so.

Radical 05:34, 10 September 2006 (UTC)


 * How's that? Twirlip 20:15, 12 September 2006 (UTC)

These animations are great! Someone should nominate one as a featured animation. I never really understood bézier curves as fully as I should have before, but all the math is clear, without even reading the math. --jacobus (t) 17:53, 12 October 2006 (UTC)

I agree, the animations are incredibly helpful. 70.22.140.232 22:09, 3 February 2007 (UTC)


 * I also agree, and have suggested the animations for WP:FPC at WP:PPR (Picture peer review/Bézier curve animations). --Lph 01:09, 11 February 2007 (UTC)


 * This animations finally helped me understand what is so special about Bezier curves. The small size of the sample C code also gives a hint to its importance, they are much easier than the formula that appear so prominent at the beginning of the article.  I would even add that I was lucky to skip over those formula and got to the animation and code section before dismissing the article and remain in the dark.

As it turns out, the animations seem to indicate that the figures made with nails and string, as shown, for example, at http://www.stitchingcards.com/section.php?xSec=25 make the contour of a Bezier curve. (You'll probably think the next think I'll do is promote lava-lamps in articles related to convection or materials density change with temperature)

As for the layman understanding of what Beziers curves are or why are they so useful, I would like to suggest to change the order of the article so the explanations easier for the laymen go first. After all, few of us would have never learned there was something called a Bezier curve if it wasn't for their simple construction. --DevaSatyam 12:07, 19 August 2007 (UTC)

New links
I added a few links to my pages on how to construct Bezier curves geometrically. If you want to incorporate that into the main article, go right ahead. -SharkD 21:45, 30 October 2006 (UTC)

a bit of doubt... would be thankfull if answered
well.. i'm into high school, so i don't really have much understanding about bezier curves. But i was trying to plot a bezier curve in PowerToy Calc. I used the formula given in the talk section "Construction Bezier curves". This was what i used:

B(t) = ((1 - t)^2)*p + (2*t*(1 - t))*q + (t^2)*r

here, p, q and r were integral variables which i gave different values later. Now my doubt was.. whatever it is that i'm doing, is it right?? coz the curves which were plotted.. didn't really seem like bezier curves to me. If i'm not doing it right.. how is it done right?? i'd be grateful for the help.

Rohan2kool 10:47, 11 April 2007 (UTC)

In order to get a curve, p,q, and r need to be 2 dimensional vectors (i.e. points). If you just use scalar values, you'll probably end up with a parabola. I'm not familiar with PowerToy Calc, so I don't know what kind of support it has for parametric equations. Hope that helps.

mistercow (talk) 01:11, 26 January 2008 (UTC)

Reference link in doubt
The first reference Bézier curves,, redirects to , which is about Bézier surfaces. I wonder if perhaps this page on Bézier curves was intended.--Jwwalker 18:11, 10 August 2007 (UTC)

The code for rendering
The C code we give for rendering cubic Béziers is very inefficient. Why don't we present the standard technique of repeatedly dividing the curve into two until each part is sufficiently close to a straight line? --Doradus 14:55, 19 August 2007 (UTC)


 * I have removed it. De Casteljau's algorithm is much more efficient.  --Doradus (talk) 01:22, 14 December 2007 (UTC)

Cubic beziers in fonts
Should say that one reason that cubic beziers are convenient in fonts (such as in PostScript Type 1 etc.) is that you can require that a cubic curve has two specified endpoints, and a specified tangent angle at each endpoint, and still have some further control over the shape of the curve between the endpoints. By contrast, if you use quadratic beziers, then specifying two endpoints and two corresponding tangent angles completely specifies the shape of the curve -- if you then want to change the shape of the curve, the only way is to recut it (using different endpoints), and this may have a further chain-reaction effect on neighboring quadratic curve segments (the dreaded non-locality problem when attempting to edit Truetype fonts in native format, i.e. without converting them). AnonMoos 18:47, 1 September 2007 (UTC)

PostScript?
Considering the Bezier curve was digitally popularized prior to Illustrator, etc. with PostScript, doesn't PostScript deserve a mention? Particularly as PostScript offers first-class citizen language entities for defining these curves. —Preceding unsigned comment added by 70.68.70.186 (talk) 00:20, 16 August 2008 (UTC)

Yeah, just one more example of how PostScript just *might* be one of the most underrated and overlooked of all computer languages. Toddcs (talk) 06:13, 31 August 2009 (UTC)


 * Does anyone know why Bezier curves were chosen for Postscript originally? (Would that be "DAK" in text-speak?) Are they mathematically easier to evaluate (less computation intensity) than other polynomial curves, or allow a better "detail/graphic-ability/computation-load" ratio?  Or were they already used in specialized applications when Adobe created the Postscript standard?  A citeable source would be nice, but would probably be hard to come by.  Maybe something on folklore.org.  (Probably not citeable, but as an external link maybe)  Thanks. Jimw338 (talk) 18:17, 29 September 2019 (UTC)

Cubic Bezier, corrected formula
Hello, I corrected(niels@degooier.net) the Bezier Cubic formula from: B(t) = (1-t)3P0 + 3t(1-t)2P1 + 3t2(1-t)P2, t3P3, tE[0,1] to:  B(t) = (1-t)3P0 + 3t(1-t)2P1 + 3(1-t)t2P2, t3P3, tE[0,1] Greetings from Holland :) —Preceding unsigned comment added by 212.29.183.137 (talk) 12:30, 30 December 2008 (UTC)

Names of the Curves
Hi, is the headings for cubic and quadratic curves backwards? —Preceding unsigned comment added by 81.167.94.214 (talk) 19:24, 7 May 2009 (UTC)
 * You missed a heading, so I added one. No, the names are not backwards, although it does sound like they are. The equations are polynomials, and the names come from their degree - linear, quadratic, cubic, quartic etc. I can see how "quadratic" sounds like it should mean "of degree 4", but it doesn't, it means "of degree 2". To quote the Wikipedia disambiguation page:"In mathematics, the term quadratic describes something that pertains to squares, to the operation of squaring, to terms of the second degree, or equations or formulas that involve such terms. Quadratus is Latin for square."192.171.3.126 (talk) 11:55, 12 May 2009 (UTC)

Low Importance?
I don't think that this should be low importance- it is both heavily visited and important to Grasphics Editors like Inkscape and GIMP.Resident Mario (talk) 18:55, 18 January 2009 (UTC)
 * It's the math project that has rated it low, meaning it has a low priority with respect to the goals of the project. Other projects are free give it a different priority.--RDBury (talk) 22:25, 6 June 2010 (UTC)

Please illustrate concepts a bit more.
For example: To guarantee smoothness, the control point at which two curves meet must be on the line between the two control points on either side.

It would be nice to actually show "2 curves meeting" and the control point "at which they meet". Smoothness may possibly be intuited after illustrating the above.

I do see an illustration captioned "Example of two cubic Bézier curves patched together..", but it is not clear that there are 2 curves within. Am I just slow?

Jgsack (talk) 20:07, 30 June 2009 (UTC)jim

Derivative
The following text was removed: "In other words, the tangents in P0 and P2 both pass through P1". However that text is correct. The tangent lines to the Bezier curve at each of the end-points are lines through P1. Please explain why you think this is not true. &minus;Woodstone (talk) 00:05, 13 April 2010 (UTC)


 * Shouldn't the dots be removed, as this is regular products, not dot-products? I'm reluctant to do it, since this i s not my area of expertise, but it baffled me. Have I overlooked something? 72.48.211.208 (talk) 04:31, 20 February 2014 (UTC)


 * Dots can also be used for scalar multiplication, but scalars should not have been boldface. &minus;Woodstone (talk) 16:19, 20 February 2014 (UTC)

Spiro Spline
Is a spiro spline a special bézier curve?--92.227.184.234 (talk) 16:45, 21 July 2010 (UTC)

Removed section
{{hidden|Closed form for quadratic 2D bezier|

Closed form for quadratic 2D bezier
Using $$(x_0,y_0)$$, $$(x_1,y_1)$$ and $$(x_2,z_2)$$, the 2D bezier can be written in the form of:

x_0(1-t)^2+2x_1(1-t)t+x_2 t^2=x $$ and

y_0(1-t)^2+2y_1(1-t)t+y_2 t^2=y $$                                                                                                                      or

\alpha t^2 +\beta t = \gamma $$ and

\delta t^2 +\xi t = \eta $$                                                                                                                      where

\alpha=x_0+x_2-2x_1, $$

\beta=2x_1-2x_0, $$

\gamma=x-x_0, $$

\delta=y_0+y_2-2y_1, $$

\xi=2y_1-2y_0, $$ and

\eta=y-y_0. $$                                                                                                                      We can find $$t$$ from the above equations:

t=\frac{\gamma\delta-\eta\alpha}{\beta\delta-\xi\alpha} $$ By filling in $$t$$ into one of the two equations we find for the closed form:

\gamma^2\delta^2+\eta^2\alpha^2-2\gamma\eta\delta\alpha+(\beta\delta-\xi\alpha)(\xi\gamma-\eta\beta)=0 $$ or

(x-x_0)^2 \delta^2+(y-y_0)^2\alpha^2-2(x-x_0)(y-y_0)\delta\alpha+(x-x_0)\xi(\beta\delta-\xi\alpha) -(y-y_0)\beta (\beta\delta-\xi\alpha)  =0. $$ We can see that we have written the bezier curve into a single equation.|headerstyle=background:#dddddd}}

I just removed the above section as it has a number of problems. It's a straightforward piece of algebraic manipulation, but even in the simplest case results in a far more complex expression for the curve that loses information from the x(t), y(t) form, such as the points given by t = 0, t = 1, etc., And is hardly worth doing as it's only one special case: 2D and quadratic. Therefore I suspect it's not from any source but is OR. It's unencyclopaedically written (too much first person mostly) and has at least two errors: trivial one in the first line and a more serious one that it doesn't handle a number of cases. There could be more as I can't check any source and can't be bothered to reproduce the steps for the last overly complex expression (which isn't even fully expanded which would make it even more complex). -- JohnBlackburne wordsdeeds 14:30, 13 August 2010 (UTC)


 * Well, it's useful for showing that a quadratic Bezier curve is a segment of a parabola, since the discriminant of the conic section is 0. And since any 3 points lie on some plane, even in higher dimensions, we can find a plane that the 3 points as well as the quadratic Bezier curve lie on, so the properties still hold. --24.130.148.132 (talk) 21:07, 27 April 2013 (UTC)

closed form
I added a closed form solution for a quadratic bezier curve. However within minutes JohnBlackburne reverted my contribution as: Rv unsourced, non-notable result (OR?), unencyclopaedically written with trivial and non-trivial errors.

Let me comment to that.

Unsourced: It is unsourced as i derived it myself, seeing as i couldnt find the solution on the web. I can provide some more solution such that even you might be able to follow it.

Non-notable: Might be so, but nowhere on the internet I could find the solution or a clue to the solution. So at least I was looking for the answer. So there might be other ppl as well, so i thought id help other ppl out. Also you cannot both say its unsourced and non-notable. If its non-notable it shouldnt need a source.

unencyclopaedically written with trivial and non-trivial errors: Well unechyclopaedical maybe, maybe not. If you think you can improve my piece go ahead; trivial and nontrivial errors, please point em out to me or correct them.

On a side note, what is it with ppl that if they see some new addition that they want their mark as "I know what is best" and immediately remove it...Geez I try to contribute to the community and it gets removed within minutes. Next time i wont bother. Thank you very much. Good job —Preceding unsigned comment added by 88.159.78.227 (talk) 14:34, 13 August 2010 (UTC)
 * See my comments above for my expanded reasons. You say it is unsourced and you derived it yourself. That would make it original research and Wikipedia has a very clear policy on original research, at No original research. By non-notable I mean even though you've not provided a source I don't think I'd be able to find one as it looks unlike anything anyone would bother doing and publishing. The errors also indicated that.
 * Any of us could do mathematics and add it to Wikipedia: I could derive a rather more complex formula for e.g. cubic curves, and add it. Then another editor could add another self-derived result, then another, etc.. To stop this, which would cause chaos in many articles, editors should only add content to articles that appears reliable sources. They should use their own words, and can do simple calculations of their own where appropriate, but lengthy algebraic derivations like this must be sourced. -- JohnBlackburne wordsdeeds 14:46, 13 August 2010 (UTC)
 * Better yet, lengthy algebraic derivations like this should be avoided altogether. This is an encyclopedia, not an algebra exercise sheet.—Emil J. 14:55, 13 August 2010 (UTC)
 * I agree any of us could do it and in no way would i publish this in a scientific journal, hence its not OR, it was meant as a helpful adittion. Sorry, that i added the derivation, thought it might help somebody. And to be honest a lot of this page has trivial expansions ("examination of cases", n=5 example in "generalization", "degree of elevation" etc) that are still useful. But if needed I can provide a one line version. About it being not useful. It was useful to me, for calculating line intersections. And Im sure if it was helpful to me, it will be helpful to somebody else. Also the 3D case can be easily found. Higher than quadratic can also easily be done in the same way. I just posted the 2D quadratic as this show the method. About the first person form, well thats a matter of style. A _Lot_ of research is written in the "we" form. You must know that. Generally it is thought that the "we" form reads more easily, but it is matter for debate.

To conclude, if you think its "own research" then fine leave it out. If you think its not-useful then thats your oppinion, somebody else might have another one. I think the closed form at least deserves a mention. —Preceding unsigned comment added by 88.159.78.227 (talk) 15:35, 13 August 2010 (UTC)

Awesome animations

 * I've logged on just to stay that Twirlip's animations are simply awesome. Kudos for your contributions, Twirlip.  Great stuff indeed. -- Mecanismo | Talk


 * You're welcome :) Twirlip (talk) —Preceding undated comment added 19:05, 24 February 2011 (UTC).

Bezier curve in Universe
After reading through the comments I want to know if an example of 3D Bezier curve is possible. To my mind a helix is an example of 3D Bezier curve, my other observation suggests to me that all lines in the universe (space) are 3D Bezier curves and so can I say that there is no straight line possible in space? This is based on my understanding that a point in this Universe has always three dimensions. Comments please. Pathare Prabhu (talk) 03:35, 3 April 2012 (UTC)


 * Yes 3D Bézier curves are possible. Their definition is identical to the ones given, but the vectors Pi should then be points in 3D space. A circle, or part thereof cannot be written as a Bézier curve, so neither can be a helix. On the contrary, a straight line segment can be represented by a Bézier curve of any order, by having all control points on the line. &minus;Woodstone (talk) 08:51, 3 April 2012 (UTC)

Examination of cases
Could some mathematician add to this section an explanation of how a lower order curve changes as more points are added (i.e. quadratic curve through 6 points)? I went through many websites before I could finish my program, which is still ad-hoc. I suspect there is a very pretty explanation of how different bernstein polynomials are chosen in this case, and this math would help programmers from going astray. Thanks. — Preceding unsigned comment added by Greg Fichter (talk • contribs) 15:36, 30 December 2013 (UTC)


 * The question is rather vague. Could you be more explicit what you mean? How do you want to "add more points". Are your aware that the curve does not go "through" many of the control points? &minus;Woodstone (talk) 16:31, 30 December 2013 (UTC)


 * Greg, This may be a fundamental misunderstanding of the piecewise curve method. For a Quadraric Bezier/Bernstein curve (or any of these types of curves), different polynomials are not "selected" when using more points, you only add curve segments of the same type and must add points in the required increment (three at a time for quadratic).  If you increase the order and go to cubic, then the polys change and you need four points for each segment.  My book is designed to help understand things like this and I believe it will help you to understand this concept.  You may download my book for free here:
 * http://k9dci.home.comcast.net/~k9dci/site/?/page/Piecewise_Polynomial_Interpolation/
 * If that link is not allowed here, go to my user page and click half way down, where it says "The full text, The Fundamentals of Piecewise Polynomial Interpolation...download on this site."
 * Because I can't quite tell what you're thinking, I'm not sure where to point you. You may need to start early in the book, but try pages 12 on degree/Order, 28 on Degree/Shape, then Chapter 6 is on the Bezier itself.  You may also contact me via that site if you need more help, but I spent years editing the book to be clear at this fundamental level.  I'd have to review the article to see if the concept of piecewise segmentation is not explicit enough...
 * Best Regards, &#32;-- Steve -- (talk) 16:01, 31 December 2013 (UTC)
 * Thinking about this, perhaps the answer to your question is simply that when you add a segment, the shape of the new segment is set in the same way as it is on the first segment, but by the new set of control points. They are independently shaped (for Bezier).  It is another segment just like the first.  That is the whole purpose of these methods.  You have local control of parts of a complex curve by a small set of control points.  These segments are simply stacked end-to-end to obtain a more complex curve.&#32;-- Steve --  (talk) 16:12, 31 December 2013 (UTC)
 * Email test - IGNORE THIS. Wasn't getting email, ESteve. — Preceding unsigned comment added by 67.162.42.48 (talk) 17:00, 31 December 2013 (UTC)

subcurves are at least the order of the parent i guess, but not sure from this quote.
A curve can be split at any point into two subcurves, or into arbitrarily many subcurves, each of which is also a Bézier curve.

Modernizing the terminology a bit
I would like to modernize the terminology in the article in a few places. In particular, I would like to replace references to "straight line" with simply "line," since lines are always straight in modern terminology, and seeing the term "straight line" can give readers the confusing idea that lines may not always be straight. But I don't want to do this without giving the custodians a chance to comment ... Eleuther (talk) 00:51, 13 September 2016 (UTC)


 * Lines are not always straight in “modern terminology”. They are straight in the domain of modern Euclidean geometry. They are not even “straight” in mathematics in general, and they’re certainly not straight without qualification in general English. Thinking lines may not be straight doesn’t mean someone is confused. It means they speak plain English.


 * From New Oxford American dictionary:
 * A long, narrow mark or band: ''A row of closely spaced dots will look like a continuous line. | I can’t draw a straight line.
 * Mathematics: A straight or curved continuous extent of length without breadth.
 * (on a map or graph) a curve connecting all points having a specified common property.
 * … and so on.
 * … and so on.


 * The article is for the general English reader, not geometrists. I oppose this change. It makes the article less understandable for some people. Leaving it as “straight line” confuses no one. Strebe (talk) 05:55, 17 September 2016 (UTC)


 * Well, I disagree with almost everything you just said, but there's no need to get passionate about it. Since you hate my changes so much, I have reverted them.  I think you're being stupid, but I won't fight it. Eleuther (talk) 07:17, 19 September 2016 (UTC)


 * I've always been most persuaded by ad hominem. Its invocation clearly demonstrates that the purveyor sees no need to get passionate. Strebe (talk) 18:28, 19 September 2016 (UTC)


 * Whatever that means. By "being stupid," I meant that you seem to be arguing, fairly explicitly, for dumbing down the language at the cost of precision. I should have said that more precisely. Eleuther (talk) 07:29, 21 September 2016 (UTC)


 * There is a balance to be struck between using a precise technical meaning of words, and writing in a manner that can be understood. These pages can be used to discuss that balance. Ideally, that discussion would AGF, and be generally charming. The sentence “I think you're being stupid” falls a short of that technical standard. JDAWiseman (talk) 07:35, 21 September 2016 (UTC)


 * Thanks, JDA. I have already apologized for using the word stupid, but I do so now again. The thing that set me off was Strebe's insulting use of the word geometrist. Eleuther (talk) 09:13, 21 September 2016 (UTC)


 * My undergraduate degree in mathematics is over a quarter of a century stale, so I might be missing something, but ‘geometrist’ is not obviously insulting. And Strebe didn’t even call you the g— word: it was said of your apparent audience. JDAWiseman (talk) 09:24, 21 September 2016 (UTC)


 * Mine is even older, but I try to keep up with things, as far as I can. The usual word is geometer. Geometrist is a rarely used synonym. Strebe is clearly using this obscure term to add insult to his assertion that modern abstract geometry is irrelevant for general readers. Eleuther (talk) 14:54, 23 September 2016 (UTC)


 * Wow. Just… wow. Strebe (talk) 20:57, 23 September 2016 (UTC)


 * What are you trying to say? Please elucidate it a bit. Or are you just trying to let us know that you're stoned? Eleuther (talk) 18:41, 25 September 2016 (UTC)

Even in the field of mathematics a line is simply a one-dimensional entity. Not necessarily straight.&minus;Woodstone (talk) 09:19, 19 September 2016 (UTC)


 * I didn’t feel strongly, but on balance thought that the ‘straight’, even if technically redundant, added clarity. JDAWiseman (talk) 14:06, 19 September 2016 (UTC)

"Applicability to graphics" in 1912-1962
I have removed the second part of the sentence "The mathematical basis for Bézier curves—the Bernstein polynomial—has been known since 1912, but its applicability to graphics was not realized for another half century." -- this is a triviality of the same kind as in "Cryptography has been known since 1900 BCE, but its applicability to internet banking was not realised for another 38 centuries." --Alexey Muranov (talk) 16:21, 25 September 2017 (UTC)


 * Why are you so obsessed with removing this harmless and informative remark, on such senseless grounds? You seem to object to it based on a willful and obtuse misreading of what it actually says. In particular, you seem to think that, because there were no computers in 1912, there was no graphics in 1912. But people had been creating graphics based on mathematical formulas for centuries before 1912. The remark simply says that Bernstein polynomials weren't considered in this role until ~50 years after they were first defined. Eleuther (talk) 14:23, 28 September 2017 (UTC)


 * Mentioning a purpose a specific tool was not used for at some time, is an open door to infinite expansion. Save it till the point where it is used. &minus;Woodstone (talk) 12:19, 29 September 2017 (UTC)


 * Thanks, Woodstone, I will re-apply the remark in a form that I hope will satisfy everyone involved. Eleuther (talk) 13:23, 30 September 2017 (UTC)


 * I didn't find any application of Bézier curves to any graphics, except computer graphics. (If i understood correctly, their use by Pierre Bézier was computer graphics.)  I will appreciate any references to any examples where someone drawn some Bézier curves by hand, without using computers.  I mean in the last half century, when their application to "graphics" is well known. --Alexey Muranov (talk) 21:29, 15 May 2018 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 2 external links on Bézier curve. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20110718131613/http://www.xlrotor.com/resources/files.shtml to http://www.xlrotor.com/resources/files.shtml
 * Added archive https://web.archive.org/web/20090719011857/http://local.wasp.uwa.edu.au/~pbourke/geometry/bezier/index.html to http://local.wasp.uwa.edu.au/~pbourke/geometry/bezier/index.html

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 20:52, 1 December 2017 (UTC)

Image from this article to appear as POTD soon
Hello! This is a note to let the editors of this article know that File:Bézier 2 big.gif will be appearing as picture of the day on 2018-10-23. You can view and edit the POTD blurb at Template:POTD/2018-10-23. If this article needs any attention or maintenance, it would be preferable if that could be done before its appearance on the Main Page. Thanks &mdash; Amakuru (talk) 12:47, 16 October 2018 (UTC)

Matrix Representation
When originally viewing this page, I had hoped to see information related to the matrix representation of the spline. See: Bézier curvatures as matrix operations. --SomeTimeLater (talk) 17:40, 24 December 2021 (UTC)

Introduction
Introduction needs to be clearer, for the general (non-computer scientist) reader. I think it is important to mention right at the start that the curve is found using a computer algorithm, with the control points as the input. Hence the previous version saying: "A set of discrete control points defines a smooth continuous curve, found by an algorithm."

Saying simply the curves are defined by control points is incomplete. How these control points define a smooth curve is left as a mystery, for non-computer scientists (computer scientists may assume it is done by a code).

Regarding "in any case, control points can simply be chosen to define a curve, rather than vice versa.' All continuous curves are not strictly Bezier (i.e. you can 't find finite number of control points for any given curve- though you can find very good fits). Maybe it should be mentioned that most curves can be approximated very accurately with Bezier curves. Pskuri (talk) 00:52, 17 February 2022 (UTC)

Pskuri (talk) 00:52, 17 February 2022 (UTC)


 * I think I understand one of your points, but I’m not sure how to convey what you mean without causing more confusion. In particular, using the term “algorithm” can be misleading. The curve is related to the points through a formula, not an algorithm. It is true that an algorithm is used, in practice, to figure out what the control points need to be in order to approximate a curve, given that there is no closed-form formula for the inverse (curve-to-points). However, it is not true that only the inverse is useful and important, and it is not true that an “algorithm” is the relationship. An algorithm is only a computational method. Concerning your other points, I disagree that “how these control points define a smooth curve is left as a mystery”: the rest of the article explains it, as do the diagrams. Sometimes details like that are not suited to the brevity of the lede. I’ll give it a try, though. Strebe (talk) 18:11, 17 February 2022 (UTC)

My latest version was:

" Discrete "control points" determine a formula (a vector function) that defines a smooth continuous curve. Bézier curves can approximate a wide variety of shapes including those found in the real-world that have complicated or unknown mathematical representations."

I think my version is a) More succinct. b) I am not sure they are "usually intended" to approximate real world shapes, though they ofc they can be used for that. c) All the equations that define the curve used in the article are vector functions that are determined by the control points (see: https://en.wikipedia.org/wiki/B%C3%A9zier_curve#General_definition)

Ignoring c), I thought a prior edit was just a more succinct version of yours:

"Discrete "control points" with a formula defines a smooth continuous curve. Bézier curves can approximate a wide variety of shapes including those found in the real-world that have complicated or unknown mathematical representations."

Thanks Pskuri (talk) 21:36, 17 February 2022 (UTC)

An alternative more succinct version (accepting my point regarding c)

" Discrete "control points" determine a vector function that defines a smooth continuous curve. Bézier curves can approximate a wide variety of shapes including those found in the real-world that have complicated or unknown mathematical representations."Pskuri (talk) 21:41, 17 February 2022 (UTC)


 * The function is not determined by the control points; the function is parameterized by the control points. The function itself is the same regardless of the control points and “exists” irrespective of any particular control points. Hence, I found your verbiage confusing. Bézier curves are generally used to model shapes (more generally, functions) that are not, themselves, Bézier curves. Sometimes they are used for interpolating. But, given that almost any vector art/modeling program and all modern fonts use Bézier curves to represent shapes that are not, inherently, Bézier curves, I don’t think it should be controversial to state what they are usually intended for. Strebe (talk) 22:33, 17 February 2022 (UTC)

I don't think "usually intended" is appropriate since we don't know what drafters intentions are. Also in many cases like cars for instance they are not trying to approximate real world objects. They are creating new curves.

I spent a long time make those two sentences succinct and clear. Shall assume you weren't belittling my sincere efforts by calling it "verbiage"?

All the equations that define bezier curves are vector functions. Each bezier curve has its own vector function which is written in terms of the position vector of the control points.

I propose for now use my prior version:

"Discrete "control points" with a formula defines a smooth continuous curve. Bézier curves can approximate a wide variety of shapes including those found in the real-world that have complicated or unknown mathematical representations."

This uses fewer words than current version and also gets rid of the problem of asserting usual intent.

I suggest having another editor with mathematics background to review my proposed definition:

"Discrete "control points" determine a vector function that defines a smooth continuous curve."

The reason I prefer this is because I found "formula" too vague, also I believe this is a very simple summary of the equations on the page. Many thanks Pskuri (talk) 23:29, 17 February 2022 (UTC)


 * Shall assume you weren't belittling my sincere efforts by calling it "verbiage"? Why would you assume that?
 * I don’t think “real-world” implies “already existing”; I think a car that may or may not get built is a real-world example. What is not “real-world” is, for example, using a Bézier curve to approximate a function that isn’t intended to represent anything physical in the context in which it is used. However, if this usage of “real-world” confused you, then I agree we should find something clearer.
 * "Discrete "control points" with a formula defines a smooth continuous curve. Again, this seems vague to me at best; if I were to read this (as someone who does a lot of math) I wouldn’t be sure what it meant. This verbiage seems relatively complete and unambiguous to me: “Discrete control points used as parameters to a Bézier generating function define a smooth, continuous curve.”
 * "Discrete "control points" determine a vector function that defines a smooth continuous curve." The term “vector function” is used nowhere else on the page, and I do not believe there is a good reason to introduce it here. Much more important is that the curve is parametric, which is already stated. I also disagree with “determines” as I already noted and gave reason for.
 * If you think “usually” is problematic, then I suggest “commonly”. The point is so to inform readers why they might even bother caring about the topic.
 * Strebe (talk) 00:33, 18 February 2022 (UTC)

The part about approximating "real world" shapes applies to Bézier splines (a chain of Bézier curves), not so much to individual Bézier curves. Therefore that sentence in the lead may be confusing. Not all Bézier curves are "smooth". A third order Bézier curve may have cusp. What is left may be stated as: "A formula applied to a discrete set of control points defines a continuous curve."&minus;Woodstone (talk) 04:08, 18 February 2022 (UTC)


 * Thanks for your input. I believe Strebe may be using "verbiage" wrong. It means:"the excessive and often meaningless use of words", and hence can cause offense (inadvertantly).


 * I took 'real-world' to mean the physical world (i.e. not virtual world nor the imagination of the drafter).


 * There are some issues with this: “Discrete control points used as parameters to a Bézier generating function define a smooth, continuous curve.”

The parameter in the vector functions that define the curves (in the article) is 't'. The position vectors act in a similar way to coefficients in scaler equations. (The sentence would be ok I think if we said "the control points are parameters to a Bezier generating algorithm", i.e. parameters in a computer programming sense)


 * Regarding, "Discrete "control points" determine a vector function that defines a smooth continuous curve.": I still think this is accurate, Ofc, the reader will need to know or look up vector functions (a useful exercise to understand the maths later on). Currenlty what exactly we mean by 'formula' is a vague. In this  case it refers to the vector functions that defines the curve.

Taking into account above Woodstone comments I would propose, for time being:

"Discrete "control points" with a formula defines a continuous curve. Bézier curves can approximate a wide variety of curves including those found in the real-world, that have complicated or unknown mathematical representations."

Pskuri (talk) 05:34, 18 February 2022 (UTC)


 * I'm not sure what "discrete" means for a control point. A point is always discrete. What is meant here is a "discrete set" of control points (as opposed to the infinite number of points on the curve). I would still prefer the slightly more precise: "A formula is applied to a discrete set of control points to define a continuous curve."
 * The sentence on approximation should be moved a few lines down to apply to B-splines.
 * &minus;Woodstone (talk) 05:55, 18 February 2022 (UTC)

How about ""Control points" with a formula defines a continuous curve'. This phrasing has fewer words than "A formula is applied...". I don't think 'set of discrete' is needed, since the default is to assume the number of control points will be finite.  Regarding the point about Bezier-splines (I assume you meant Bezier splines not B-splines), how about this for opening paragraph

So how about:

A Bézier curve is a parametric curve used in computer graphics and related fields. "Control points" with a formula defines a continuous curve. Bézier curves can be combined to form a Bézier spline, which are used to approximate a wide variety of curves including those found in the real-world, that have complicated or unknown mathematical representations. Bézier curves can also be generalized to higher dimensions to form Bézier surfaces. The Bézier triangle is a special case of the latter. Bézier curve is named after French engineer Pierre Bézier, who used it in the 1960s for designing curves for the bodywork of Renault cars. Other uses include the design of computer fonts and animation.

Pskuri (talk) 16:40, 18 February 2022 (UTC)


 * The ultrashort rephrase loses the idea that the formula is always the same (per order). An intermediate shortening could be: "A formula applied to a number of control points defines a continuous curve." The rest of above proposal look fine (I did mean Bézier spline).&minus;Woodstone (talk) 07:01, 19 February 2022 (UTC)

Featured picture scheduled for POTD
Hello! This is to let editors know that File:Bézier 1 big.gif, a featured picture used in this article, has been selected as the English Wikipedia's picture of the day (POTD) for December 13, 2023. A preview of the POTD is displayed below and can be edited at Template:POTD/2023-12-13. For the greater benefit of readers, any potential improvements or maintenance that could benefit the quality of this article should be done before its scheduled appearance on the Main Page. If you have any concerns, please place a message at Wikipedia talk:Picture of the day. Thank you! &mdash; Amakuru (talk) 10:35, 8 December 2023 (UTC)

Number of lerps in De Castlejau's algorithm
Your [jacobolus] reversion &lsqb;special:diff/1228623498&rsqb; of my edit in Bezier curve was on incorrect grounds. The number of lerps is not a triangular number. The evaluation requires O(2^n) lerps because of the simple facts that it calls itself twice at each level and the problem size is reduced by 1 at each level, making it very inefficient and that should be noted. I would appreciate you un-reverting. Curtmcd (talk) 23:11, 12 June 2024 (UTC)


 * @Curtmcd This is incorrect. We do n lerps at the first level, then n-1 lerps at the next level, etc., down to one final lerp. The total number of lerps is the nth triangular number. If your implementation of this needs 2^n lerps, something is going very, very wrong. –jacobolus (t) 23:51, 12 June 2024 (UTC)
 * No, it is 2^n, because each level calls the next lower level of recursion B(t) *twice*. Given n control points, it takes exactly 2^n - 1 lerps to evaluate a single point of the curve. This ease of misunderstanding is an obvious justification for including this information in the Recursive definition section. For that reason, I ask that you undo the revert. Curtmcd (talk) 07:10, 20 June 2024 (UTC)
 * It looks like $\mathbf{B}_{\mathbf{P}_j\mathbf{P}_{j+1}\ldots\mathbf{P}_{k-1}\mathbf{P}_k}(t)$ is computed only for ranges $j$ through $k$ rather than for all subsets of $\{0, ..., n\}$.  As such, there are only $O(n2)$ values to compute, not $O(2n)$.  The amount of computation for each one is $O(1)$, so the runtime is looking like $O(n2)$.  The memory requirement looks like $O(n)$ if one saves only the values for ranges of length $l$ and $l + 1$ at any given time.  — Q uantling (talk &#124; contribs) 13:37, 20 June 2024 (UTC)
 * @Curtmcd At the first level, you compute exactly $n$ lerps, $\textstyle p_{1,0}(t) = \operatorname{lerp}(p_0, p_1, t)$ through $\textstyle p_{1,n-1}(t) = \operatorname{lerp}(p_{n-1}, p_n, t)$ starting from the $n+1$ control points. At the next level you compute exactly $n-1$ lerps, using the $n$ values you computed at the first level, $\textstyle p_{2,0}(t) = \operatorname{lerp}(p_{1,0}(t), p_{1,1}(t), t)$ through $\textstyle p_{2,n-2}(t) = \operatorname{lerp}(p_{1,n-2}(t), p_{1,n-1}(t), t)$. Then you keep going until you get to one final lerp $\textstyle p(t) = p_{n,0}(t) = \operatorname{lerp}(p_{n-1,0}(t), p_{n-1,1}(t), t)$, computed from the 2 values at the next-to-last level. In total the number of lerps is the triangular number for $n$. If you write this as a naïve recursive function you are recomputing the same quantities over and over again in an absurd waste, akin to calculating a Fibonacci number by recursively calculating each of the two previous Fibonacci numbers at each step without re-using any of your work. Don't do that. –jacobolus (t) 15:33, 20 June 2024 (UTC)
 * For more about this see De Casteljau's algorithm. –jacobolus (t) 16:47, 20 June 2024 (UTC)