crazy paving

xtensor's Avatar


11 Feb, 2023 11:46 AM

In the 1960s an American architecture professor, William Huff, coined the term ‘parquet deformation’ to mean a regular pattern of tiles that transforms as you go from left to right whilst maintaining the regularity of the tiling. I've been interested in this since I read an article in Scientific American and recently used Nodebox 3 to create some examples. Here are a couple I made:

  1. Support Staff 1 Posted by john on 21 Feb, 2023 10:40 AM

    john's Avatar

    Hi Michael,

    My apologies for not reacting to this sooner.

    Thank you for sharing more of your parquet deformations.. I found a nice article about them here:

    This does seem a perfect project for Nodebox. By the way, I was unable to open either of your Nodebox files because they both reference an external code module, Unless you include that in your zip file, Nodebox throws an error on. launch. Whenever I use an external module I always put it in a folder along with the ndbx file then zip the entire folder.

    You can create these deformations entirely within Nodebox without using external code. If you want to keep playing with this, that could be your next goal. There are many possibilities here!

    Thanks again!


  2. 2 Posted by xtensor on 22 Feb, 2023 03:25 PM

    xtensor's Avatar

    Hi John

    Thank you for your article. I realise that my examples don't adhere exactly to the rules that Huff invented — they would draw them all by hand back then.

    I've re-uploaded the two examples within folders. I would be interested in how to create them entirely within Nodebox.

    Best wishes

  3. Support Staff 3 Posted by john on 23 Feb, 2023 12:35 AM

    john's Avatar


    Attached is a screenshot and demo showing how to recreate your hex11B pattern using only Nodebox (with far fewer nodes).

    The only reason you were using external code was to create some trig functions using supplied x, y, and z values. You could easily replace each formula node with a subnetwork that takes x, y, and.or z then feeds them into a series of standard Nodebox nodes like multiply, radians, sin, cos, etc. This requires a bit more wiring inside the subnetwork but does save you the hassle of managing an external module.

    But in this case it was possible to dramatically simply the network and eliminate the need for trigonometric formulas. Looking at your output I saw that you were basically inscribing a series of ever skinnier stars inside your hexagram. So I just used Nodebox's star node instead.

    You do need to do a little simple math to calculate the inner and outer radius of each star. All you have to do is set the inner radius to twice the radius of the hexagon, and set the outer radius to a value that varies from .866 times the inner radius (for a hexagon) down to 0 (for a spiky star). .866 is the square root of .75 - which is the length from the hexagon's center to the midpoint of a side divided by the radius (the length to a corner).

    (This was not immediately obvious to me. I figured it out by playing with the star node and then thinking about the geometry of a hexagon and applying the Pythagorean Theorem.)

    The resulting network is not only much simpler, it's almost much faster, drawing a parquet of any size and dimensions in the blink of an eye. You can also change the sort node to distance to create a tiling with hexagons at the center deforming to stars at the edges.

    I will leave your colour grid as an exercise for you. In that case all you are really doing is rotating two triangles inside each hexagram. The only challenge here is finding the size of the triangle but this is easy: just connect the midpoints of every other side in the hexagon. A neat trick for finding those midpoints is to feed 1/12, 5/12, and 9/12 times 100 into a point_on_path node for your hexagon.

    There are MANY other ways to deform a parquet, each requiring a different approach. I have found that, with a little thought, you can almost always do things like this entirely in Nodebox without resorting to external code libraries. And if you see yourself making essentially the same subnet again and again (as you did in 11B for each edge of your star) you should stop as ask yourself if there a simpler way.

    Once again I thank you for sharing this and introducing us all to these charming parquet deformations. I might try my hand at a few more variations.


  4. Support Staff 4 Posted by john on 24 Feb, 2023 09:28 AM

    john's Avatar

    And here, just for fun, is a wavy chessboard reminiscent of Escher's Metamorphoses (screenshot and demo attached).

    I use my waveform node to create an increasing sine wave. I make copies of these horizontal waves, then use each segment to make vertical waves, and then intersect these to form a grid of cells.

    I then ungroup to break everything into segments and feed that into my cells subnetwork, which slices out the ceiling, east wall, floor, and west wall segments for each cell, and connects them to form solid shapes - that can then be colored. My chess_colors subnetwork makes sure the two colors form a checkerboard pattern regardless of whether there are an even or odd number of rows and columns.

    In addition to setting the number of rows and columns at the top, you can also set the "size" which determines how wavy the cells get. All cells are fixed to the corners of a 100 x 100 square, but you can add a scale node at the bottom to shrink or expand that as you wish.

    This is a different way of deforming parquet tiles than the previous method. There are many other ways of doing it as well.



Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:


Already uploaded files

  • polygrid_hex11B.jpg 1.21 MB
  • 6.33 KB
  • polygrid_hex_colour.png 1.81 MB
  • 6.09 KB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

19 Jun, 2024 09:35 AM
18 Jun, 2024 10:50 AM
15 Jun, 2024 01:44 PM
08 Jun, 2024 09:05 AM
08 Jun, 2024 09:00 AM