with torsion function tau(s) = a0 + a1*sin(s) + a2*sin(2s) + a3*sin(3s)
Modify the curve
curvature kappa, 0.2 ... 4:
torsion mean value   a0, -1 ... +4:
torsion 1st Fourier   a1, -4 ... 4:
torsion 2nd Fourier   a2, -4 ... 4:
torsion 3rd Fourier   a3, -4 ... 4:
log(Scaling factor), 0 ... 7:
If a user chooses a0 = 0, a2 = 0, a3 = 0 then the program uses
tau(s) = a1*( sin(s) - 0.5*sin(3*s) + 0.1*sin(5*s).
The resulting curves have reflection symmetries and very stationary osculating circles.
Example: a1 = 1, kappa = 1, kappa adjusted.
See more constant curvature images
These curves are defined by the Frenet ODE with constant curvature kappa and the
torsion function tau(s) = a0 + a1*sin(s) + a2*sin(2s) + a3*sin(3s).
Note that the evolutes have the same constant curvature kappa and torsion=kappa^2/tau(s).
There are two special cases which allow to find closed curves:
1: Set and keep a0 = 0.
-- Then every 1-parameter family contains closed curves. To find them, change
any of the other parameters in small steps.
Example: kappa = 2.6, a1 = 3.18, a3 = -0.05 and watch the program
adjust kappa for high precision closing (up to 7-fold symmetry only).
a1-steps cause larger changes than a3-steps.Very small changes have to be typed in.
If a2 = 0 the curve has additional rotation symmetries around some principal normals.
2: Set and keep a2 = 0, a0 > 0.
-- Then most 2-parameter families contain closed curves. To find them,
the program tries to adjust a0 so that, as before, all other parameters
can be slowly changed to close the curve as if one had a 1-parameter problem. The success of the
a0-adjustment can be seen if digits of a0 change, otherwise it failed. (Or see console.)
Example: kappa = 0.896, a1 = 0.455, type last a0 = 0.5 and watch how a0 is adjusted
to give a curve with nonsingular evolute!