## Chinese Ice-Ray Lattices

Design of Chinese lattices, used in windows and doors especially in 19th century, called in short “ice-ray” is one of the classic studies that are used to express shape grammars, algorithmic design; maybe the roots of computational design at all.
They are introduced analytically by Daniel Sheets Dye, and explained by George Stiny, based on parametric shape grammars approach. He explained shape rules and the abstract machine that produces these subdivisions.
I was especially interested in Shape Grammars when I was a graduate student, also I coded a Shape Grammars tool in MaxScript. Even, translated Stiny’s Ice-ray paper to Turkish (here). Nowadays, I’ve found time to return to it again. Utilizing the new tools in generative design, I tried to revisit those old theory days, amplified with new coding paradigms. Ice-ray designs are one of the best suited topics to test recursive computing component in Grasshopper, called Hoopsnake.
At first, I tried to simulate Mr.Stiny’s approach and tell Grasshopper each shape rule as a different operational cluster, combined with Hoopsnake iterations and a logical structure that understands the emergent output shapes as triangles, quadrilaterals etc. and send them to the appropriate shape rules for the next step of iteration.
However, after a couple of dead ends, I finally realized that in a shape rule, these designs are not geometrically defined at all, so any emergent shape, in fact, fires the same geometric rule. I think in this visual coding environment, we don’t need an encapsulated set of shape rules, as shapes and rules are all operated within the geometric rules (components) of Grasshopper.
Here is the final definition [GHX: 0.8.0066 + HOOPSNAKE needed] [3DM: Rhino 4] much shorter and faster than the first try. However it needs a conscious user, as not all of the results give %100 appropriate ice-ray lattices. Some of my experiments are diplayed below. You need to define an initial shape (surface) and right-click on the Hoopsnake component to “Reset” and “Loop” the process.