Brownian tree: Difference between revisions

Added LB example
(J draft)
(Added LB example)
Line 612:
</html></lang>
 
=={{header|Liberty BASIC}}==
<lang lb>'[RC]Brownian motion tree
nomainwin
dim screen(600,600)
WindowWidth = 600
WindowHeight = 600
open "Brownian" for graphics_nsb_nf as #1
#1 "trapclose [quit]"
#1 "down ; fill blue"
rad=57.29577951
particles=500
 
'draw starting circle and mid point
for n= 1 to 360
x=300-(200*sin(n/rad))
y=300-(200*cos(n/rad))
#1, "color white ; set ";x;" ";y
screen(x,y)=1
next n
#1, "color white ; set 300 300"
screen(300,300)=1
 
'set up initial particles
dim particle(particles,9)'x y deltax deltay rotx roty
for n = 1 to particles
gosub [randomparticle]
next
 
'start timed drawing loop
timer 17, [draw]
wait
 
 
[draw]
#1 "discard"
scan
for n = 1 to particles
oldx=particle(n,1)
oldy=particle(n,2)
 
'erase particle
if not(screen(oldx,oldy)) then
#1 "color blue ; set ";oldx;" ";oldy
end if
 
'move particle x
particle(n,1)=particle(n,1)+int((sin(particle(n,6)/rad)*10)+particle(n,3))
particle(n,5)=particle(n,5)+6 mod 360
if particle(n,1)>599 or particle(n,1)<1 then gosub [randomparticle]
 
'move particle y
particle(n,2)=particle(n,2)+int((sin(particle(n,5)/rad)*10)+particle(n,4))
particle(n,6)=particle(n,6)+6 mod 360
if particle(n,2)>599 or particle(n,2)<1 then gosub [randomparticle]
 
'checkhit
x=particle(n,1)
y=particle(n,2)
if screen(x-1,y-1) or screen(x-1,y) or screen(x-1,y+1)_
or screen(x,y-1) or screen(x,y) or screen(x,y+1)_
or screen(x+1,y-1) or screen(x+1,y) or screen(x+1,y+1) then
#1 "color white ; set ";particle(n,1);" ";particle(n,2)
screen(particle(n,1),particle(n,2))=1
else
#1 "color red ; set ";particle(n,1);" ";particle(n,2)
end if
next
wait
 
 
 
[randomparticle]
particle(n,1)=int(rnd(0)*599)+1
particle(n,2)=int(rnd(0)*599)+1
particle(n,3)=int(2-rnd(0)*4)
particle(n,4)=int(2-rnd(0)*4)
particle(n,5)=int(rnd(0)*360)
particle(n,6)=int(rnd(0)*360)
return
 
[quit]
timer 0
close #1
end</lang>
 
=={{header|OCaml}}==