3 ms·
One big aspect that made Bezier popular was local support, i.e. moving control points resulted in expected changes in the same direction. It's interesting that
by diabllicseagull 2mo ago
One big aspect that made Bezier popular was local support, i.e. moving control points resulted in expected changes in the same direction. It's interesting that this is the result of a search for 'a curve family better suited for interactive design than cubic Beziers.' I think it's better for achieving curve quality in the sense of curvature changes, but not so much in interactivity.
- WillAdams 2mo agoYeah, editing TrueType fonts w/ B-splines which have a shared off-curve control point between two on-curve control points is nightmarish as a small change will ripple through the entire outline.
- dahart 2mo agoI haven’t done any font editing but is this true in general? Sounds like some kind of application-defined constraint. You’re talking about quadratic splines with the shared approximating point between interpolating points, and probably quadratic Bézier, not B-splines, I would guess. Quadratic Bézier would do this if the application decides to constrain all tangents to be smooth, which is a choice, not a property of the spline. Quadratic B-splines do not in general have this property; you can move any of the control points and have local control of the curve that doesn’t extend beyond the two neighboring control points. The difference is that B-splines don’t have interpolating control points in general - the curve only approximates all the control points, and you have to use phantom points or duplicated points to ensure the curve touches them.
- WillAdams 2mo agoMostly font editors use Bézier curves with four control points, so the effect of moving an off-curve point is limited to that portion of the curve from the associated on-curve node up towards the opposing on-curve node as affected by the other on-curve node. It is my understanding that only a couple of very expensive font editors use B-splines where there are three control points which ripple as I noted, however it seems that FontForge supports order2 (quadratic, TrueType) or order3 (cubic, PostScript).
- adrian_b 2mo agoTrying the example from TFA, I think that it is easy to acquire a good intuition about how the curve moves when you pull a control point and the shapes of the curves that you can obtain are more beautiful and more interesting than what you obtain with cubic Beziers. So I believe that if for you the "interactivity" does not seem better, that is more likely to be caused by being much more familiar about how cubic Beziers behave, from past experience, than because these hyperbezier curves were really less suited for interactivity. Also, the current implementation in JavaScript seems buggy. For me, the poor approximation by cubic Beziers of some important curves, like conics and the Euler spiral, is an extremely serious defect, so I like these hyperbezier curves much more and I intend to investigate how efficient can they be, from a computational viewpoint.
- Karliss 2mo agoThere are two bad properties in terms of interactivity (and for other uses). In some configurations hyperbezier explodes towards infinity or at least way outside the bounds of control points. Cubic beziers don't do that, if control points are bounded the curve will be as well. This is direct result of how cubic bezier can be calculated with series of linear interpolations. Other issue was that there were discontinuities while moving through parameter space or at least very sudden jumps, small changes of control points caused curve flip to completely different shape.
- shuwix 2mo agoOne big aspect that made bezier curves popular was Quake 3 Arena. That was literally first time general public even heard the name.
- Synaesthesia 2mo agoThey were a part of computer graphics for a long time before that, 2D and 3D.
- shuwix 2mo agoHow many people knew about them prior and after Q3A?
- dahart 2mo agoI’ve been fiddling with curves a long time and I haven’t seen the Q3A-Bézier reference - what are you referring to exactly? Is there some blog post, and was this about game programmers knowing about cubic Bézier curves? Most of the ‘general public’ still haven’t heard of Bézier curves. I don’t doubt something Q3 related might have popularized it. I’m familiar with the fast inverse sqrt approximation that was popularized by Q3A. That’s not what you’re thinking of, is it? (https://en.wikipedia.org/wiki/Fast_inverse_square_root https://en.wikipedia.org/wiki/Fast_inverse_square_root) But animators and most people in graphics and rendering (the Pixar, ILM, and Siggraph types) as well as all font designers and mathematicians and car designers and CAD people all knew about Bézier curves long before Quake 3 Arena.
- shuwix 2mo agoDunno your age. You're probably bit younger than me. You're right, I'm referencing to inverse sqrt. Bezier curves were the main talking point about Quake 3 engine throughout all PC magazines when Quake 3 demo came out. Because it was like nothing ever seen before, and noone ever expected it to run ~20-30FPS on period HW. It wasn't a talking point for too long as with full game, Quake 3 became top multiplayer game, and graphics behind it were not important anymore.
- raphlinus 2mo agoThere are two separate questions here. One is how much moving control points creates expected changes in the same direction. Béziers nail this, as the position of a point at t is a linear combination of the control points, with the Bernstein polynomials as weighting functions. So it always feels like direct control. With my mapping, you get this for a nice big chunk of the parameter range – small to moderate angles and control point distances. But this property does fall apart when pushing to extremes. The other question is whether the control is local. As others have remarked, this has much more to do with the way the curve is embedded into a spline than the curve family itself. In particular, it is deeply affected by the continuity constraints. As payment for the local support, cubic Béziers only give G1 continuity. Euler spiral splines, by contrast, are G2 but changes do cause those ripples. The pen tool prototype linked in the blog post suggests giving designers more choices. If you specify all control points, you get G1 just like a cubic Bézier. But it also gives the choice of specifying one control point on a smooth endpoint, and solving the other for G2 continuity. In my experience, it feels more like local control than Euler spiral-like splines. When you want smoother curves, you do that, and when you're willing to sacrifice continuity for local control, that's also possible.