A fast and simple blog backend.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
mediocre-blog/src/_posts/2018-11-12-viz-1.md

2.2 KiB

title description series git_repo git_commit
Visualization 1 Using clojurescript and quil to generate interesting visuals viz https://github.com/mediocregopher/viz.git v1

First I want to appologize if you've seen this already, I originally had this up on my normal website, but I've decided to instead consolidate all my work to my blog.

This is the first of a series of visualization posts I intend to work on, each building from the previous one.

This visualization follows a few simple rules:

  • Any point can only be occupied by a single node. A point may be alive (filled) or dead (empty).

  • On every tick each live point picks from 0 to N new points to spawn, where N is the number of empty adjacent points to it. If it picks 0, it becomes dead.

  • Each line indicates the parent of a point. Lines have an arbitrary lifetime of a few ticks, and occupy the points they connect (so new points may not spawn on top of a line).

  • When a dead point has no lines it is cleaned up, and its point is no longer occupied.

The resulting behavior is somewhere between Conway's Game of Life and white noise. Though each point operates independently, they tend to move together in groups. When two groups collide head on they tend to cancel each other out, killing most of both. When they meet while both heading in a common direction they tend to peacefully merge towards that direction.

Sometimes their world becomes so cluttered there's hardly room to move. Sometimes a major coincidence of events leads to multiple groups canceling each other at once, opening up the world and allowing for an explosion of new growth.

Some groups spiral about a single point, sustaining themselves and defending from outside groups in the same movement. This doesn't last for very long.

The performance of this visualization is not very optimized, and will probably eat up your CPU like nothing else. Most of the slowness comes from drawing the lines; since there's so many individual small ones it's quite cumbersome to do.