I'm working on a computational geometry project and have been looking at the same Mathematica code for a while now trying to figure something out. I've come to the conclusion my mathematical knowledge is deficient in regards to how to select the equation to parameterize.
The equation $a Sin[b t] + C$ is not behaving as expected, myself mostly familiar with probability theory and machine learning. I suspect my equation needs another degree of freedom to accurately model the data provided by a polynomial? An exponential? Fourier-series? I'm not sure how to confidently take the next step to improve it.
The project requires the model accept arbitrary curves. In the case of our example represented by a uniformly sampled BsplineCurve. When the model is plotted, $263.653 sin(1.03716 t)+1670.19$ does not reproduce the data accurately. I accessed the properties of the NonlinearModelFit model and besides the error being very large, nothing really sticks out about how to improve the selection of an equation to model. Considering that in the field of machine learning we find the parameters of large matrixes, I assume it's possible to find better classes of functions that fit the data? What are some methods of making my selected equation more amendable to the data? What domain of mathematics is this from that I can turn to for more info? I'll take any ideas since this problem probably overlaps different branches.
(* Original Function *)
f =
BSplineFunction[
controlpts]; (* Our user function *)
originalfunction =
ParametricPlot[f[t], {t, 0, 1},
PlotStyle ->
Directive[{Opacity[.2], AbsoluteThickness[5], Darker[Green]}]];
data = Table[f[t], {t, 0, 1, 1/49}];
(* Create Model *)
equ = a Sin[b t] + C;
model = NonlinearModelFit[data, equ, {a, b, C}, t];
modelpts = Graphics[
{AbsolutePointSize[8], Blue,
Point /@ MapThread[
List,
{Range[0, 8000, 8000/49],
Table[model // Normal, {t, 0, 8000, 8000/49}]}
]}
];
samplepoints = Graphics[
{AbsolutePointSize[3], Purple, Point /@ data} // Graphics
];
model["BestFitParameters"]
(* a -> 263.653, b -> 1.03716, C -> 1670.19 *)

Just playing around with libre office calc I found a polynomial of degree 7 (x^7) to fit your data more accurately..
See
Maybe use polynomials as a class of functions instead of trigonometric functions.