Hi Jim, Just create a parallelogram and use parameter "or" to change the origin: (* slightly revised, v0.2 *) TriVerts = Sqrt[3] {Sin[2 Pi #/3], Cos[2 Pi #/3]} & /@ Range[3]; poly[time_, or_] := Switch[{time >= 1/3, time <= -1/3}, {True, _}, Polygon[or + # & /@ (TriVerts (1 - time))], {_, True}, Polygon[or + # {1, -1} & /@ (TriVerts (time + 1))], {_, _}, Polygon[{ poly[1/3 + 2 time, or - {1, Sqrt[3]/3}][[1, 1]], poly[1/3 + 2 time, or - {1, Sqrt[3]/3}][[1, 3]], poly[1/3 + 2 time, or + {0, 2/Sqrt[3]}][[1, 2]], poly[1/3 + 2 time, or + {0, 2/Sqrt[3]}][[1, 1]], poly[1/3 + 2 time, or + {1, -1/Sqrt[3]}][[1, 3]], poly[1/3 + 2 time, or + {1, -1/Sqrt[3]}][[1, 2]]}]] G[time_, or_] := Graphics[{EdgeForm[Thick], { ColorData["TemperatureMap"][time/2], poly[1/3 + (2/3) time, {0, 0} + or]}, { ColorData["TemperatureMap"][1/2 + time/2], poly[-1 + (2/3) time, {2, 2 Sqrt[3]/3} + or]}, Blend[{ColorData["TemperatureMap"][1 - time], Green}, 2 (1/4 - (1/2 - time)^2)], poly[1/3 time, {1, Sqrt[3]/3} + or] }, PlotRange -> {{-2, 4}, {-2, 3}}] ListAnimate[G[#/100, {0, 0}] & /@ Range[0, 100]] ListAnimate[Show[Table[ G[#/100, {2*i + j, Sqrt[3] j}], {i, 0, 5}, {j, 0, 5}], PlotRange -> {{-4, 20}, {-2, 13}}, ImageSize -> 800] & /@ Range[0, 100]] To explain relation to Z^3, you can also draw a cube and put the RGB color gradient directly onto the faces of the cube. Cheers --Brad On Sat, Aug 3, 2019 at 6:43 AM James Propp <jamespropp@gmail.com> wrote:
I was able to run it just now and it looks good. Thanks, Brad! Unfortunately I'm not enough of a Mathematica-wizard to modify Brad's code to give me what I want, namely, a morphing tessellation. I need the visuals to convey the sense that the pattern repeats throughout the whole plane.
Jim