How did you realize to get 15, 73 and 20 degrees and why *16:
angle1 = -15*16; // 15 degrees
angle2 = 73*16; // 73 degrees
arc_len = 20*16; // 20 degrees, arc "length"
There are 2 variants of the LCL canvas.arc function. My code uses:
canvas.arc(x1,y1, x2,y2, start, alen);
where
(x1,y1)-(x2,y2) defines the enclosing rectangle;
start = angle of the start of the arc, where 0=east and positive=anti-clockwise
also the value is = degree * 16
alen = angle of the arc (anti-clockwise), again = degree * 16
So an arc starting at north = 90*16...
As to how I calculated the values: basically by guessing, then refining the numbers, until they looked correct

(very low-tech).
From what I"ve seen, the horizontal separation between rings seems to equal the thickness of the ring. IOW, everyone's rings shown in this thread are too close together.
You are absolutely correct. My aim was simply to reproduce Boleeman's rings, using simpler code.
I would think it would be comparatively easy to change Boleeman's or my code to produce the correct spacing etc.

cheers
S.