Settings

Theme

Show HN: JavaScript Fractal implementation in a single tweet

twitter.com

6 points by asyncanup 7 years ago · 5 comments

Reader

rsiqueira 7 years ago

Here is a collection of fractals in 140 characters (or less!) of JavaScript: https://www.dwitter.net/h/fractal It includes Mandelbrot, Fern, Iterated Function System (IFS), Cantor Set, Dragon Curves, fractal animations and other recursive functions and iterated geometric transformations. Dwitter is a great place to find clever code tricks and very short algorithm implementations.

asyncanupOP 7 years ago

Hi, author here.

Here's the code:

F=()=>{ c=v.getContext('2d') c.lineWidth=.03 C=[1,-.5,-.5] S=[0,.87,-.87] P=[[X=300,Y=300],[X,Y],[X,Y]] R=()=>{d=parseInt(Math.random()3) P=http://P.map (([x,y],i)=>(c.moveTo(x,y),c.lineTo(X=x+3C[I=(d+i)%3],Y=y+3*S[I]),[X,Y])) c.stroke() setTimeout(R,17) } R()}

Assumes no existing dependencies or dwitter-like shortcuts available. Needs this HTML to be on the page:

<canvas width=400 height=400 id="v"></canvas><script>F()</script>

Demo here: https://runkit.com/asyncanup/5cd629840a18bf001b4860e9

  • iverjo 7 years ago

    I think you could shave off 8 characters by doing

      0|Math.random()*3
    
    instead of

      parseInt(Math.random()*3)
  • iverjo 7 years ago

    Further, you could shave off a couple of bytes by inserting

      <body onload=F()>
    
    before the canvas element, instead of having

      <script>F()</script>
    
    after the canvas element

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection