41 lines
1023 B
Plaintext
41 lines
1023 B
Plaintext
' version 17-03-2017
|
|
' compile with: fbc -s gui
|
|
|
|
Const As Double deg2rad = Atn(1) / 45
|
|
Dim Shared As Double scale = 0.76
|
|
Dim Shared As Double spread = 25 * deg2rad ' convert degree's to rad's
|
|
|
|
Sub branch(x1 As ULong, y1 As ULong, size As ULong, angle As Double, depth As ULong)
|
|
|
|
Dim As ULong x2, y2
|
|
|
|
x2 = x1 + size * Cos(angle)
|
|
y2 = y1 + size * Sin(angle)
|
|
|
|
Line (x1,y1) - (x2,y2), 2 ' palette color green
|
|
If depth > 0 Then
|
|
branch(x2, y2, size * scale, angle - spread, depth -1)
|
|
branch(x2, y2, size * scale, angle + spread, depth -1)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
' ------=< MAIN >=-----
|
|
|
|
Dim As Double angle = -90 * deg2rad ' make sure that the tree grows up
|
|
Dim As ULong SizeX = 800
|
|
Dim As ULong SizeY = SizeX * 3 \ 4
|
|
Dim As Double size = SizeY \ 4
|
|
Dim As ULong depth = 11
|
|
|
|
ScreenRes SizeX, SizeY, 8
|
|
WindowTitle ("Fractal Tree")
|
|
|
|
branch(SizeX\2, SizeY, size, angle, depth)
|
|
|
|
' empty keyboard buffer
|
|
While InKey <> "" : Wend
|
|
windowtitle ("Fractal Tree, hit any key to end program")
|
|
Sleep
|
|
End
|