Define a "ring" as a grouping of congruent regular polygons, each sharing a side with two others, made into a fully rotationally symmetrical ring. That is, it has as many rotational symmetries as there are polygons.
For example, 6 equilateral triangles can be made into a very tight ring, as can 4 squares or 3 regular hexagons. Ten regular pentagons can also be made into a ring with a nice decagon inside. For hexagons, there can also be a ring of 6 with a central hexagon. The central region need not be a regular polygon.
The "Ring Set" R(n) is the set of possible numbers of n-gons that can make a ring.
From the above examples, R(3)={6}, R(4)={4}, R(5)={10} and R(6)={3,6}.
Find a rule to describe R(n).
In traversing any ring, one can proceed from the center of a side to the center of its polygon and deflect (change course) by some angle that will carry it perpendicularly to the center of the next attached polygon. Each deflection must be the same amount to get the same number of rotational symmetries as the number of polygons.
Beyond 3 and 4 sides, there is a choice as to which edge to aim for (it doesn't matter if it's right or left, just be consistent), determined by the deflection angle, leading to different numbers of polygons. Only those sets of polygons that return to the original one count. To do so, the deflections in total must come out to 360° to get back to and coincide with the original polygon.
clearvars,clc
% edges assumed to be unit length
for edges= 3:30
set={}; deflectionNo={}; deflSet={};
centAngle=360/edges;
if mod(edges,2)==1
deflect0=centAngle/2;
else
deflect0=centAngle;
end
for deflect=deflect0:centAngle:180-centAngle/10
iter=(360-deflect)/deflect+1;
if abs(iter-round(iter))/centAngle<.0000001
set{end+1}=round(iter);
whichDeflection=(deflect-deflect0)/centAngle+1;
deflectionNo{end+1}=whichDeflection;
deflSet{end+1}=sprintf('%8.7f',deflect);
deflSet{end}=strip(deflSet{end},'both','0');
end
end
fprintf('%3d ',edges)
fprintf('{')
for i=1:length(set)
fprintf('%d ',set{i})
end
fprintf('} ')
for i=1:length(deflectionNo)
fprintf('%4d ',deflectionNo{i})
end
fprintf(' ')
for i=1:length(deflSet)
fprintf('%s ',deflSet{i})
end
fprintf(' ')
end
In the below, here's an example of what the sets mean:
12
{12 6 4 3 }
1 2 3 4
30. 60. 90. 120.
For a 12-sided figure, a ring of 12 can start by aiming the deflected line toward the first other side of the figure to the right of stright ahead, which is a deflection of 30°.
A ring of 6 can start by aiming the deflected line toward the 2nd other side of the figure to the right of stright ahead, which is a deflection of 60°, and so forth for rings of 4 and 3.
3
{6 }
1
60.
4
{4 }
1
90.
5
{10 }
1
36.
6
{6 3 }
1 2
60. 120.
7
{14 }
1
25.7142857
8
{8 4 }
1 2
45. 90.
9
{18 6 }
1 2
20. 60.
10
{10 5 }
1 2
36. 72.
11
{22 }
1
16.3636364
12
{12 6 4 3 }
1 2 3 4
30. 60. 90. 120.
13
{26 }
1
13.8461538
14
{14 7 }
1 2
25.7142857 51.4285714
15
{30 10 6 }
1 2 3
12. 36. 60.
16
{16 8 4 }
1 2 4
22.5 45. 90.
17
{34 }
1
10.5882353
18
{18 9 6 3 }
1 2 3 6
20. 40. 60. 120.
19
{38 }
1
9.4736842
20
{20 10 5 4 }
1 2 4 5
18. 36. 72. 90.
21
{42 14 6 }
1 2 4
8.5714286 25.7142857 60.
22
{22 11 }
1 2
16.3636364 32.7272727
23
{46 }
1
7.826087
24
{24 12 8 6 4 3 }
1 2 3 4 6 8
15. 30. 45. 60. 90. 120.
25
{50 10 }
1 3
7.2 36.
26
{26 13 }
1 2
13.8461538 27.6923077
27
{54 18 6 }
1 2 5
6.6666667 20. 60.
28
{28 14 7 4 }
1 2 4.000000e+00 7.000000e+00 I don't know why scientific notation
12.8571429 25.7142857 51.4285714 90. was used for 4 and 7. Maybe rounding
error was sufficiently large to
make this happen.
29
{58 }
1
6.2068966
30
{30 15 10 6 5 3 }
1 2 3 5 6 10
12. 24. 36. 60. 72. 120.
or just the numbers of polygons per ring, as asked for
3
{6}
4
{4}
5
{10}
6
{6 3}
7
{14}
8
{8 4}
9
{18 6}
10
{10 5}
11
{22}
12
{12 6 4 3}
13
{26}
14
{14 7}
15
{30 10 6}
16
{16 8 4}
17
{34}
18
{18 9 6 3}
19
{38}
20
{20 10 5 4}
21
{42 14 6}
22
{22 11}
23
{46}
24
{24 12 8 6 4 3}
25
{50 10}
26
{26 13}
27
{54 18 6}
28
{28 14 7 4}
29
{58}
30
{30 15 10 6 5 3}
I don't know of a formula or closed rule that can predict these numbers without doing this count of deflection angles while testing each for closure.
Edited on September 22, 2022, 12:13 pm
|
Posted by Charlie
on 2022-09-22 11:55:17 |