Bezier curves are really common in computer science (including animations, vector graphics, fonts, interpolation, etc.) as easy ways to join points together with smooth curves. The curve is defined with "control points", and it joins 2 of the control points, but the remaining control points that it does not necessarily touch are used to fine-tune its shape (they pull/attract the curve towards it). I believe that you can see cubic* Bezier curves in action with Scratch's reshape tool in the costume editor. You can read more about Bezier curves on the Wikipedia page here: https://en.wikipedia.org/wiki/B%C3%A9zier_curve. The geometry looks really cool, but I didn't show this method step-by-step in this project because it would make it slow, and I do it all at once with a parametric equation: P = nC0 (1-t)^(n) t^0 p0 + nC1 (1-t)^(n-1) t^1 p1 + nC2 (1-t)^(n-2) t^2 p2 + .... + nCn (1-t)^0 t^n pn + where nCr is the binomial coefficient, (p0, p1, p2, ..., pn) are the control points (as vectors), and t is the parameter (varies along the curve between 0 and 1). The computationally expensive task of calculating the binomial coefficients is only done when the number of points is updated. *Bezier curves can be classified by their "degree", a bit like polynomials ("quadratic", "cubic", "quartic", etc.), and the polynomials used to define Bezier curves in fact have the exact same degree. A degree D curve needs n=D+1 points to define it. Usually, only quadratic and cubic curves are used and joined together to make bigger curves; the rest are unnecessarily expensive to calculate