📗 Smoothness of curves are usually defined by whether there are abrupt changes.
➩ Breaks or gaps.
➩ Corners.
➩ Changes in higher derivatives.
📗 Mathematically, continuity at a point at \(u\) is defined as the \(\lim_{x \to u^{-}} f\left(x\right) = f\left(u\right) = \lim_{x \to u^{+}} f\left(x\right)\).
📗 Given \(n\) points, to find a polynomial curve that passes through all the points, a polynomial of degree \(n - 1\) is needed.
➩ The coefficients are hard to compute (regression).
➩ The curve is hard to control.
➩ There can be unwanted wiggles.
➩ The resulting curve is \(C\left(\infty\right)\).
📗 Alternative 1: piecewise linear interpolation.
➩ The line segments are easy to control and predict.
➩ Only \(C\left(0\right)\).
📗 Alternative 2: piecewise polynomials (Hermite spline): Wikipedia.
➩ Connect the curves so that \(p'_{1}\) of the first segment is the same as \(p'_{0}\) of the second segment.
➩ This uses Hermite form polynomial.
➩ It requires specifying the derivatives at every point.
➩ The result is \(C\left(1\right)\).
📗 Alternative 3: piecewise polynomials (Cardinal spline): Wikipedia.
➩ Compute the derivative using the previous and next control points, meaning \(p'_{0} = s \left(p_{1} - p_{-1}\right)\) and \(p'_{1} = s \left(p_{2} - p_{0}\right)\), where \(s\) specifies the tension.
➩ When \(s = \dfrac{1}{2}\), the resulting spline is called Catmull-Rom spline.
➩ This works for closed loop too. Try this in Workbook 5.
📗 Catmull-Rom splines have \(p'_{0} = \dfrac{1}{2} \left(p_{1} - p_{-1}\right)\) and \(p'_{1} = \dfrac{1}{2} \left(p_{2} - p_{0}\right)\) for every curve segment connecting \(p_{0}\) and \(p_{1}\) and use the previous \(p_{-1}\) and next control \(p_{2}\) control points to compute the derivatives at \(p_{0}\) and \(p_{1}\). Try this in Workbook 5 and Project 1.
📗 Another subdivision curve that does not interpolate the control points is the B-spline (basis spline): Wikipedia.
📗 Chaikin's corner cutting algorithm can be used and the limit curve is a (uniform) quadratic B-spline.
📗 Quadratic B-spline can also be written in the form \(f\left(u\right) = \dfrac{1}{2} \left(1 - u\right)^{2} p_{1} + \left(-u^{2} + u + \dfrac{1}{2}\right) p_{2} + \dfrac{1}{2} u^{2} p_{3}\) (see Workbook readings for more details).
📗 Parameterization with \(u\) in the Hermite form is also called the natural parameterization.
📗 Changing \(u\) at a constant speed does not move \(f\left(u\right)\) along the curve at a constant speed.
📗 Arc-length parameterization is a reparameterization of a curve so that changing the parameter \(t\) at a constant speed moves \(f\left(u\right)\) along the curve at a constant speed.
➩ Analytically computing the arc-length parameterization is difficult.
➩ It can be approximated numerically by making a table of points with distances between them.