Now this one I call Everlasting Tide:
Withwinding=8,corners=6,radius=1,shift=2,gravityPower=10,freqPower=,symmetricDir=,With{num=cornerswinding+1},Withω=Range[num]//Rescale//Function[x,1-]//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[θ]}]@@@#&},DynamicWrapperGraphics[Hue[0.1,0.2,.9],AbsoluteThickness[1],Circle[{0,0},#]&/@Rescale[,{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,SplineClosedTrue]]},PlotRange(radius+shift){{-1,1},{-1,1}},PlotRangePaddingScaled[.05],AxesFalse,ImageSize500],t=Clock0,∞,;pts=MapIndexedFunction{ω,idx},Rescale[idx〚1〛,{1,num},{0,winding2π}+symmetricDir],shift2-1,ω//Function[{θ,d},(radius+d){Cos[θ],Sin[θ]}]@@@#&
1
3
π
2
1/freqPower
TriangleWave[{0,2},(-1+x)x]
gravityPower
Rescale[Range[100]]
1
60
gravityPower
Sin[ωt]+1
2