ICM Final Phase 1 – 2D Catenary Mesh

Source Code

  • LEFT + RIGHT arrow keys change chain length in X direction
  • UP + DOWN arrow keys change chain length in Y direction
  • Click and drag red control particles to change their locked position
  • Right Click to unlock red control particles
  • Click and drag red control particles to change to re-lock control particles
  • SpaceBar to reset sketch

I decided to stick with 2D for the initial round in order to learn the Vertlet Physics Library from ToxiLibs. Got the desired interactions running in 2D. Next step is converting current sketch to 3D with translate, and figuring out the mouse interactions as they are slightly more complicated and need to use screenX(); rather than mouseX and MouseY. One additional desired 2D interaction would be the deletion of particles/chains on mouseClicks.


ICM Final Project Proposal

What is a catenary curve?

From Wolfram MathWorld: The curve a hanging flexible wire or chain assumes when supported at its ends and acted upon by a uniform gravitational force.

 * It is not a parabolic curve, bezier curve, spline, or arc.

Why do I care?

Long ago, in an architecture school far far away…I did some research on the experimental long span structures of Frei Otto and Antoni Gaudí. I eventually did some catenary studies of my own.

Catenary Study for Casa Mila by Antoni Gaudi

Casa Mila structure based on catenaries

My catenary project involved a laser cut plexiglass jig (basically a Cartesian coordinate system for fixing end points), a frame to suspend the model and jig, and experiments with varying lengths and layouts of beaded chain lattices. When the mesh/lattice was suspended form the frame and plexi grid gravity did all of the physics calculations and the mesh settled into the ideal form.

All of the lengths of chain in the mesh were in tension, but the cool thing is that the same form can be inverted and the forces will also work well in compression.

inverted saggy mesh = bad ass dome

So once the mesh was hanging in the frame, i would cast the chains in boat hull resin, let it harden, and then flip it to create dome structures.

Catenary Studies Katie Adee 2006

My initial catenary research. As you can see, the diagrams are a huge downgrade from the richness of the model.

Check out that project from start to “finish” - huge HD pdf so be patient as it loads.

These physical studies were extremely informative, but it was always an issue getting them from the physical world, into the computer.

There are simple computer programs that if you enter the distance between each end, and the total length, it will draw the catenary curve based  on equations like:

The output is always something like a raster graphic, and isn’t easy to convert/trace into CAD programs.

Catenaries for different values of a

Three different catenaries through the same two points, depending horizontal force being and λ mass per unit length.

So where am I going with all of this?

As you can see from Gaudí’s models, each length of weighted rope or chain creates a catenary curve, but its more complicated than the formulas shown above. Each chain is effected by gravity, but its supported ends are effected by chains/curves it is connected to.

Project Proposal:

Create a 3D catenary lattice work visualizer, based off of the way I built my catenary studies with the plexi jig and chain.

Ideal functionalities:

  • number of connection points per endpoint (3 point up to 8 point connections)
  • length of chains segments in horizontal, vertical, and 2 diagonal directions
  • initial 2D lattice preview before applying gravity
  • 3D visualization of the 2D lattice/mesh use just created.
  • ability to move the fixed end locations (ie the endpoints connected to the jig can be moved around the Cartesian grid)
  • ability to click and delete individual chains in hanging lattice to view the effect
  • DXF export as well as PDF and JPEG.


Because so many chains are interdependent, the more manageable statics equations wont work.

Step 1:
I think I can recreate the each chain length with a ton of spheres and springs. Since spheres are pretty memory intensive to render, I may need another option to give the visualization some substance.

I will start with a simple lattice with 4 way connection points and 4 fixed corners and take it from there?

Step 2:
The hard part will be storing all lengths, locations, and connections in a multidimensional array, so that the use can manipulate the end points and delete individual chains with mouseClicked and mouseDragged.

Array Lists? Hash Maps? P3D? Time to learn them all. Wish me luck?

Step 3:
Create an interface for the user to enter number of chains/connectors in x and y direction, as well as optional diagonal chain lengths and locations.

Create a plan view diagram of the mesh to preview (just lines and ellipses) so the user has an idea of the schematic before applying gravity to the 3d model.



Bloomberg Press Release Text Analysis

A series of 3 sketches takes a text file containing all press releases pertaining to Sandy from 10/26 – 11/4 and counts the total number of times each word occurs. A conditional statement checks and skips the count for words like AND or THE. The second sketch gets rid of all duplicate entries in the text file. The third sketch load the final data and most used words are displayed and scaled based on word count.

I had initially wanted this more interactive, you click on a certain date, and the word cloud for that day would appear above – that will be the next step.

the code

Additive/Subtractive Color

An initial attempt at color averaging. Work in progress. Trouble taking subtractive color theory and using it in RBG (additive).

Source code

Spring Mesh 1 Control Point

Eventually want to have top two corners as moveable control points on the mesh.

Springs effected by mouseY location.

Source code

Fireworks OOP

Click screen to create blue-green fireworks.

Press any key to create yellow crackle fireworks.

Right click mouse for kitty fireworks.

Doesn’t work in JS mode. Get the source code here.

Network 1

Objects, Classes, and Functions OH MY.

Source Code


Click inside window to make sure processing is reading you keyboard. Hit spacebar to jump the cones.

This is an ongoing project with Jonathan Sparks.

Source Code

BMX Mayhem

Live Counter, Scoring, Game Over Restart, Skulls, Jumps, Sun/Moon/Stars… Gravy

Click inside the window to make sure your keyboard is read by processing. Spacebar to jump.

This is an ongoing project with Jonathan Sparks.

Source Code