What is this?

A fun little project, inspired by the likes of libraryofbabel.info, except instead of containing every permutation of letters, we do trees. Well, we would do trees. Currently they're seeded randomly, so the only way of exploring the set of trees available on this site is to see where you end up. Moreover, the random generation is subject to some amount of initial configuration, so not all fvtrees are visitable. They look a lot nicer for it, though, and it makes indexing them possible.

Wait, fvtree?

Yes, the fvtrees.

That's the name I've settled on, anyways. The true meat of this project is that generating an fvtree and drawing an fvtree are decoupled processes, stuck together by an intermediary language. For example, if we ask the generator to spit out the formula for a particularly short and dead tree, we might get this:

//|\y\|\r//|

This is the tree string, and, using established rules for drawing each character, it's all you need to build an fvtree. Each character in the tree string, known as a "stick", has a defined behavior for the drawing program to use.

  \   |
  |   /
   \ / 
    Y  
     | 
     / 
    /  
   O   
  /|\  
			

The | stick, also known as the up branch, tells the drawing program to move up from the previous stick, and print a '|'. Fairly intuitive. We also have more complex sticks like the branch indicator, y. This one is a control character, in that it modifies the flow of the tree. It prints a 'Y' character and tells the drawing program to remember the current location by pushing it onto a stack. The branch return stick, r, pops the stack and places us back where the 'Y' is.

The language is not at all settled as I continue to add features, like leaf aliasing so leaves aren't always the quote character, tree layering so branches behind other branches fade into the background, and maybe revamping how leaf generation works.