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 :
Post a Comment