The Linkage Computer


This is my final project for 6.849: Geometric Folding Algorithms by Prof. Erik Demaine, the happiest genius of the world.

In fact I prefer to call it ‘the origami class’, which sounds more obscure to my friends. And complex, curving origami was indeed what I expected myself to do at the beginning. Well, the field turned out to be much broader and even more interesting (absolutely an understatement).

Anyway one day we were introduced to Kemp’s Universality Theorem, which says ‘there is a linkage that signs your name’. In proving that Kemp invented 3 gadgets: multiplicator, additor and translator, which perform arithmetic operations on any input angle. Then the idea came to me that if we can design gadgets that perform boolean operations, we can build a computer from just hinged bars.

I always had a thing for mechanical computers. The article that talks about the rope-and-pulley computer by Apraphulians was my all-time favorite of Scientific Americans. This project might be a little nerdy, but who knows — mechanical logic gates do make sense on nanoscale and in extreme environments like outer space.

Here is how I represent bits with bars. Note that each bar is constrained to rotate in half plane so I gain a nice ‘black box’ feature where the implementation of one gadget does not disrupt the rest of the machine.

Here are the logic gates: translator (moving a logic state across space), invertor (X -> not X), AND gate / OR gate (they are mirrored image of each other). Watch the video to see how they work.

Using the above gadgets I will be able to build a full adder (A, B, Cin as input and S, Cout as output). I’ve made a simple simulation with Processing. Click the input bars to switch states:

The models I constructed use wood sticks and rivets. I also proposed another way of building the gadgets — cut and fold them from one piece of flat material. It would be awesome to cut a whole mechanical computer out of one piece of thin metal, roll it and take it with you to a place with no electricity and do some crazy computation.

I’ll be continuing this project during the winter break. Many thanks to Erik & Martin Demaine and Tomohiro Tachi. It’s been so cool!

Tools used: AutoCAD, Processing

HashTable: An Algorithm for Material Reuse


There is a great deal of waste in fabrication shops. According to our observation, 1/2 – 2/3 of the material surface area is left out in most CNC cuts. Due to their irregular shape, scrap material usually fails to fulfill another cutting request and are therefore discarded.

In MadFab — an MIT student furniture design competition — we proposed a program that recognizes usable regions from the photos of scrap material and algorithmically search for an optimized layout to cut out a given design. Unlike ordinary digital fabrication systems, this process contains feedback loop from the physical object to the CAD environment to the physical object. By doing this, the material cost and waste of digital fabrication may be greatly reduced.
To implement the process, the user should photograph scrap sheets on a distinct background:

Then, through an interface implemented in Java, the user may pick a size and shape for the desired table/bench. The program will vectorize the photos and recognize reusable regions.

It will then search within these regions proper placement for the parts of the table. If a part is too large to fit in, it will be subdivided in a way that can be reassembled. Finally, the program will output the results to files that can be directly sent to the CNC cutting technology of choice (laser, router, water jet).

Upon cutting the scrap material, the final pieces can be assembled following an instruction generated by the program.

At this stage, the algorithm has been fully implemented. In the mock-up program the shape of table is chosen among six Cyclotomic Rhomb 7-Fold Tiling shapes which can be subdivided into their scaled selves.

Placing the parts is recognized as a 2-D packing problem with irregular shapes. In our current implementation pieces are placed in the order of area. The quality of a placement is measured by the distance between the vertices of the piece to the vertices of the scrap sheet. A hill-climbing algorithm is used in the searching.

The project was final listed in the competition.

Tools used: Java, Illustrator
Collaborator: Ari Kardasis

Customizable Production I: Umbrella Stand


This is a assignment for 4.580: Inquiry into Computation and Design by Prof. Terry Knight. We were asked to make an umbrella stand and discuss the question: to which degree can design process be made accessible for novice user.

We decided to make the most out of our limited material. Our design was a tripod stand with three holder for either long or short umbrellas. Ari did a fabulous job taking advantage of the flexibility of mason boards. The final design could produce 2 umbrella stands from 2 sheets (32”x16”).

Parametric method was used in the testing and implementing phase. The distance, width and angle of legs could be easily adjusted to reach the best performance. We believed this script could be hand to anyone with little training to produce his own umbrella stand. However, it could only exist after all joints were designed by us. It is not easy for a program to invent a way out of its catalog book to implement given design intention.

However, I am an optimist for a upcoming future of far more accessible design-making workflow. The architects tend to be reluctant to accept the idea that ‘anyone can design’. Actually, rural people, as well as city dwellers, have always been empowered to fabricate their own houses and furniture although this ability has waned with industrialization and globalization. If we compromise somewhat on the definition of design – and see it as decision making – ordinary people are already doing it while shopping or commenting.

I see the development in fast prototyping tools as opportunity for designers rather than crisis. One primary reason for architecture’s slow progress over history is the extremely time/resource consuming cycle of design, building and feedback, making it difficult to compare and learn from past experiments. I am doing further attempt on this later this semester for Larry’s class.

Collaborator: Ari Kardasis
Tools used: Rhino, Grasshopper, Illustrator

Simple complexity


It was my first time using a laser cutter. I decided to start with a perfectly symmetrical geometry to keep things simple. I took a dodecahedron, making each facet a component, then dived into detailing it. The outcome had the smallest number of components, while got amazingly visual complicated.

Click to see the assembly-in-process pictures:

This is a project for class 4.510: Materializing Design by Prof. Larry Sass.
Tools used: SketchUp