8bit fractals

 

Вчера меня занесло на ресурс, внимание привлекла картинка с экрана и исходник. Исходный текст на сигавнишном языке выглядел непонятным, поэтому я стал искать. Ничего внятного не нашел, поэтому постарался понять, как это работает и переписал на PureBasic:

Dim c(3)
c(0)=$00ffFF
c(1)=$ffff00
c(2)=$00FF00
c(3)=$FF00FF
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
  x=128*2
  y=128*2
  RandomSeed(12345)
  last=0
  StartDrawing(ScreenOutput()) 
  For i=1 To 30000
    vertex=last
    While vertex=last
      vertex=Random(3,0)
    Wend
    x/2
    y/2
    If vertex=0 Or vertex=1
      x=x+64*2
    EndIf
    
    If vertex=2 Or vertex=1
      y=y+64*2
    EndIf
    
    Box( x+192,y+112,1,1,c(last))
    last=vertex-1
    If last=-1
      last=3
    EndIf
  Next i
  StopDrawing() 
  FlipBuffers() 
  Repeat
  Until WindowEvent()=#PB_Event_CloseWindow 
EndIf

Я обратил внимание на комментарий original fractal program by @8bitfractals in Sinclair BASIC. Я уже побывал в этом клоповнике Twitter и ничего не смог посмотреть. Попробовал заново. После входа через учетку Google я просмотрел часть постов и остановился на сообщении Account suspended. Плюнул и зарегистрировался заново и стал читать, ставя лайки по совету этих долбоботов. Постов было дофига, я не заметил, как прочитал сообщения до 2018 года, и Орега вылетела вместе с вендой, сообщив о нехватке памяти.Хорошо, что нашел тот самый код:


Утром вернулся, просмотрел еще часть и Орега снова подавилась. Третий раз волшебный, и после очередной попытки я долистал до конца, сохранив картинки и исходники. В описании алгоритма фрактала встретил название restricted chaos game. Об алгоритме знают многие, знал и я, но про ограничение не слышал. Я просмотрел остальные картинки и с помощью BasinC перевел исходники на .tap. В новой версии нашел баг - при отладке нельзя выбрать окно показа переменных, программа вылетает с сообщение runtime error.


Готовые  программы тут. Архив сообщений здесь. Я нашел для себя много интересного и вернусь к программированию.

Комментарии