This animation was originally posted here:
​https://community.wolfram.com/groups/-/m/t/1599255
Now this one I call Everlasting Tide:
Withwinding=8,corners=6,radius=1,shift=2,gravityPower=10,freqPower=
1
3
,symmetricDir=
π
2
,​​With{num=cornerswinding+1},​​Withω=Range[num]//Rescale//Function[x,1-
1/freqPower
TriangleWave[{0,2},(-1+x)x]
]//Rescale[#,{0,1},{.2,1}]&,​​DynamicModule{t=0,​​pts={Rescale[Range[num],{1,num},{0,winding2π}+symmetricDir],0}//Thread//Function[{θ,d},(radius+d){Cos[θ],Sin[θ]}]@@@#&​​},​​DynamicWrapper​​Graphics[​​Hue[0.1,0.2,.9],AbsoluteThickness[1]​​,Circle[{0,0},#]&/@Rescale[
gravityPower
Rescale[Range[100]]
,{0,1},{Max[0,radius-shift],radius+shift}]​​​​,{GrayLevel[.85],Line[Dynamic@pts]}​​,{Hue[0,.55,.85,.3],AbsolutePointSize[10],Point[Dynamic@Most@pts]}​​,{GrayLevel[.7,.4],EdgeForm[{Black,AbsoluteThickness[1]}]​​,FilledCurve[BSplineCurve[Dynamic@Most@pts,SplineClosedTrue]]​​}​​​​,PlotRange(radius+shift){{-1,1},{-1,1}}​​,PlotRangePaddingScaled[.05]​​,AxesFalse,ImageSize500​​]​​,​​t=Clock0,∞,
1
60
;​​pts=MapIndexedFunction{ω,idx},​​Rescale[idx〚1〛,{1,num},{0,winding2π}+symmetricDir]​​,shift2
gravityPower
Sin[ωt]+1
2
-1​​,ω//​​Function[{θ,d},(radius+d){Cos[θ],Sin[θ]}]@@@#&​​​​​​​​​​