chaosgame


Этот алгоритм многим известен, и я взялся за его реализацию, кроме фрактала Серпинского добавил одну модификацию.

Алгоритм прост: имеется три точки с координатами и точка X0=127,Y0=127. Выбирается случайное число 0-2, и в зависимости от номера точка перемещается в нужном направлении.

Выглядит это примерно так:

RandomSeed(12345)
Dim x.a(3)
Dim y.a(3)
Dim c.l(3)
x(0)=127:y(0)=0
x(1)=0:y(1)=255
x(2)=255:y(2)=255

c(0)=RGB(255,0,0)
c(1)=RGB(0,255,0)
c(2)=RGB(0,0,255)
x0=127
y0=127
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0) 
  Repeat 
    StartDrawing(ScreenOutput()) 
    Repeat
    p.l=Random(255)&3
  Until p<>3
    x0=(x0+x(p))/2
    y0=(y0+y(p))/2
    Box(x0,y0,1,1,c(p))
    
        StopDrawing() 
      FlipBuffers() 
  Until WindowEvent()=#PB_Event_CloseWindow 
EndIf

; IDE Options = PureBasic 5.30 (Windows - x86)
; CursorPosition = 3

pouet, я поторопился с релизом, Manwe добавил свою процедуру звука.

Комментарии