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.

Start-Example: a1 = 1, kappa = 1, kappa adjusted.

Vary a1 slowly up to 1.61, down to 0.5.

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.

Start-Example: a1 = 1, kappa = 1, kappa adjusted.

Vary a1 slowly up to 1.61, down to 0.5.

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). Constant_Curvature.

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 many closed curves, because a0 = 0 implies that the curves have normal symmetry planes (at the odd zeros of tau(s)), which necessarily all intersect in one line. To find some closed curves easily, change any of the parameters a1, a2, a3 in small steps. kappa will be adjusted near the input value (if possible).

Example 1.2: kappa = 2.567 or = 2.84, a1 = 3.06, a2 = 0, a3 = a1/9 = 0.34 and watch the program adjust kappa for high precision closing (up to 7-fold symmetry only).

Example 1.3: kappa = 3, a1 = 2.79, a3 = a1/9. Watch the helix-like pieces with normals on (due to flat maximum of tau(s)). Increase a2 slowly.

Example 2.3: kappa = 0.75 or 0.98, a1 = 1.35, a3 = -0.4, again, kappa will be adjusted.

Example 3.7: kappa = 0.73, a1 = 0, a2 = 0, a3 = 4, kappa will be adjusted.

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 - shown - 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 the normal symmetry lines are coplanar and therefore all intersect in one point. 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 0: Increase the parameter a1 of the default example slowly and watch how a0 is adjusted ; also vary kappa very slowly.

Example 1: kappa = 0.896, a1 = 0.455, type last a0 = 0.5 and watch how a0 is adjusted to give a curve with nonsingular evolute! (taus(s) > 0)

Example 2: kappa = 2.6, a1 = 3.529635, a2 = a3 = 0. Then a0 = 0.4 will be adjusted to high precision. Increase kappa slowly to 2.729.

Example 3: kappa = 1, a1 = 1.1453, a2 = a3 = 0. Then a0 = 0.7 will be adjusted to high precision.

Example 4: kappa = 0.719, a1 = 0.5201, a2 = a3 = 0. Then a0 = 0.7 will be adjusted to give a curve which is almost its own evolute.

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). Constant_Curvature.

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 many closed curves, because a0 = 0 implies that the curves have normal symmetry planes (at the odd zeros of tau(s)), which necessarily all intersect in one line. To find some closed curves easily, change any of the parameters a1, a2, a3 in small steps. kappa will be adjusted near the input value (if possible).

Example 1.2: kappa = 2.567 or = 2.84, a1 = 3.06, a2 = 0, a3 = a1/9 = 0.34 and watch the program adjust kappa for high precision closing (up to 7-fold symmetry only).

Example 1.3: kappa = 3, a1 = 2.79, a3 = a1/9. Watch the helix-like pieces with normals on (due to flat maximum of tau(s)). Increase a2 slowly.

Example 2.3: kappa = 0.75 or 0.98, a1 = 1.35, a3 = -0.4, again, kappa will be adjusted.

Example 3.7: kappa = 0.73, a1 = 0, a2 = 0, a3 = 4, kappa will be adjusted.

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 - shown - 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 the normal symmetry lines are coplanar and therefore all intersect in one point. 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 0: Increase the parameter a1 of the default example slowly and watch how a0 is adjusted ; also vary kappa very slowly.

Example 1: kappa = 0.896, a1 = 0.455, type last a0 = 0.5 and watch how a0 is adjusted to give a curve with nonsingular evolute! (taus(s) > 0)

Example 2: kappa = 2.6, a1 = 3.529635, a2 = a3 = 0. Then a0 = 0.4 will be adjusted to high precision. Increase kappa slowly to 2.729.

Example 3: kappa = 1, a1 = 1.1453, a2 = a3 = 0. Then a0 = 0.7 will be adjusted to high precision.

Example 4: kappa = 0.719, a1 = 0.5201, a2 = a3 = 0. Then a0 = 0.7 will be adjusted to give a curve which is almost its own evolute.