Isometric Snowflakes

Keywords: art
Created: 2019-12-15 Sun
Table of Contents

Introduction

This post uses a rust-based Emacs plugin for generating art and plotting it using AxiDraw plotters.

You can find it at l3kn/Plotter .

scan3.jpg

Symmetry

Most snowflakes have six-fold radial symmetry.

A cube under isometric projection forms a hexagon.

To replicate the symmetry of a snowflake, we fill this cube with randomly generated cuboids, then swap their axes (x and y, x and z, y and z) to introduce three-fold symmetry.

Randomness

Each image should uses a random seed of 32 bits (eight hexadecimal digits).

What I like about generative art is being surprised by how different the outputs of a simple algorithms can look when all the parameters are randomized.

When generating random numbers, I like to do so in two steps, first generating a range delimited by two powers of two isometric_snowflakes_6f58a9885da31ee007757889e32751a2aa3cb7dc.svg where isometric_snowflakes_3e151292520519df5ec54450859029eed587b457.svg are chosen at random (in a limited range), then generating random numbers in this range.

Iteration 1

-> is a threading macro from magnars/dash.el .

(dotimes (_i 50)
  (let* ((seed (plt-random-seed))
         (caption (vector (format "0x%s" seed))))
  (random seed)
  (let* ((grid-size 128)
         (n-cuboids (plt-random-pow2 4 7))
         (cuboid-size (plt-random-pow2-size 0 6))
         (grid (plt-make-grid grid-size)))
    (-> (loop for x below n-cuboids
              collect
              (plt-random-iso-cuboid (plt-random-pow2-size 0 6) grid-size))
        (plt-swap-xy-both)
        (plt-swap-xz-both)
        (plt-swap-yz-both)
        (plt-grid-add grid))
    (plt-grid-to-image
     grid
     plt-a3-size
     plt-a3-caption-size
     (concat dir "/a3/" seed ".svg")
     "iso_snowflake1"
     caption)
    (plt-grid-to-image
     grid
     plt-a4-size
     plt-a4-caption-size
     (concat dir "/a4/" seed ".svg")
     "iso_snowflake1"
     caption))))

scan2.jpg

Iteration 2

(dotimes (_i 50)
  (let* ((seed (plt-random-seed))
         (caption (vector (format "0x%s" seed))))
  (random seed)
  (let* ((grid-size 128)
         (n-cuboids (plt-random-pow2 4 7))
         (grid (plt-make-grid grid-size)))
    (-> (loop for x below n-cuboids
              collect
              (plt-random-iso-cuboid (plt-random-pow2-size 0 6) grid-size))
        (plt-swap-xy-both)
        (plt-swap-xz-both)
        (plt-swap-yz-both)
        (plt-grid-add grid))
    (plt-grid-to-image
     grid
     plt-a3-size
     plt-a3-caption-size
     (concat dir "/a3/" seed ".svg")
     "iso_snowflake2"
     caption)
    (plt-grid-to-image
     grid
     plt-a4-size
     plt-a4-caption-size
     (concat dir "/a4/" seed ".svg")
     "iso_snowflake2"
     caption))))

scan1.jpg

Getting a Plot of This

If you have an AxiDraw or a similar plotter that can plot svg files, you should be able to download these images and plot them yourself.

On l3kn/iso snowflakes you can find hundreds of randomly generated svg files in A3 and A4 size.

The order of the paths is already optimized, images can be plotted using the AxiDraw CLI .

I'm using the following command (AxiDraw V3 A3):

axicli image_name.svg -L 2 -p /dev/ttyACM0 -s 30 -S 50 -a 30

For different paper sizes, you can resize the images in inkscape.

Only path elements are used, so it should be possible to plot these images with an HPGL plotter, too. To do so, either parse the path elements of the svg and scale the points or write to support@leonrische.me so we can come up with a format that's easy for me to generate and easy for you to use.

If you want a plot on nice paper, contact me at sales@leonrische.me .

License

Creative Commons License
iso_snowflake by Leon Rische is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License .
Permissions beyond the scope of this license may be available at mailto:contact@leonrische.me .

When distributing this work, please link to the Isometric Snowflakes page. For printed / plotted versions, the URL could be written on the back.

This license allows commercial use, if you want to sell plots of these images, please don't charge more that necessary to cover material costs and a hourly wage for yourself you consider fair.

Material Used

Pens

  • Faber-Castell Pitt Artist Pen, blue, 0.3 (S)
  • Sakura Gelly Roll, white, 05

Paper

  • Bristol, A4, 250g/m 2
  • Black carton paper, A4, 3008/m 2

Backlinks


Last export: 2020-07-12 Sun 22:29
This document is also available as plain text and pdf.

If you have an idea how this page could be improved or a comment send me a mail.