I quickly found out that the graph should have low degree, preferably 3 or 4, to obtain a nice uncluttered 3D model. Also, I thought that it would be nice if the graph had some properties that could be verified by inspection. This suggested that I choose a graph from the family of (3,n)-cages, which are graphs of uniform degree 3 (also called "cubic") such that the smallest cycle in the graph has n vertices. In other words, starting from any vertex and making any sequence of n-1 moves (but no U-turn), you are guaranteed to visit n distinct vertices.
Tutte's 8-cage is usually drawn as shown below (image from http://www.pbase.com/image/15584). The drawing is already nice and symmetrical, but a 3D model can ideally have edges of similar length and no crossings.

Example:
n=8, m=8
V = {1,2,3,4,5,6,7,8}
E = {(1,2), (2,3), (3,4), (4,1), (1,5), (2,6), (3,7), (4,8)}
![]() |
![]() |
As seen in Figure 2, no notion of quality has been introduced yet. Since the embedding on the left is clearly more desirable, we introduce some common sense rules. In a good embedding...
![]() graph
|
![]() electrical circuit
|
|
![]() graph distance
|
![]() effective electrical resistance
|
The effective electrical resistance satisfies 0 <= r(x,y) <= d(x,y) and turns out to be more useful for my purpose because there exists a unique embedding f : V -> Rn-1 such that
1 2 3 4 5 6 7 8 1 0.00 0.75 1.00 0.75 1.00 1.75 2.00 1.75 2 0.75 0.00 0.75 1.00 1.75 1.00 1.75 2.00 3 1.00 0.75 0.00 0.75 2.00 1.75 1.00 1.75 4 0.75 1.00 0.75 0.00 1.75 2.00 1.75 1.00 5 1.00 1.75 2.00 1.75 0.00 2.75 3.00 2.75 6 1.75 1.00 1.75 2.00 2.75 0.00 2.75 3.00 7 2.00 1.75 1.00 1.75 3.00 2.75 0.00 2.75 8 1.75 2.00 1.75 1.00 2.75 3.00 2.75 0.00
Table 1. Matrix of effective electrical resistances r(x,y) for the example graph.
This method is guaranteed to produce coordinates that encapsulate every symmetry of the graph. The only problem is that the embedding lies in n-1 dimensions (where n is the number of vertices). In the case of Tutte's 8-cage, the embedding lies in 29 dimensions.
Analysis of the example graph:
Eigenvalues and eigenspace dimensions:
1: 1.707107 (2) mfs=0.500000
2: 1.309017 (1) mfs=0.000000 OVERLAP: 4*[2]
3: 0.500000 (1) mfs=0.000000 OVERLAP: 2*[4]
4: 0.292893 (2) mfs=0.000000
5: 0.190983 (1) mfs=0.000000 OVERLAP: 4*[2]
(2) embedding of quality 1.707107 (this value can be viewed as some constant minus the error made by the dimensionality reduction). The value mfs=0.500000 is the "minimum feature size", which tells me that no vertices/edges overlap in this projection. The last column gives additional information about vertex overlaps (how many groups there are, and how many superposed vertices there are in each group).
The next few rows can sometimes be useful too. The last rows are in some sense the "worst" fit for the graph, in which the edges are likely to run from one end to another. Since the last rows also convey symmetries, they can sometimes give artistic results too.
![]() eigenspace 1
|
![]() eigenspace 4
|
Analysis of Tutte's 8-cage:
Eigenvalues and eigenspace dimensions:
1: 1.000000 (9) mfs=0.447214
2: 0.333333 (10) mfs=0.288675
3: 0.200000 (9) mfs=0.105409
4: 0.166667 (1) mfs=0.000000 OVERLAP: 2*[15]
/ 3 -1 0 -1 -1 0 0 0 \
| -1 3 -1 0 0 -1 0 0 |
| 0 -1 3 -1 0 0 -1 0 |
L = | -1 0 -1 3 0 0 0 -1 |
| -1 0 0 0 1 0 0 0 |
| 0 -1 0 0 0 1 0 0 |
| 0 0 -1 0 0 0 1 0 |
\ 0 0 0 -1 0 0 0 1 /
Table 2. The Laplacian matrix of the example graph.
However, I wasn't so lucky for Tutte's 8-cage. After doing 470 million random trials, the best projection had a minimum feature size of 0.195 and didn't look symmetric at all. (I achieved a mfs of 0.216 with some human intervention, see later). In short, the search space is too large for a brute force attack.
Although the final shape looks symmetric, it should be noted that most of the symmetries of Tutte's 8-cage are lost! In the graph, every vertex is equivalent, and every edge is equivalent, which I don't think is obvious from the sculpture.
Although every vertex is equivalent, the graph is bipartite and vertices can be naturally split into 2 (equivalent) sets of 15 vertices each. This is what I chose to represent with black and blue vertices.
Below is another view of the chosen 3D embedding, different from the one on the front page.

