This app simulates the behavior of a multicellular slime mold (Physarum polycephalum) in response to its environment, based on a 2010 paper by Jeff Jones: "Characteristics of pattern formation and evolution in approximations of Physarum transport networks" and work by Sage Jenson. In this simulation, simple particle "agents" interact with an underlying field of chemical attractants to form complex, emergent behaviors.

( 2022 )

Create stop-motion animations of plants by rotating a single image to create a "growing" illusion. The magic behind these animations is a natural phenomenon called the golden angle, which governs the spacing of leaves, petals, and branches on growing plants. The golden angle (137.5°) is responsible for the spiral patterns on pinecones, sunflowers, and succulents, and is related to the Fibonacci series and the golden ratio. Code on Github.

This app simulates a simple reaction-diffusion system, where two virtual chemicals interact to create dynamic patterns. Similar systems were proposed by Alan Turing in 1952 as a mechanism for pattern formation in plants and animals. This reaction-diffusion system is particularly sensitive to two parameters: K and F. You can interactively explore regions of K,F parameter space by zooming and panning across the screen.

This app simulates how any origami crease pattern will fold. It calculates the geometry of folded or partially folded origami using a dynamic, GPU-accelerated solver and illustrates physical properties of the folded material. It also supports an immersive, interactive VR mode using WebVR. Code on Github.

This simulation solves the Navier-Stokes equations for incompressible fluids in a GPU fragment shader using a mixed grid/particle model. Click and drag to apply forces to the fluid and watch the particles flow. Code on Github.

This simulation solves the Navier-Stokes equations for incompressible fluid flow past an obstacle in a GPU fragment shader. It exhibits a phenomenon called vortex shedding, where vortices of alternating spin spontaneously emerge behind the obstacle. Code on Github.

( 2016 - present )

Shader programs are executed by the GPU to perform highly parallel computations much more efficiently than possible with a CPU. These are a collection of programs I've written (mostly physics simulations), where math or other logic is processed in WebGL fragment shader programs in order to solve a large system efficiently.

A gradient descent optimization tool for 2D truss structures. Facilitates interactive exploration of the design space with real-time performance feedback via Finite Element Analysis. This tool shows the user how to adjust the positions of the nodes in the truss to minimize the volume of material used in the structure. Also supports an automated optimization process with constraints. Code on Github.

This interactive design tool simulates loading patterns and solves for the geometry of thin-shell structures under pure compression. Based on the form-finding techniques of Antoni Gaudí and his contemporaries. Code on Github.

Interactive simulation tool that visualizes geometric properties and static internal forces in a loaded Michell cantilever anchored at two points. Michell geometry is parameterized by total length, distance between attachment points, and number of truss layers. Internal static forces are calculated using the method of joints. Code on Github.

( 2015 - 2017 )

A 3D CAD and simulation tool for modular robotics. AMOEBA primarily serves as a research tool projects at CBA, however, in building this tool I was also thinking about how to package structural analysis in a form that would be appealing and accessible to novice users - where models could be built and meaningfully simulated in a matter of minutes with no prior experience.

Planar linkage optimization tool inside a simple physics engine. This app is still a work in progress, part of a longer-term project thinking about methods for automated mechanical linkage design and how to design objects that can crawl right off the bed of a 3D printer / digital fab machine. Code on Github.

( 2016 - present )

A collection of apps and utilities that aren't quite as interesting as the rest listed on this page, but may be useful to someone.