Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Barnsley's Fern

Name: Anonymous 2009-06-13 17:31

Minimal Barnsley's Fern (lolwikipedia) in html and javascript:

<html><script>n=u=v=0
function i(){t=document.body.lastChild.getContext('2d')
t.fillStyle='green'
r=Math.random()*99
x=u,y=v
u=x*.85+y/25,v=y*.85-x/25+1.6
if(r<14)u=y/3-x/7,v=x/4+y/4+.4
if(r<7)u=x/5-y/4,v+=1.3
if(r<1)u=0,v=y/6
t.fillRect(50*u+140,525-50*v,1,1)
if(n<2e5)if(n++%99)i()
else setTimeout(i,1)}onload=i</script><canvas height=550></html>


Works on modern browsers (well, ok, works on Firefox and probably Chrome). It's also 348 bytes. Can anyone do better?

Name: Anonymous 2009-06-14 11:50

>>18
The problem with using r for your check to do the timeout is that it's, well, random. You'll probably run in to the "too much recursion" eventually, which is what the timeout is there to prevent.

Also, given that your code uses the timeout in 99 out of 100 cases, you may as well just use
n++<2e5?setTimeout(i,1):1, which does always work, just very, very slowly. Your code probably meant r>1 instead of r<1, although that does have a much higher chance of running into "too much recursion".

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List