lomont.org

(Also lomonster.com and clomont.com)

The Wooden Torus

Sept, 2011. My wife's birthday was approaching, and I decided to create a piece of desk art for her. Since she runs a math tutoring center, I chose something mathematical. For a while I've been interested in creating wooden shapes on a laser cutter that can be assembled using slots. After some doodling of ideas I decided to make a wooden torus which finally came out like this (click art images for larger versions):

Final torus 

This page describes how I designed and made it and presents the DXF and Corel draw files.

 

 

Design

Making a 3D torus at some point requires being able to create the geometry, so I started with the equation for a torus in X,Y,Z coordinates: (x^2+y^2+z^2+R^2-r^2)^2=4R^2(x^2+y^2) where r is the radius of a cross section of the tube and R is the radius that tue tube makes. Since I wanted cross sections, I chose to walk along fixed x values for each slice. Then for a fixed xi, solve for y to get the top and bottom curve equations. I wrote a custom C#/WPF program to do the work, complete with sliders for various attributes. The number of slices is how many to fit in each direction, and the thickness is for the thickness of the gaps, which corresponds to the thickness of the material I want to use. Here is a screenshot and a tiny piece of the C# code.

Small pieces

 

Code

 

 

I wanted 32 slices for my wife's 32nd birthday, and I wanted to use 1/4" wood, since that is about as thick as the laser cutter cuts. I wanted the inner hole to be the size of a tube in case I want to nest some (plus I find that ratio pleasing). I also wanted the final item to be roughly square gridded, meaning the gaps and the solid parts should be pretty close in size. This leads to an outer dimension of about (16*2+1) *1/4 = 8.25", a pretty nice size.

So the code takes the values from the sliders, walks the corresponding torus in constant x slices, and for each slice uses the equation for z in terms of y and walks y in 1/100" increments, computing a list of z values. The values are stitched together along the top, and the bottom has notches inserted where the corresponding slices should go. The result is cleaned and written out to a DXF file. All this is done in custom code since I don't know how to make such things in any solid package (although someone probably does). Here is the zipfile of the VS2010 project files.

This above values led to the various radii. Tweaking was needed to ensure the outer lips were thick enough to hold the pieces together. Here is the resulting DXF and Corel Draw file. The DXF is pretty spaced out so you'll want to edit it. The Corel Draw file is for a 12"x24" piece of 1/4" wood. Each file creates enough for 1/2 of the final torus, so you'll need to cut two.

Cutting

Here are the pieces coming from the laser cutter. I first made a prototype to ensure the pieces fit nicely, and tweaked the values slightly to fix up some features I didn't like. This batch of pieces is 1/2 of a torus.

Pieces 

 

Assembly

Here are some assembly shots.

 

Assembly1

 

Assembly1

 

Assembly1

 

Assembly4

 

To keep the pieces snug, I used wood glue. The gluing of pieces has to be done very carefully and in a precise order to ensure all pieces are snug. The rough idea is to assemble the shape without glue so the pieces are all held in a good position. Then glue the first 4 above since they rest on the lowest surface. Once they are dry, glue the top layer of pieces to only those 4 cross pieces. Once that is dry, turn over, and glue everything.

The order is to make sure you don't glue any pieces that are not fully snug and held in place by gravity.

Final

Here is the final result, and my wife's birthday present.

Finished torus

 

I made two matching torii, one for each of us. People at work saw my prototype and liked it so I decided I'd like one for my desk also.

Finished 2

Here are the two final ones and the initial prototype (the wood of which is missing parts, is cut funny, etc.).

Finished 3

 

That is all. I hope you enjoyed this, and happy hacking!