Wednesday, October 08, 2025

[zowdyire] Lissajous on a disc

in polar coordinates,

r = a + cos(b*(theta+pi/2)/c)

defines a family of pretty curves bounded by a circle, vaguely similar to Lissajous curves bounded by a rectangle.  previously, guilloche patterns.

I experimented with these curves on the Desmos Graphing Calculator.  there are also plenty of other ways to plot curves in polar coordinates.

if b and c are integers and relatively prime, the function is periodic with period 2*pi*c.  the curve has rotational symmetry of degree b.

we use cos and add pi/2 to make the axis of bilateral symmetry be the vertical axis.  (in Wolfram Alpha, use Cos[...] instead of cos(...).)

if a = 0, the curve has rotational symmetry of degree 2*b.

if a = 1, then the curve has cusps (future post falgmxhz), but sometimes the cusps line up with each other in a way that makes it difficult to see them.

between a = 1 and a = 1+(b/c)^2, the curve has rounded cusps.  at a = 1+(b/c)^2 the cusps become flat (zero curvature), and beyond that, curvature keeps the same sign through the whole curve.  it took some effort to find that the flat point occurs at a = 1+(b/c)^2 (still a conjecture).  although curves with flat points are special, I do not think they are pretty.  the eye is not used to seeing curvature decrease to exactly zero.

here are some curves with 6-fold symmetry.  plot theta from 0 to 22*pi because the denominator is 11.  the third curve has flat points.

r = cos(6*(theta+pi/2)/11)

r = 1 + cos(6*(theta+pi/2)/11)

r = 1 + (6/11)^2 + cos(6*(theta+pi/2)/11)

here is a curve with 5-fold symmetry:

r = 1.1 + cos(5*(theta+pi/2)/6)

here is a curve with 3-fold symmetry:

r = 0.309 + cos(3*(theta+pi/2)/5)

the leading constant 0.309 was manually tuned to get approximate tangency at the center.  I do not know how to compute the constant to higher precision.

high symmetry can look like a mesh:

r = 1 + cos(32*(theta+pi/2)/33)

future work: color regions black and white as in a checkerboard.

here is Mathematica 13.1.0 failing to numerically find the flat point:

f[t_,a_,b_]:= a+Cos[b*t]
f1[t_,a_,b_]:= D[f[t,a,b],t]
f2[t_,a_,b_]:= D[f1[t,a,b],t]

k[x_,a_,b_]:= 2*f1[x,a,b]^2 + f[x,a,b]^2 - f[x,a,b]*f2[x,a,b]
q[v_]:= Minimize[k[x,v,6/11],x] //First

q[1.29]
Out= -0.00218099

q[1.3]
Out= 0.000743802

FindRoot[q[x], {x,1.29,1.30}]
FindRoot::cvmit: Failed to converge to the requested accuracy or precision within 100 iterations.

No comments :