Michael Bradford Williams

Home / Programming

Here is a collection of programs I've written to investigate certain visual or mathematical ideas, usually involving randomness, and sometimes involving user interaction. They utilize JavaScript and the HTML canvas element. Some attempts were made to ensure proper functionality on mobile web browsers, but desktop browsers will typically give a better experience.

circle packing

Random circle packing generator

L-system

L-Systems plotter with many examples

a cellular automaton

Animation of the time evolution of random 1-dimensional cellular automata

mandelbrot set

Compulsory Mandelbrot set explorer

Illustration of linear regression and gradient descent

Exploring bifurcations of the logistic map

Basic ray tracing program with a variety of example scenes

Determining the planarity of various graphs

a complex mapping

Visualizing mappings from the complex plane to itself

Animation of the time evolution of the lorenz attractor

Animated visualization of endomorphisms of cyclic groups

Simulation of a laser beam among circular mirrors

K-means clustering

Illustration of the K-means clustering algorithm

concentric polygons

Infinite sequence of concentric polygons

Simulation of particles in a gravitational field

Drawing Spirograph-like curves

Growing random plant-like structures

Vector fields that interact with the mouse cursor

Procedurally generated images of aerial perspective

Filling various graphs with random, non-intersecting paths

Trajectories of particles moving quasi-randomly in the plane

Patterns with n-gons and circles

A simple fractal based on semicircles