Pomax is a developer who writes interactive guides on Bézier curves, fonts, and graphics, and builds JavaScript tools around them.
HN commenters call his Bézier primer one of the best resources for anyone implementing Bézier curves.
For #1, try to explain it to a friend, preferably in person, possibly via a chat app, but definitely not via email. Then base your writing on the way you explained that. (But like, with complete sentences.) This is the best method I know for shaking off the instinct to sound like other people's writing (i.e: like technical papers) instead of just explaining things.
Here's three examples of excellent explanations via very different techniques:
[1] https://pomax.github.io/bezierinfo/ - Bezier curves, exhaustively technical but well-indexed and just really well explained
[2] https://directtovideo.wordpress.com/2011/02/25/ceasefire-all-falls-down/ - Advanced and unorthodox rendering techniques, narrative format, basically the opposite priorities of a paper (assumes you can fill in the gaps on how, details more what worked and why it's being used)
[3] http://archive.is/XjbUy (supposed to be at qntm.org/gay, but apparently being rewritten) Database normalization principles via the lens of making a database handle gay marriage, humorous
Also, if you're explaining sequential bayesian filtering by any chance (my specialty), I'd really like it if someone actually wrote down the awful formal version with the point-wise Bayes Theorem and the giant integral convolving over your state transition function, then explained how particle filters / kalman filters / hidden markov models get around how awful that is. It's how I introduce the topic at work but I don't have my slides handy out…
It sounds like you've got something specific in mind when you say, "modeling". The term modeling is used in a lot of different situations to mean different things. For example, it could mean to make a 3d model in Blender, it could mean to pose for someone to paint you or to take a photo, with databases it's used to mean modeling the data, with statistics it's used to mean finding a way to simply represent and reason about the data (create a model of it).
The things you've listed out make me guess you want to write 2d or 3d image rendering software. Is that right?
If that's the case, there's no substitute for trying to recreate certain algorithms or curves using a language or tool that you're comfortable with. It'll help you build an intuition about how the mathematical object behaves and what problems it solves (and doesn't). All of these approaches were created to solve problems, understanding the theory of it doesn't quite get you there. If you don't have a good place to try out functions, I recommend https://thebookofshaders.com/05/ , https://www.desmos.com/calculator , or https://www.geogebra.org/calculator .
A good place to start is linear interpolation (lerp). It seems dead simple, but it's used extensively to blend two things together (say positions or colors) and the other things you listed are mostly fancier things built on top of linear interpolation.
https://en.wikipedia.org/wiki/Linear_interpolation
For bezier curves and surfaces here are some links I've…
>I just added a weirdly missing short section on plain rational beziers
That's great! Thanks for writing and maintaining this document over the years!
Coincidentally, I was referencing the section on offsetting [0] just last week and read the following,
>There is a small class of polynomials where the square root is also a polynomial, but they're utterly useless to us: any polynomial with unweighted binomial coefficients has a square root that is also a polynomial. ...We can already create offset curves for points, we call them circles, and they have much simpler functions than Bézier curves.
and thought, something like: "That's correct because Bézier curves in the context of this document, SVG, HTML canvas and fonts means polynomial (i.e non-rational) Bézier curves."
But if you're now considering rational Bézier curves as in-scope for the document that changes things doesn't it ? E.g Circles represented as rational Bézier quadratics, and Pythagorean Hodographs [1].
[0] https://pomax.github.io/bezierinfo/#offsetting
[1] http://demonstrations.wolfram.com/G1HermiteInterpolationWithPythagoreanHodographCubicCurves/
Thanks! I celebrate weird hobby web sites. Here are some of my favorites:
* 59828 different definitions of "triangle center" https://faculty.evansville.edu/ck6/encyclopedia/ETC.html
* Amazing reference on bezier curves https://pomax.github.io/bezierinfo/
* Sunbeam radiant toaster http://automaticbeyondbelief.org/
* How to pack geometric shapes inside other shapes https://erich-friedman.github.io/packing/
* Pictures of library cards https://librarycards.tripod.com/id1.html
* All about pc fans https://nick-black.com/dankwiki/index.php?title=PC_Fans
* Cross sections of candy bars https://scandybars.tumblr.com/
* All kinds of info about bicycles https://www.sheldonbrown.com/
* Every type of plastic used by lego https://bricknerd.com/home/every-type-of-plastic-used-by-lego-5-20-22
* Ian's Shoelace Site https://www.fieggen.com/shoelace/
For anyone with enough formal mathematics background to follow the argument, Lyle Ramshaw’s monograph, On multiplying points: the paired algebras of forms and sites, supplies the clearest formalism for understanding and working with Bézier curves and various CAGD surface primitives. http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-169.html (Note: ~150 page math book, takes some work to follow.)
Also check out the pomax bezier curve primer, which is filled with interactive diagrams and nice explanations of algorithms for doing anything you might like with Bézier curves, http://pomax.github.io/bezierinfo/ (previous discussions, https://news.ycombinator.com/item?id=11402656 https://news.ycombinator.com/item?id=8804691)
Here’s an interactive picture of how the splitting with lerps works: https://pomax.github.io/bezierinfo/#splitting
Did you ever doodle parabolas on graph paper by drawing straight lines? That’s one way to see why you can form nonlinear curves using only lerps. (For example https://mathcraft.wonderhowto.com/how-to/create-parabolic-curves-using-straight-lines-0131301/)
Your thought is correct - this does (in a sense) move along the curve to produce new control points, and the subset does match the curve exactly. And the new control points are non-linear too! (The inner ones, anyway.) Pay attention to how the new control points are chosen - to split you take one control point from each level of the lerp tree.