Diminishing thirds. Iteration or sequence??

Having seen this pretty image on the web, I hoped to code it. Result- some odd images along the way!

My version

I always play with the shapes and colours for things like this- it would be trivial to use the all-white circles of the same size, and leave out the ring shapes, altering line widths, etc.

And here's re=creating with the star background.


Code

Example code is in 3foldWay.zip or you can copy/paste/learn from one version below.


    WindowWidth  =730: WindowHeight =750

    nomainwin

    radius  =100

    open "New Star Pattern" for graphics_nsb as #wg

    #wg "trapclose quit"
    #wg "down ; fill darkblue ; size 100 ; color yellow ; set 360 360"
    #wg "color white ; size 1"
    #wg "up ; goto 360 360 ; down ; goto "; 360 +radius *cosRad(   0); " "; 360 +radius *sinRad(   0)
    #wg "up ; goto 360 360 ; down ; goto "; 360 +radius *cosRad( 120); " "; 360 +radius *sinRad( 120)
    #wg "up ; goto 360 360 ; down ; goto "; 360 +radius *cosRad( 240); " "; 360 +radius *sinRad( 240)
    #wg "flush"

    j =   3
    S =  40

    [start]
        #wg "size "; S
        f       =int( S / 40 *255)

        #wg "up ; goto 360 360 ; down ; size 1 ; circle "; radius;" ; size "; S

        for i =1 to 3 *j
            xS  =int( 360 +radius *cosRad( i *360 /j))
            yS  =int( 360 +radius *sinRad( i *360 /j))
            #wg "color "; f; " "; f; " "; 255 -f
            #wg "size "; 2 +S; " ; set "; xS; " "; yS

            R   =radius +S
            #wg "size 1 ; color white"

            #wg "line "; xS; " "; yS; " "; int( 360 +R *cosRad( i *360 /j    ));     " "; int( 360 +R *sinRad( i *360 /j    ))
            #wg "line "; xS; " "; yS; " "; int( 360 +R *cosRad( i *360 /j -360 /j/3)); " "; int( 360 +R *sinRad( i *360 /j -360 /j/3))
            #wg "line "; xS; " "; yS; " "; int( 360 +R *cosRad( i *360 /j +360 /j/3)); " "; int( 360 +R *sinRad( i *360 /j +360 /j/3))

            'call delay 1000
        next i

        radius  =radius +8 +S
        j       =j *3
        S       =S *0.8


    if j <=3^7 then [start]

    #wg "flush ; getbmp scr 1 1 730 720"
    bmpsave "scr", "radialCircles12.bmp"

    wait

    sub delay t
        scan
        calldll #kernel32, "Sleep", t as long, ret as void
    end sub

    function sinRad( th): sinRad =sin( th *3.14159265 /180): end function
    function cosRad( th): cosRad =cos( th *3.14159265 /180): end function

    sub quit h$
        close #h$
        end
    end sub