Code: Select all
Define.d
#MaxRecursions = 8
Global Angle = 0.2 * #PI
Global Shrink = 2.8
Global treecol = #Red+#Green
Procedure Recursion(pX, pY, dX, dY, sz, n)
x2 = pX + sz * dX
y2 = pY + sz * dY
LineXY(pX, pY, x2, y2, treecol)
If n < #maxRecursions
sz / shrink
n + 1
dX2 = Cos(angle) * dX + Sin(angle) * dY
dY2 = -Sin(angle) * dX + Cos(angle) * dY
recursion(X2, Y2, dX2, dY2, sz, n)
dX2 = Cos(-angle) * dX + Sin(-angle) * dY
dY2 = -Sin(-angle) * dX + Cos(-angle) * dY
recursion(X2, Y2, dX2, dY2, sz, n)
EndIf
EndProcedure
InitKeyboard()
InitSprite()
ExamineDesktops()
w = DesktopWidth(0)
h = DesktopHeight(0)
OpenScreen(w, h, 32, "")
CreateSprite(0, w, h)
StartDrawing(SpriteOutput(0))
col = RGB(10, 30, 50)
Box(0, 0, w, h, col)
StopDrawing()
Repeat
If Int(treecolcount / 255) & 1
treecol + 256
Else
treecol - 256
EndIf
treecolcount + 1
StartDrawing(SpriteOutput(0))
recursion(w / 2, h - 1, 0, -1, h / 2.3, 0)
StopDrawing()
DisplaySprite(0, 0, 0)
FlipBuffers()
ExamineKeyboard()
Angle + 0.01
Shrink - 0.001
If Shrink < 0.86
Shrink = 3
EndIf
Until KeyboardInkey()
Edit: Nvm, I did it myself. I had no idea it was that easy to do.
Code: Select all
Define.d:Global a=0.2*#PI,t=3,c=$FFFF:InitKeyboard():InitSprite()
ExamineDesktops():w=DesktopWidth(0):h=DesktopHeight(0):OpenScreen(w, h, 32, "")
CreateSprite(0, w, h):Procedure R(X,Y,d,e,s,n):z=X+s*d:q=Y+s*e:LineXY(X,Y,z,q,c)
If n:s/t:f=Cos(a)*d+Sin(a)*e:g=-Sin(a)*d+Cos(a)*e:r(z,q,f,g,s,n+1):
f=Cos(-a)*d+Sin(-a)*e:g=-Sin(-a)*d+Cos(-a)*e:r(z,q,f,g,s,n+1):EndIf:EndProcedure
StartDrawing(SpriteOutput(0)):Box(0, 0, w, h, $281400):StopDrawing():Repeat
If Int(ct/255)&1:c+256:Else:c-256:EndIf:ct+1:StartDrawing(SpriteOutput(0))
r(w/2,h-1,0,-1,h/2.3,-8):StopDrawing():DisplaySprite(0,0,0):FlipBuffers()
ExamineKeyboard():a+0.01:t-0.001:If t<0.86:t=3:EndIf:Until KeyboardInkey()