Spiro - A Simulation
#11
And now let's go back and try what Ashish attempted at start, Wheel within wheel within..., only not 10 times!
Just a couple is enough, I think:
Code: (Select All)
_Title "Wheel within Wheel within..." ' b+ 2022-05-10 from
'Spirograph wheels within wheels.bas SmallBASIC 0.12.9 (B+=MGA) 2017-07-02
xmax = 700: ymax = 700
Screen _NewImage(xmax, ymax, 12) ' using 16 colors
_ScreenMove 300, 20
Dim Shared pi
pi = _Pi
Dim Shared px(20000), py(20000), pIndex, ir
rO = ymax / 2 - 10 ' fit screen radius of big circle
Ox = xmax / 2
Oy = ymax / 2
pIndex = 0
Dim mark(4) ' mark the places of transition of pIndex's
m = 0: mark(0) = 0
For ir = 2 To 5 'Step -1
    rI = rO / ir ' smaller circle that travels inside edge of larger
    OI = rO / rI ' rate inner circle spins compared to angle on outer circle
    For a = 0 To 2 * pi Step pi / 360 'while the inner circle contacts outer at angle a
        Cls
        Circle (Ox, Oy), rO, 9
        'the origin of inner circle at same angle
        Ix = Ox + (rO - rI) * Cos(a)
        Iy = Oy + (rO - rI) * Sin(a)
        Ia = OI * a 'the angle of the inner points are OI * a on outer circle
        'draw line from origin of inner circle to outer edge
        Color 12
        wheel Ix, Iy, rI, -Ia
        For i = 0 To pIndex - 1
            PSet (px(i), py(i)), 15
        Next
        _Display
        _Delay .01
    Next
    m = m + 1
    mark(m) = pIndex - 1
Next
_Delay 2
For j = 0 To m - 1
    Color 15: Cls
    For i = mark(j) To mark(j + 1) - 1
        PSet (px(i), py(i)), 15
    Next
    Print "Press any..."
    _Display
    Sleep
Next

Sub wheel (x, y, r, a)
    'local i, x1, y1, x2, y2, rI2, Ix2, Iy2, Ia2
    Circle (x, y), r
    For i = 1 To 12
        x1 = x + r * Cos(i * 2 * pi / 12 + a)
        y1 = y + r * Sin(i * 2 * pi / 12 + a)
        Line (x, y)-(x1, y1)
        If i = 12 Then
            x2 = x + r / 2 * Cos(i * 2 * pi / 12 + a)
            y2 = y + r / 2 * Sin(i * 2 * pi / 12 + a)
            px(pIndex) = x2
            py(pIndex) = y2
            pIndex = pIndex + 1
        End If
    Next
    If r > 20 Then
        rI2 = r / ir
        Ix2 = x + (r - rI2) * Cos(a)
        Iy2 = y + (r - rI2) * Sin(a)
        Ia2 = r / rI2 * a
        wheel Ix2, Iy2, rI2, -Ia2
    End If
End Sub

   

So there is proof of concept of gears within gears but!

A real physical Spirograph wouldn't work because you have to keep pressure on the gears to keep the teeth in the grooves, eventually that pressure will work against that goal when pushing one way will throw gears out on the opposite side you are pushing.
b = b + ...
Reply
#12
Thumbs up to @TarotRedhand for bringing up such an interesting topic and have me digging up stuff I haven't seen in years! This stuff was never posted at .org nor even .net that I recall. (Maybe Walter's but before my time?)
b = b + ...
Reply
#13
Would it not be good if it could work? For example: The inner wheels were 'fly wheels'. Once they were 'up to speed', the sheer mass and momentum, should get a few 'orbits' done before opposing forces would cause it to slow down... Just a thought... Cool...
May your journey be free of incident. Live long and prosper.
Reply
#14
I would just point out that mine pre-dates all of those and is K.I.S.S.ware  Wink .

TR
Reply




Users browsing this thread: 4 Guest(s)