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 add color, making it look somewhat like marbled paper. 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.

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 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.

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. 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.

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.