polar plasmas


Переписал код Optimus'a и получился полный тормоз. хз, почему.

;http://www.petesqbsite.com/sections/express/issue20/index.html#polarplasmas

#SCR_WIDTH  = 320
#SCR_HEIGHT = 240
#SCR_SIZE = #SCR_WIDTH * #SCR_HEIGHT
xc.l = #SCR_WIDTH / 2
yc.l = #SCR_HEIGHT / 2

rang.l = 512
d2r.f = 180/#PI
d2b.f = rang * d2r / 360

Global Dim radius.a(#SCR_SIZE-1); As ubyte
Global Dim angle.a(#SCR_SIZE-1); As ubyte

Global Dim pal.l(256)

Global Dim fsin1.l(2048)
Global Dim fsin2.l(2048)

If InitSprite() And OpenWindow(0,0,0,640,480,"polar plasma",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0) 
  
  UsePNGImageDecoder()
  CatchImage(0,?ppal)
  StartDrawing(ImageOutput(0))
  For i.l=0 To 255
    pal(i)=Point(i,0)
  Next i
  StopDrawing()
  
    i = 0
    For y.l = 0 To #SCR_HEIGHT - 1
        For x = 0 To #SCR_WIDTH - 1
            xs.l = x - xc
            ys.l = y - yc
            radius(i) = Sqr(xs*xs+ys*ys);% ^ 2 + ys% ^ 2)
            angle(i) = ATan2(xs, ys) * d2b
            i = i + 1
        Next x
      Next y
      
l.f=0.25
    For i=0 To 2047
        fsin1(i)=Sin(i/(l*d2b))*48+64
        fsin2(i)=Sin(i/(l*d2b/2))*40+48
      Next i
k.a=0
  Repeat
    StartDrawing(ScreenOutput()) 
    For i=0 To #SCR_SIZE-1
      c.a = angle(i) + fsin1(radius(i) + fsin2(radius(i) + k))
      
; For i%=0 To SCR_SIZE-1
;     c = radius(i%) + fsin2%(radius(i%) + angle(i%))
;     vram(i%) = pal(c)
; Next i%
      
; For i%=0 To SCR_SIZE-1
;     c = radius(i%) + fsin2%(angle(i%))
;     vram(i%) = pal(c)
;   Next i%
      
; For i%=0 To SCR_SIZE-1
;     c= radius(i%) + angle(i%)
;     vram(i%) = pal(c)
;   Next i%
  
    ;vram(i%) = pal(c)
    xx.l=(i%#SCR_WIDTH)
    ;Box(xx*2,Int(i/#SCR_WIDTH)*2,2,2,pal(c));RGB(c,c,c))
    Box(xx,Int(i/#SCR_WIDTH),1,1,pal(c));RGB(c,c,c))
  Next i
  k+2
        StopDrawing() 
      FlipBuffers()
  Until WindowEvent()=#PB_Event_CloseWindow 
EndIf

DataSection:
ppal:
  IncludeBinary "palete.PNG"


Дополнение
Немного исправил, теперь работает пошустрее. Тут

Комментарии