Last year I sent one named Treano and posted some graphs. It had three problems: 1) As Neil Bickford points out, it should have been named Trilbert. 2) It spanned a face diagonal instead of an edge, creating inconsistent textures when sampled at fixed frequencies. 3) It was so obscure that when I found the edge-spanning construction, I couldn't decipher and modify my own code. Fortunately, Corey Ziegler Hunts was up to both tasks: I3 = IdentityMatrix[3]; In[720]:= Vects = {{0, 0, 0}, {0, 0, 1}, {0, 1, 1}, {0, 2, 1}, {1, 2, 1}, {2, 2, 1}, {2, 1, 1}, {2, 0, 1}, {2, 0, 0}}/2; Mats = {{{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}}.{{-1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, {{0, -1, 0}, {1, 0, 0}, {0, 0, 1}}.{{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{0, -1, 0}, {1, 0, 0}, {0, 0, 1}}.{{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}.{{1, 0, 0}, {0, -1, 0}, {0, 0, 1}}, {{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}.{{1, 0, 0}, {0, -1, 0}, {0, 0, 1}}, {{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}}.{{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}}.{{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{0, 0, -1}, {0, 1, 0}, {1, 0, 0}}.{{-1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}/2; In[722]:= Trilbert[t_, mat_: I3, vect_: {0, 0, 0}] := (Trilbert[t, b1_: I3, b0_: {0, 0, 0}] = (Trilbert[t, matend_: I3, vectend_: {0, 0, 0}] := Inverse[matend - mat].(vect - vectend); Module[{t8 = 8*t, n}, n = Floor[t8] + 1; Vects[[n]] + Mats[[n]].Trilbert[FractionalPart[t8], mat.Mats[[n]], vect + mat.Vects[[n]]]])) (style-tweaked in ways Corey might disavow). The inverse images of the eight vertices are In[724]:= Trilbert /@ {0, 5/28, 9/28, 3/7, 4/7, 19/28, 23/28, 1} Out[724]= {{0, 0, 0}, {0, 0, 1}, {0, 1, 1}, {0, 1, 0}, {1, 1, 0}, {1, 1, 1}, {1, 0, 1}, {1, 0, 0}} (which you couldn't directly test without the exact rational trick). There are eight(!) inverse of the center point: In[729]:= {19/28, 1 + 23/28, 2 + 5/28, 3 + 23/28, 4 + 5/28, 5 + 23/28, 6 + 5/28, 7 + 9/28}/8 Out[729]= 19 51 61 107 117 163 173 205 {---, ---, ---, ---, ---, ---, ---, ---} 224 224 224 224 224 224 224 224 Trilbert /@ % Out[728]= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 {{-, -, -}, {-, -, -}, {-, -, -}, {-, -, -}, {-, -, -}, {-, -, -}, {-, -, -}, {-, -, -}} 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Every interior triple of dyadic rationals has eight inverses. Plots: http://gosper.org/Trilbertloops.png http://gosper.org/Trilbertcenters.png http://gosper.org/Trilbertcorners.png --rwg (While I was typing this, a popup said "Mathematica quit unexpectedly". When I clicked Restart, it said my license had expired, demanding a password, which I requested upon the first warning Christmas Eve. Why does WRI synchronize this with everyone's vacation?) It turns out the unexpected quit was due to a 7.0 bug eating the entire Apple VM while trying to convert to a .pdf the small .nb containing these three plots.