продолжаем тему. Эффект найден в интернетах, не пинайте особо.
Код:
;https://observablehq.com/d/4166d1225b36a920
t.f=0
frequency.f=8
shift.f = 2 * #PI / 3
amplitude = 32/2
n=360
For i=0 To 2
CreateImage(i,640,480)
Next i
If InitSprite() And OpenWindow(0,0,0,640,480,"circlewave II",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
Repeat
If GetAsyncKeyState_(#VK_ESCAPE)&32768
Break
EndIf
For j=0 To 2
StartDrawing(ImageOutput(j))
DrawingMode(#PB_2DDrawing_Default)
Box (0,0,640,480,0)
For i=0 To 360
a.f = i * 2 * #PI / n;
c.f = Cos(a * frequency - j * shift + t);j=number
p.f = Pow((1 + Cos(a - t)) / 2, 3);
r=128+amplitude*c*p
Box(320+r*Cos(a),240+r*Sin(a),6,6,255<<(j*8))
Next i
StopDrawing()
Next j
t=t+1/10
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
Box (0,0,640,480,0)
DrawingMode(#PB_2DDrawing_XOr)
For i=0 To 2
DrawImage(ImageID(i),0,0)
Next i
StopDrawing()
FlipBuffers()
Until WindowEvent()=#PB_Event_CloseWindow
EndIf