Figure 5. A view of Tutte's 8-cage showing some symmetries.
Another possibility would be to generate the edges and vertices separately on the FDM machine with different colors, and to assemble them manually with glue. I think that it would work, although it would be tricky to perform the correct boolean operations on the computer, and also tricky to physically assemble the structure correctly. The procedure could be simplified by using very thin edges so they no longer intersect each other. In my opinion, this is still more complex than simply running the part on the Zcorp machine.
I think that few people have considered creating nice 3D embeddings of graphs, very few people have attempted Tutte's 8-cage, and I'm probably the first one to hold a nice 3D model of it in my hands, thanks to rapid prototyping!
d1 d2 d3 d4 d5 d6 d7 d8 d9
0 0.072468 0.024062 -0.106106 0.331880 0.143437 -0.252198 -0.241891 0.171345 -0.026794
1 0.241597 0.073000 -0.217036 0.228743 0.139475 -0.165450 -0.036123 0.019592 -0.297251
2 0.162255 -0.037259 -0.003156 0.242826 -0.016756 0.008678 0.026683 -0.240814 -0.392748
3 -0.122041 0.103734 -0.078701 0.221671 -0.203147 0.173822 0.025265 -0.307135 -0.229262
4 0.029728 0.210863 -0.043213 0.100134 -0.411345 0.174579 -0.068560 -0.186931 0.058593
5 0.109511 -0.024933 -0.151978 0.042475 -0.380070 -0.038789 0.042528 -0.141799 0.307589
6 0.063511 -0.126737 -0.001416 0.251880 -0.201516 -0.119875 0.187531 0.104129 0.339807
7 -0.096311 -0.031792 0.027894 0.294964 -0.067566 -0.363645 0.010440 0.215712 0.135972
8 -0.328601 0.039092 0.163311 0.006167 -0.077053 -0.355218 0.075241 0.155949 -0.041070
9 -0.087179 0.184249 0.367173 -0.196609 -0.007996 -0.281994 0.055729 -0.009646 -0.046884
10 0.082042 -0.105952 0.338288 -0.203269 0.078051 -0.209786 -0.022708 -0.269287 -0.056151
11 0.204954 -0.251252 0.289426 0.035238 0.030159 0.008984 0.064224 -0.194086 -0.258984
12 0.165610 -0.359293 0.243720 0.030918 -0.000976 0.219076 0.124473 0.121929 -0.069069
13 0.113821 -0.196750 0.121251 0.166322 0.044604 0.162684 0.322093 0.134346 0.236054
14 -0.001479 0.092530 0.000199 0.049845 0.291699 0.226167 0.332181 0.042633 0.201369
15 -0.276375 0.038268 -0.074921 0.065114 0.325305 0.219748 0.075236 -0.171746 0.151754
16 -0.436064 0.033864 -0.111034 0.100382 0.021807 0.164387 0.092408 -0.186524 -0.124368
17 -0.473712 -0.074274 -0.068445 -0.086021 -0.078544 -0.064797 0.084314 0.105832 -0.171228
18 -0.182759 -0.221504 -0.189168 -0.278590 -0.101842 0.061238 0.000978 0.242240 -0.177017
19 0.012446 -0.270584 0.076763 -0.139722 -0.076715 0.266484 -0.137370 0.303599 -0.115207
20 0.042040 0.039628 0.098973 -0.031773 -0.050611 0.252654 -0.400191 0.243028 0.015671
21 0.071985 0.342924 0.144253 -0.063878 -0.239473 0.214125 -0.204914 0.075071 0.038858
22 0.072201 0.435358 0.232746 -0.196117 -0.016990 0.001017 0.058924 0.094045 0.003452
23 0.159597 0.343542 -0.045933 -0.131746 0.213489 0.069902 0.267034 0.122666 0.014931
24 0.248471 0.159196 -0.324811 -0.117220 0.152269 -0.087380 0.142962 0.108654 -0.174960
25 0.095748 -0.098149 -0.386653 -0.331437 -0.048426 -0.079212 0.055013 0.075049 -0.067600
26 0.125784 -0.133991 -0.259326 -0.267064 -0.147279 -0.132282 -0.033914 -0.200796 0.216778
27 0.046309 -0.144900 0.019978 -0.245166 0.133938 -0.146563 -0.165369 -0.334842 0.193567
28 -0.115208 -0.049858 -0.039007 -0.019999 0.337104 0.048942 -0.274116 -0.199601 0.226506
29 -0.000350 0.006916 -0.023070 0.140055 0.214965 0.024699 -0.458100 0.107386 0.107692
Table 3. Symmetric 9D embedding of Tutte's 8-cage.
x-axis y-axis z-axis viewer
d1 -0.378184 0.466432 0.532069 1.628736
d2 -0.109427 0.038425 0.092312 -3.275747
d3 0.248048 0.019353 -0.262436 5.993738
d4 0.230623 -0.140994 0.123412 -1.044999
d5 0.008859 0.698611 -0.152401 1.250240
d6 -0.193975 0.177936 -0.744035 -1.141053
d7 -0.460111 0.079145 -0.205513 -2.581058
d8 0.339329 -0.053486 -0.054326 -1.712241
d9 0.604761 0.481527 0.047718 -3.021355
Table 4. 9D to 3D projection.
Surely, by applying proper rotations, Table 3 and 4 could be made to have a nice structure and be filled with nice (non-random) numbers. Investigating this could be an interesting past-time.