grape – Tiling Pattern / MidSemester

I was half complete with the tiling pattern project when it was due (hence the combined title) so I figured I’d finish it for the MidSemester review.

I first created a 16×16 tile generator so I could draw my name (I made 15 tiles, 3 for each letter). Here are some examples:

I then modified a wave function collapse implementation (after reading up about WFC’s and how they work) mentioned in this Processing thread which is based off of mxgmn’s original implementation to generate tilings of each of the letter tiles I produced as a sort of signature.  And then I converted it to svg using marching squares.

Here’s one

I sort of like how it’s almost a gradient and depending on the type of font the wave function collapse algorithm generates tilings with varying amount of order/disorder.

I also presented a single tiling with used a brush pen, a willow stick, and a fine pen (just to play with the different textures.

I was also interested in exploring different ways of manipulating these tiles. Here are two experiments I did:

In one I wanted to do almost a “where’s waldo” with WFC, so I created a 16×16 waldo tile in my tile maker in processing and then generating multiple tilings.

I sort of want to make this my wallpaper.

Anyways, I ended up not plotting it because I ran out of time. I also think this would look better at a larger scale, so think of this as a little swatch test.

Another thing I wanted to do was see if the original letter appeared in any of the produced tilings. But I also didn’t want to hand annotate/circle any letters I found, just because I thought that would be boring/time consuming imo.

So instead I found another time consuming way to identify letters, trying to implement OCR(Optical Character Recognition)!

I implemented it in python and it generated the following results.

Some examples:

I think it was sort of interesting to uncover what the computer reads as “text”, but I ultimately didn’t plot any of them bc I didn’t think showing that part of the tile as a different color really added much + I didn’t have a lot of time.

Something interesting to note though…while generating these WFC patterns using the tiles I created, the letter R had the most contradictions I’ve ever seen. It was almost infuriating trying to get a single tiling to finish, because there was (like ~85% of the time) always a contradiction. I’m not too sure why exactly, maybe the diagonal bit of a “R” is prone to contradiction? But I also personally find the R’s the be the most visually appealing.

It looks itchy.

 

miniverse – TilingPattern

 

Final PRODUCT

 

Process

I did a body horror truchet tiling.

Here’s how I made the tiles on procreate. I used the drawing guide and made a layer with a grid showing where lines should connect for each tile. Then I made a set of tiles and exported them as transparent PNGs. (there are 16 truchet tiles but only a few unique tiles which can then be rotated to produce the others in the set)

Import the PNG to illustrator and use Window > Image Trace with the preset line art. Expand the outline and save the SVG.

I used Golan’s truchet sketch on p5 as the code and swapped out the drawTile() with something that’ll display the appropriate SVG from the tile set.

lsh-TilingPattern

This was not necessarily a fun process, but it was insightful. The flavor of the week was Clojure, a LISP dialect which is fairly popular these days. I ended up using NextJournal as my plotting environment since it was the easiest way to code in Clojure these days. I ended up fighting with the language a good amount, and having to rely on Java’s error messages was…trying. I did feel inspired by all the parenthesis in Clojure–enough to make a bubbly drawing. I do think that this project represents hitting the barrier of trying new tools where fighting to just print results without errors.

Stickz – TilingPattern

 

Plots (Black Pen on White Paper, White Pen on Black Paper)

SVG (50:50 Lines to Arc)

SVG (30:70 Lines to Arc)

My inspiration for this project was to create a pattern out of straight lines and arcs that create strange irregular forms, while paying attention to how a plot could differ with varying ratios of line to arc generation within the piece. I found that messing with the ratio resulted in a sweet spot in the drawing that has a “brain-like” patterning. This is more evident in the black on white version, and with a larger stroke when the lines are more contrasted and touch edges with one another. 

I think I could’ve added more pattern-like qualities to this project, as it falls short on having larger forms that exist in the tilling. Part of me wanted to do something from scratch that was different from the approach to Wang tiles, that could also generate a somewhat organized pattern. 

 

 

sapeck-TilingPattern

Code:

IN;DF;PS4;

PT.7;

SP3;PU1293,1707;FT10,100;WG1000,270,45;
SP3;PU1293,1707;FT10,100;WG1000,270,45;
SP3;PU1293,2707;FT10,100;WG1000,270,45;
SP3;PU1293,2707;FT10,100;WG1000,270,45;
SP3;PU1293,3707;FT10,100;WG1000,270,45;
SP3;PU1293,3707;FT10,100;WG1000,270,45;
SP3;PU1293,4707;FT10,100;WG1000,270,45;
SP3;PU1293,4707;FT10,100;WG1000,270,45;
SP3;PU1293,5707;FT10,100;WG1000,270,45;
SP3;PU1293,5707;FT10,100;WG1000,270,45;
SP3;PU2707,1707;FT10,100;WG1000,90,45;
SP3;PU2707,1707;FT10,100;WG1000,90,45;
SP3;PU2707,2707;FT10,100;WG1000,90,45;
SP3;PU2707,2707;FT10,100;WG1000,90,45;
SP3;PU2707,3707;FT10,100;WG1000,90,45;
SP3;PU2707,3707;FT10,100;WG1000,90,45;
SP3;PU2707,4707;FT10,100;WG1000,90,45;
SP3;PU2707,4707;FT10,100;WG1000,90,45;
SP3;PU2707,5707;FT10,100;WG1000,90,45;
SP3;PU2707,5707;FT10,100;WG1000,90,45;
SP3;PU2707,2707;FT10,100;WG1000,270,45;
SP3;PU2707,2707;FT10,100;WG1000,270,45;
SP3;PU2707,1707;FT10,100;WG1000,270,45;
SP3;PU2707,1707;FT10,100;WG1000,270,45;
SP3;PU2707,3707;FT10,100;WG1000,270,45;
SP3;PU2707,3707;FT10,100;WG1000,270,45;
SP3;PU2707,4707;FT10,100;WG1000,270,45;
SP3;PU2707,4707;FT10,100;WG1000,270,45;
SP3;PU2707,5707;FT10,100;WG1000,270,45;
SP3;PU2707,5707;FT10,100;WG1000,270,45;
SP3;PU4121,1707;FT10,100;WG1000,90,45;
SP3;PU4121,1707;FT10,100;WG1000,90,45;
SP3;PU4121,2707;FT10,100;WG1000,90,45;
SP3;PU4121,2707;FT10,100;WG1000,90,45;
SP3;PU4121,3707;FT10,100;WG1000,90,45;
SP3;PU4121,3707;FT10,100;WG1000,90,45;
SP3;PU4121,4707;FT10,100;WG1000,90,45;
SP3;PU4121,4707;FT10,100;WG1000,90,45;
SP3;PU4121,5707;FT10,100;WG1000,90,45;
SP3;PU4121,5707;FT10,100;WG1000,90,45;
SP3;PU4121,2707;FT10,100;WG1000,270,45;
SP3;PU4121,2707;FT10,100;WG1000,270,45;
SP3;PU4121,1707;FT10,100;WG1000,270,45;
SP3;PU4121,1707;FT10,100;WG1000,270,45;
SP3;PU4121,3707;FT10,100;WG1000,270,45;
SP3;PU4121,3707;FT10,100;WG1000,270,45;
SP3;PU4121,4707;FT10,100;WG1000,270,45;
SP3;PU4121,4707;FT10,100;WG1000,270,45;
SP3;PU4121,5707;FT10,100;WG1000,270,45;
SP3;PU4121,5707;FT10,100;WG1000,270,45;
SP3;PU5536,1707;FT10,100;WG1000,90,45;
SP3;PU5536,1707;FT10,100;WG1000,90,45;
SP3;PU5536,2707;FT10,100;WG1000,90,45;
SP3;PU5536,2707;FT10,100;WG1000,90,45;
SP3;PU5536,3707;FT10,100;WG1000,90,45;
SP3;PU5536,3707;FT10,100;WG1000,90,45;
SP3;PU5536,4707;FT10,100;WG1000,90,45;
SP3;PU5536,4707;FT10,100;WG1000,90,45;
SP3;PU5536,5707;FT10,100;WG1000,90,45;
SP3;PU5536,5707;FT10,100;WG1000,90,45;
SP3;PU5536,2707;FT10,100;WG1000,270,45;
SP3;PU5536,2707;FT10,100;WG1000,270,45;
SP3;PU5536,1707;FT10,100;WG1000,270,45;
SP3;PU5536,1707;FT10,100;WG1000,270,45;
SP3;PU5536,3707;FT10,100;WG1000,270,45;
SP3;PU5536,3707;FT10,100;WG1000,270,45;
SP3;PU5536,4707;FT10,100;WG1000,270,45;
SP3;PU5536,4707;FT10,100;WG1000,270,45;
SP3;PU5536,5707;FT10,100;WG1000,270,45;
SP3;PU5536,5707;FT10,100;WG1000,270,45;
SP1;PU2000,1000;FT10,100;WG1000,90,45;
SP1;PU2000,2000;FT10,100;WG1000,90,45;
SP1;PU2000,3000;FT10,100;WG1000,90,45;
SP1;PU2000,4000;FT10,100;WG1000,90,45;
SP1;PU2000,5000;FT10,100;WG1000,90,45;
SP1;PU2000,2414;FT10,100;WG1000,270,45;
SP1;PU2000,3414;FT10,100;WG1000,270,45;
SP1;PU2000,4414;FT10,100;WG1000,270,45;
SP1;PU2000,5414;FT10,100;WG1000,270,45;
SP1;PU2000,6414;FT10,100;WG1000,270,45;
SP1;PU3414,1000;FT10,100;WG1000,90,45;
SP1;PU3414,2000;FT10,100;WG1000,90,45;
SP1;PU3414,3000;FT10,100;WG1000,90,45;
SP1;PU3414,4000;FT10,100;WG1000,90,45;
SP1;PU3414,5000;FT10,100;WG1000,90,45;
SP1;PU3414,3414;FT10,100;WG1000,270,45;
SP1;PU3414,2414;FT10,100;WG1000,270,45;
SP1;PU3414,4414;FT10,100;WG1000,270,45;
SP1;PU3414,5414;FT10,100;WG1000,270,45;
SP1;PU3414,6414;FT10,100;WG1000,270,45;
SP1;PU4828,1000;FT10,100;WG1000,90,45;
SP1;PU4828,2000;FT10,100;WG1000,90,45;
SP1;PU4828,3000;FT10,100;WG1000,90,45;
SP1;PU4828,4000;FT10,100;WG1000,90,45;
SP1;PU4828,5000;FT10,100;WG1000,90,45;
SP1;PU4828,3414;FT10,100;WG1000,270,45;
SP1;PU4828,2414;FT10,100;WG1000,270,45;
SP1;PU4828,4414;FT10,100;WG1000,270,45;
SP1;PU4828,5414;FT10,100;WG1000,270,45;
SP1;PU4828,6414;FT10,100;WG1000,270,45;
SP1;PU6243,1000;FT10,100;WG1000,90,45;
SP1;PU6243,2000;FT10,100;WG1000,90,45;
SP1;PU6243,3000;FT10,100;WG1000,90,45;
SP1;PU6243,4000;FT10,100;WG1000,90,45;
SP1;PU6243,5000;FT10,100;WG1000,90,45;
SP2;PU1293,1707;FT10,100;EW1000,270,45;
SP2;PU1293,1707;FT10,100;EW1000,270,45;
SP2;PU1293,2707;FT10,100;EW1000,270,45;
SP2;PU1293,2707;FT10,100;EW1000,270,45;
SP2;PU1293,3707;FT10,100;EW1000,270,45;
SP2;PU1293,3707;FT10,100;EW1000,270,45;
SP2;PU1293,4707;FT10,100;EW1000,270,45;
SP2;PU1293,4707;FT10,100;EW1000,270,45;
SP2;PU1293,5707;FT10,100;EW1000,270,45;
SP2;PU1293,5707;FT10,100;EW1000,270,45;
SP2;PU2707,1707;FT10,100;EW1000,90,45;
SP2;PU2707,1707;FT10,100;EW1000,90,45;
SP2;PU2707,2707;FT10,100;EW1000,90,45;
SP2;PU2707,2707;FT10,100;EW1000,90,45;
SP2;PU2707,3707;FT10,100;EW1000,90,45;
SP2;PU2707,3707;FT10,100;EW1000,90,45;
SP2;PU2707,4707;FT10,100;EW1000,90,45;
SP2;PU2707,4707;FT10,100;EW1000,90,45;
SP2;PU2707,5707;FT10,100;EW1000,90,45;
SP2;PU2707,5707;FT10,100;EW1000,90,45;
SP2;PU2707,2707;FT10,100;EW1000,270,45;
SP2;PU2707,2707;FT10,100;EW1000,270,45;
SP2;PU2707,1707;FT10,100;EW1000,270,45;
SP2;PU2707,1707;FT10,100;EW1000,270,45;
SP2;PU2707,3707;FT10,100;EW1000,270,45;
SP2;PU2707,3707;FT10,100;EW1000,270,45;
SP2;PU2707,4707;FT10,100;EW1000,270,45;
SP2;PU2707,4707;FT10,100;EW1000,270,45;
SP2;PU2707,5707;FT10,100;EW1000,270,45;
SP2;PU2707,5707;FT10,100;EW1000,270,45;
SP2;PU4121,1707;FT10,100;EW1000,90,45;
SP2;PU4121,1707;FT10,100;EW1000,90,45;
SP2;PU4121,2707;FT10,100;EW1000,90,45;
SP2;PU4121,2707;FT10,100;EW1000,90,45;
SP2;PU4121,3707;FT10,100;EW1000,90,45;
SP2;PU4121,3707;FT10,100;EW1000,90,45;
SP2;PU4121,4707;FT10,100;EW1000,90,45;
SP2;PU4121,4707;FT10,100;EW1000,90,45;
SP2;PU4121,5707;FT10,100;EW1000,90,45;
SP2;PU4121,5707;FT10,100;EW1000,90,45;
SP2;PU4121,2707;FT10,100;EW1000,270,45;
SP2;PU4121,2707;FT10,100;EW1000,270,45;
SP2;PU4121,1707;FT10,100;EW1000,270,45;
SP2;PU4121,1707;FT10,100;EW1000,270,45;
SP2;PU4121,3707;FT10,100;EW1000,270,45;
SP2;PU4121,3707;FT10,100;EW1000,270,45;
SP2;PU4121,4707;FT10,100;EW1000,270,45;
SP2;PU4121,4707;FT10,100;EW1000,270,45;
SP2;PU4121,5707;FT10,100;EW1000,270,45;
SP2;PU4121,5707;FT10,100;EW1000,270,45;
SP2;PU5536,1707;FT10,100;EW1000,90,45;
SP2;PU5536,1707;FT10,100;EW1000,90,45;
SP2;PU5536,2707;FT10,100;EW1000,90,45;
SP2;PU5536,2707;FT10,100;EW1000,90,45;
SP2;PU5536,3707;FT10,100;EW1000,90,45;
SP2;PU5536,3707;FT10,100;EW1000,90,45;
SP2;PU5536,4707;FT10,100;EW1000,90,45;
SP2;PU5536,4707;FT10,100;EW1000,90,45;
SP2;PU5536,5707;FT10,100;EW1000,90,45;
SP2;PU5536,5707;FT10,100;EW1000,90,45;
SP2;PU5536,2707;FT10,100;EW1000,270,45;
SP2;PU5536,2707;FT10,100;EW1000,270,45;
SP2;PU5536,1707;FT10,100;EW1000,270,45;
SP2;PU5536,1707;FT10,100;EW1000,270,45;
SP2;PU5536,3707;FT10,100;EW1000,270,45;
SP2;PU5536,3707;FT10,100;EW1000,270,45;
SP2;PU5536,4707;FT10,100;EW1000,270,45;
SP2;PU5536,4707;FT10,100;EW1000,270,45;
SP2;PU5536,5707;FT10,100;EW1000,270,45;
SP2;PU5536,5707;FT10,100;EW1000,270,45;
SP2;PU2000,1000;FT10,100;EW1000,90,45;
SP2;PU2000,1000;FT10,100;EW1000,90,45;
SP2;PU2000,2000;FT10,100;EW1000,90,45;
SP2;PU2000,2000;FT10,100;EW1000,90,45;
SP2;PU2000,3000;FT10,100;EW1000,90,45;
SP2;PU2000,3000;FT10,100;EW1000,90,45;
SP2;PU2000,4000;FT10,100;EW1000,90,45;
SP2;PU2000,4000;FT10,100;EW1000,90,45;
SP2;PU2000,5000;FT10,100;EW1000,90,45;
SP2;PU2000,5000;FT10,100;EW1000,90,45;
SP2;PU2000,2414;FT10,100;EW1000,270,45;
SP2;PU2000,2414;FT10,100;EW1000,270,45;
SP2;PU2000,3414;FT10,100;EW1000,270,45;
SP2;PU2000,3414;FT10,100;EW1000,270,45;
SP2;PU2000,4414;FT10,100;EW1000,270,45;
SP2;PU2000,4414;FT10,100;EW1000,270,45;
SP2;PU2000,5414;FT10,100;EW1000,270,45;
SP2;PU2000,5414;FT10,100;EW1000,270,45;
SP2;PU2000,6414;FT10,100;EW1000,270,45;
SP2;PU2000,6414;FT10,100;EW1000,270,45;
SP2;PU3414,1000;FT10,100;EW1000,90,45;
SP2;PU3414,1000;FT10,100;EW1000,90,45;
SP2;PU3414,2000;FT10,100;EW1000,90,45;
SP2;PU3414,2000;FT10,100;EW1000,90,45;
SP2;PU3414,3000;FT10,100;EW1000,90,45;
SP2;PU3414,3000;FT10,100;EW1000,90,45;
SP2;PU3414,4000;FT10,100;EW1000,90,45;
SP2;PU3414,4000;FT10,100;EW1000,90,45;
SP2;PU3414,5000;FT10,100;EW1000,90,45;
SP2;PU3414,5000;FT10,100;EW1000,90,45;
SP2;PU3414,3414;FT10,100;EW1000,270,45;
SP2;PU3414,3414;FT10,100;EW1000,270,45;
SP2;PU3414,2414;FT10,100;EW1000,270,45;
SP2;PU3414,2414;FT10,100;EW1000,270,45;
SP2;PU3414,4414;FT10,100;EW1000,270,45;
SP2;PU3414,4414;FT10,100;EW1000,270,45;
SP2;PU3414,5414;FT10,100;EW1000,270,45;
SP2;PU3414,5414;FT10,100;EW1000,270,45;
SP2;PU3414,6414;FT10,100;EW1000,270,45;
SP2;PU3414,6414;FT10,100;EW1000,270,45;
SP2;PU4828,1000;FT10,100;EW1000,90,45;
SP2;PU4828,1000;FT10,100;EW1000,90,45;
SP2;PU4828,2000;FT10,100;EW1000,90,45;
SP2;PU4828,2000;FT10,100;EW1000,90,45;
SP2;PU4828,3000;FT10,100;EW1000,90,45;
SP2;PU4828,3000;FT10,100;EW1000,90,45;
SP2;PU4828,4000;FT10,100;EW1000,90,45;
SP2;PU4828,4000;FT10,100;EW1000,90,45;
SP2;PU4828,5000;FT10,100;EW1000,90,45;
SP2;PU4828,5000;FT10,100;EW1000,90,45;
SP2;PU4828,3414;FT10,100;EW1000,270,45;
SP2;PU4828,3414;FT10,100;EW1000,270,45;
SP2;PU4828,2414;FT10,100;EW1000,270,45;
SP2;PU4828,2414;FT10,100;EW1000,270,45;
SP2;PU4828,4414;FT10,100;EW1000,270,45;
SP2;PU4828,4414;FT10,100;EW1000,270,45;
SP2;PU4828,5414;FT10,100;EW1000,270,45;
SP2;PU4828,5414;FT10,100;EW1000,270,45;
SP2;PU4828,6414;FT10,100;EW1000,270,45;
SP2;PU4828,6414;FT10,100;EW1000,270,45;
SP2;PU6243,1000;FT10,100;EW1000,90,45;
SP2;PU6243,1000;FT10,100;EW1000,90,45;
SP2;PU6243,2000;FT10,100;EW1000,90,45;
SP2;PU6243,2000;FT10,100;EW1000,90,45;
SP2;PU6243,3000;FT10,100;EW1000,90,45;
SP2;PU6243,3000;FT10,100;EW1000,90,45;
SP2;PU6243,4000;FT10,100;EW1000,90,45;
SP2;PU6243,4000;FT10,100;EW1000,90,45;
SP2;PU6243,5000;FT10,100;EW1000,90,45;
SP2;PU6243,5000;FT10,100;EW1000,90,45;

SP0;IN;

dinkolas-TilingPattern

love ngon

I ended up going with a very simple thing, where I made 16 drawings with my mouse in p5 and fitted them together. The black lines are drawn by the machine, the color was done by hand. I’m still pretty happy with the result despite its simplicity.

Before I did this, I attempted several other more complex things, but didn’t have the time to finish them. The original plan was to take parametrically modeled 3d objects (heads w/ faces, specifically), generate a 2d drawing of each of them, then warp the 2d drawings by stretching either their 2d outlines or 2d convex hulls to fill various tiled shapes (either a regular pattern or maybe voronoi cells). Too complicated!

spingbing-TilingPattern

  • In my hatching offering I ended up creating a pattern that more resembled a tile than it did a hatching method (seen below in the second row). I really enjoyed how it looked, however, so I decided I wanted to build off of that circular pattern for this assignment.
  • I was also quite obviously very inspired by Madeline Gannon’s circular truchet pattern . I really loved how organic the repeated arcs looked against each other and how it reminded me of how clouds are sometimes drawn in Korean traditional art, especially in the image of the unfinished plotter drawing. I decided that I wanted to try and recreate it to see if my pattern, in the midst of plotting, would turn out like hers did. I started with two tiles and was finished pretty quickly, but it looked very gridlike still.  I decided to add a third to try and remove the grid quality, and I am pretty satisfied with how it turned out.
  • These are some doodles I draw sometimes when I’m bored or trying to stay awake, and also serve as loose ideas or sketches for my piece. The crowded circle bunch is most similar to my pattern, and the clouds are what I drew after seeing Madeline Gannon’s unfinished plot.

  • My work in progress plot that I like more than the final plot:

  • My final plot:

lemonbear—TilingPattern

I thought it would be fun to create an interactive tiling game, so I brainstormed some algorithmic rules vaguely following the spirit of Wang Tiles (connections have to flow across tile boundaries):

I learned how to use vsketch/vpype (s/o to Perry for the help) for this project. I’ve been meaning to try a project in Python for a while, because I can write the most haphazard bullshit code in Python (I’m like halfway comfortable with JS, I don’t know Java that well, anything C-based I have to be really careful in). The chaotic energy of Python has always felt most akin to the chaos of art making to me.  Here is some of the code. It is terrible:

The final SVG looked like this:

I then spent half an hour laser cutting:

I brought these to the STUDIO and people got to play with them, which made me really happy. The numbers produced mixed reactions—a lot of people thought they contextualized each tile piece too heavily and were too obtrusive, which I somewhat agree with. I do think the ability to move the pieces around and have clear evidence that they’re not in their designated place is interesting—”the rules are obviously broken, but the beauty persists” kind of deal.

gabagoo-TilingPattern

I wanted to create tiles that do not tile in the conventional sense, but rather that create emergent structures from overlapping. I created a few basic primitives (top) and used triangular coordinates to implement the overlapping (bottom).

I struggled quite a bit with finding a good tiling algorithm because there is an optimization between dense overlapping clusters (top left) and leaving space between tiles (top right). In the end, I just randomly placed a set of 20 tiles for each iteration of a loop (bottom left). I also experimented with vector fields and subsampling.

 

The final plots came out well. The left two plots were from a different algorithm than randomly placing tiles. That algorithm involved using probability distributions to determine where a new tile should occur. I think I will further experiment with two tone colors like in the purple plot, however, I’m a bigger fan of the monocolor plots.

sweetcorn-TilingPattern

For my project, I picked up an old project of mine which generated childrens’-story-esque faces. I worked on this before becoming familiar with Shapely, so I had hadn’t implemented any sort of filling. I brought this old code from JavaScript to python and converted everything into Shapely geometries. Below is some documentation from the old project.

With my work last week figuring out how to plot on the USCutter MH871-MK2, I figured it would be lovely to generate and plot human-sized figures.

The hair and shoes are filled with simple hatching, but the shirt has a pattern build out of Hershey fonts. Using this python hershey font library, I randomly choose symbol characters and place them between arrangements of {}, /\, or two opposite-facing integral symbols. I use shapely to crop all the fills to their respective polygons. Below is a gif containing a few generated .svg’s

A video of the plot in progress:

And some plotted results: