RosettaCodeData/Task/Barnsley-fern/BASIC256/barnsley-fern.basic
2023-07-01 13:44:08 -04:00

37 lines
1,001 B
Text

# adjustable window altoght
# call the subroutine with the altoght you want
# it's possible to have a window that's large than your display
call barnsley(800)
end
subroutine barnsley(alto)
graphsize alto / 2, alto
color rgb(0, 255, 0)
f = alto / 10.6
c = alto / 4 - alto / 40
x = 0 : y = 0
for n = 1 to alto * 50
p = rand * 100
begin case
case p <= 1
nx = 0
ny = 0.16 * y
case p <= 8
nx = 0.2 * x - 0.26 * y
ny = 0.23 * x + 0.22 * y + 1.6
case p <= 15
nx = -0.15 * x + 0.28 * y
ny = 0.26 * x + 0.24 * y + 0.44
else
nx = 0.85 * x + 0.04 * y
ny = -0.04 * x + 0.85 * y + 1.6
end case
x = nx : y = ny
plot(c + x * f, alto - y * f)
next n
# remove comment (#) in next line to save window as .png file
# imgsave("Barnsley_fern.png")
end subroutine