Introduction: Parametric Puzzle + Tessellation Patterns

I was initially inspired to design a pattern that could create a puzzle with variable height, width, rows, and columns. The resulting program output a file that can be laser cut to produce the puzzle.

Upon revising the assignment goals, I decided to alter the program to create an ornamental pattern instead, and the structure of the puzzle pieces reminded me of Escher's tessellations artwork. Thus, the following steps describe my process to first create the puzzle pattern, then alter it to the Parametric Tessellation Pattern.

This pattern was generated using a Grasshopper program I created for Rhino, and is inspired by the popular tessellations created by Escher, as seen above. The program can be modified through a number of parameters to produce a varying series of pattens that look similar. The input is a single pair of points in the Rhino editor, which are used to create a grid of lines that are then parametrically determined by the creator. The pattern was then converted using the pufferfish extension to create a 2d surface for export and laser cut.

Supplies

Software:

Rhino

Pufferfish extension: https://www.food4rhino.com/app/pufferfish#downloads_list

Adobe Illustrator

Hardware:

Laser Cutter

Supplies:

Cardboard

Step 1: Creating a Grid

I first generated a grid of points from two points in Rhino. I did this using the python script in grasshopper, and included input options for grid height and width, as well as columns and rows. The grid points are represented by 'x's in the screenshot above.

Step 2: Basic Puzzle Piece Generation

I then designed a simple puzzle side using an interpolation curve consisting of six points, which I used as a reference for the program. I looped through my grid of points to create horizontal curves between points with the same Y value, and vertical curves between points with the same X values. I checked for edge curves and drew them as straight lines instead. The curves each consisted of the gridpoint, the adjacent gridpoint, and four points in between, and linearly scale by height and length of the puzzle piece.

Step 3: Randomness

Finally I added in randomization of the puzzle pieces so they weren't all identical. I did this by generating a random number in the set [-1,1], then applying it to the X components of the vertical edges and Y component of horizontal edges to produce variety.

The final puzzle code file is attached below.

Step 4: Puzzle to Tessellation

Similar to the puzzle piece design, I created a few curves to reference for the tessellation design, which required two curves instead of just one. The left side of the pattern is the same as the right side, just as the top is the same as the bottom, allowing the pattern to repeat infinitely.

In the selected line here, you can see how the interpolation curve is shaped around the points drawn.

Step 5: Pattern Creation

As I already created the base pattern, I simply replaced the curve constructors for puzzle piece sides with the tessellation sides.

I also added a parameter to allow control of the border, which is no longer necessary as it is for the puzzle. The parameters are shown in detail in the grasshopper editor, and consist of sliders (R) for width, height, sliders (N) for columns, rows, and a dropdown to enable/disable border.

I played around with other input-controlled parameters such as curve degree, smoothness, and dimension however the output quality was significantly diminished with overlapping lines so I removed them.

Step 6:

The last step in the pattern design was to create a 2d surface for export and laser cut. I converted the array of grid lines using the pufferfish extension to offset the curves, allowing the resulting shapes to be joined into one pattern using adobe illustrator.