For the following examples I expanded the ImPlot functionality by creating a custom drag point function that would respond to both left and right mouse clicks input and have a unique style. I also expanded the ImPlotPoint data structure with overloaded operator functions for simplicity and ease of use.
Bernstein Bezier Form and De Casteljau's Algorithm

Where I STARTED…

I began with Bernstein Bezier-form (BB-form) and the De Casteljau algorithm, also known as Nested Linear Interpolation (NLI), for polynomial functions illustrating how the coefficients affect the shape of the polynomial graph. These are two different formulas that produce the same result.
There are multiple ways to calculate the BB-form such as recursion, but using recursion becomes slower the higher the degree becomes. Instead, it is faster to use Pascal's Triangle values. You can either create a lookup table of values or to prevent needing to calculate all previous values in the triangle you can jump to the exact row, which matches the degree of the polynomial, then compute half the values for the given row as they are mirrored once you hit the midpoint of that row. NLI on the other hand is a very simple and straightforward process which can also suffer slowdowns when computed recursively and instead is faster to compute by storing the values in a vector or array and reusing the array for each iteration of the interpolation. Each polynomial function uses approximately 200 t values in the range [0, 1] to produce the resulting curve.
De Casteljau's Algorithm Nested Linear Interpolation Shell Points

VISUALIZING NLI

Here I am working with Bezier curves. When performing the NLI you can store the first and last interpolations of each iteration to visualize how the algorithm functions for the given t values in the range. To aid in this visualization, I created a t slider. This allows you to see how all t values added together can form the curve. 
Bernstein Bezier-form
Midpoint Subdivision
The above images displays the same interpolating polynomial using BB-form as well as a new method using Midpoint Subdivision. In midpoint subdivision all the points in the finite set are not all on the curve. They are either on the curve, or on a tangent to the curve and the larger the approximation the closer to the curve the tangent points get. This method can produce a good approximation of the same Bezier curve. 
Newton form interpolating polynomial

INTERPOLATIng POLYNOMIALS

Here I switched to a interpolating polynomial, where the curve passes through all control points, using the Newton form. While it does pass through all controls points it can quickly explode creating extreme curves to try and accommodate all control points. 
The interpolating polynomial function of the desired form is guaranteed to exist and is unique. It's possible to set up a linear system to solve for this function, using the unknown coefficients as the variables of the system. Each equation of the system corresponds to one interpolation point. It is simpler, however, to use the Newton form since it is more efficient than solving a linear system. 
Interpolating Cubic Spline

INTERPOLATIng CUBIC SPLINES

When switching to interpolating cubic splines, there are multiple methods to choose from. Here I am using a system of linear equations combined with truncated power functions solved using Gaussian Elimination. As you can see this produces a more cohesive curve compared to the Newton form.

B-SPLINES

B-splines
Here I plotted a sum of B-Spline functions three different ways, all of which produce the same result.
In the first case, the De Boor algorithm consists of NLI to compute the coefficients. In the second case the B-Splines are defined as a divided difference. In the third case, I use Cramer's Rule and a determinate to compute a divided difference and rewrite it as a sum of shifted power functions. Computing all the determinates for Cramer's Rule can get computationally expensive and it is much more efficient to use the Vandermonde determinant along with cofactor expansion along the last column and written as a sum of backward differences. 

My name using De Boor

After plotting 68 points using the De Boor algorithm, I was able to get a close approximation to writing my name in cursive. 

GOING 3D

After experimenting with the various types of curves, I decided to explore cubic splines further and expanded on my previous formula to incorporate three dimensions. 
Working with curves has been an exciting and rewarding journey. I learned a lot about different approaches to solving a problem through programming various algorithms that can achieve the same desired result. The next step would be applying the curve to something like the path of an object or animation.

FINAL THOUGHTS