3 ms·
Bézier curves have always been awkward to use, like a too low-level language for a human to use (like machine code). The UI's I've seen nevertheless expose it a
by childintime 4y ago
Bézier curves have always been awkward to use, like a too low-level language for a human to use (like machine code). The UI's I've seen nevertheless expose it and call it a day, instead of exposing a better interface, and compiling the requested curve to Bézier.
Obviously you know a lot more than I do, so allow me to question: I wonder why the ideal (desired) behavior/esthetics wasn't defined first. Then one would work from there towards an implementation. Now, it feels like CS found some sharp stone and decided to use it to cut off some meat, without reflecting on what the tool actually should look like, and eventually getting to the conception of a knife.
To summarize, why are computer graphics so hung up on Bézier to begin with? Are there no other methods? Was there ever a quest for the algorithmically simplest method which yields aesthetically pleasing results, and work from there?
- mikst 4y agoThe general problem with starting with desired result and working towards the implementation is that there is no guarantee you will find solution. Not all desired results are feasible or possible even.
- deleted 4y ago[deleted]
- raphlinus 4y agoIt's a super good question. I would say two things here. First, defining the ideal aesthetics is a really hard problem. When you start listing the various properties of curves (basically chapter 2 of my thesis), you find that there are relentless tradeoffs. Case in point: Cem Yuksel's C2 spline (cited elsethread) lists off a bunch of desirable properties, including local support, but then fails to be closed under subdivision. Turns out you can't have both. For the application it was designed for (taking a sequence of points from a hair simulation and defining geometry that can be rendered, preserving the continuity of the specular highlights), it's great, but I wouldn't want to design a font in it. Another set of tradeoffs: the conclusion of my thesis is that the Euler spiral is the ideal interpolating spline for making smooth curves. So why isn't it more widely used? Two problems: first, you don't always want optimum smoothness, sometimes you want curves with high tension. Second, when you "push" the curve too far, the math doesn't converge to a unique solution, and the curve jumps around, which is really not a great user experience. [It turns out that these two issues are related: I believe, but haven't yet firmly established, that by increasing the tension when deviation goes up, you can get a unique solution that's also continuous with respect to the input parameters. My prototype is promising but the solver is not 100% robust when pushed hard. It's a difficult problem.] The second half of this is that Béziers occupy a really sweet spot in this tradeoff space: they're not as smooth as Euler spirals for making interpolating splines, but they're not that far off either. And they can represent high tension, inflection points, and it's easy to draw approximate superellipses, which is an extremely important family of shapes for font design and other tasks. The fact that the math is simple means you can do all the other computational geometry that's needed. I am on that quest to define a better curve family, but it's pretty far from the top of my priority list right now, so I expect progress to be slow. It's more of a life goal than something I'm actively working on now. The reason this popping up now is that I used a few days during my vacation to revisit it.