summaryrefslogtreecommitdiff
path: root/static/src/_posts/2018-11-12-viz-1.md
diff options
context:
space:
mode:
authorBrian Picciano <mediocregopher@gmail.com>2021-07-31 11:35:39 -0600
committerBrian Picciano <mediocregopher@gmail.com>2021-07-31 11:35:39 -0600
commitf1998c321a4eec6d75b58d84aa8610971bf21979 (patch)
treea90783eb296cc50e1c48433f241624f26b99be27 /static/src/_posts/2018-11-12-viz-1.md
parent03a35dcc38b055f15df160bd300969e3b703d4b1 (diff)
move static files into static sub-dir, refactor nix a bit
Diffstat (limited to 'static/src/_posts/2018-11-12-viz-1.md')
-rw-r--r--static/src/_posts/2018-11-12-viz-1.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/static/src/_posts/2018-11-12-viz-1.md b/static/src/_posts/2018-11-12-viz-1.md
new file mode 100644
index 0000000..73c4cd9
--- /dev/null
+++ b/static/src/_posts/2018-11-12-viz-1.md
@@ -0,0 +1,55 @@
+---
+title: >-
+ Visualization 1
+description: >-
+ Using clojurescript and quil to generate interesting visuals
+series: viz
+git_repo: https://github.com/mediocregopher/viz.git
+git_commit: v1
+tags: tech art
+---
+
+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.
+
+<script src="/assets/viz/1/goog/base.js"></script>
+<script src="/assets/viz/1/cljs_deps.js"></script>
+<script>goog.require("viz.core");</script>
+<p align="center"><canvas id="viz"></canvas></p>
+
+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](https://en.wikipedia.org/wiki/Conway%27s_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.