We were recently contacted by a mathematics instructor, who suggested that it might be interesting to have a program like Snowflake, but with the option of picking and choosing different symmetry properties.
Natural snowflakes have (approximate) sixfold rotation symmetry plus reflection symmetry. However, a lot of things that you can draw by hand have absolutely no resemblance to snowflakes at all– and it is somewhat fun to explicitly play with the rules.
Our new program, SymmetriSketch, sticks to the same basic design principles as Snowflake: it’s cross platform, open source, and able to export a true vector drawing with a closed path. However, SymmetriSketch is a much more flexible program that allows you to play with different symmetries, and create all kinds of different things that would never be mistaken for frozen water.
Here’s what it looks like when the program first opens:
The initial shape is an overall pentagon– an object with five-fold rotation symmetry and reflection symmetry. The figure is generated by taking the editable slice– highlighted here and when you start the program– and reflecting and rotating it to complete the full shape that you see.
Within the editable slice, you can also see three highlighted control points that can be dragged around. There is control point at every vertex and at the midpoint of every line segment between two vertices. If you drag a control point that is the midpoint of a line segment, it turns that control point into a new vertex. That new vertex also gets new control points at the midpoints to its neighbors.
Every vertex point can be moved to any location on the screen with the exception of the vertex that is initially at the top point of the pentagon– that vertex is constrained to move along the vertical axis– the axis of reflection symmetry.
The controls are purposefully kept simple. There are two symmetry controls– for the order of rotational symmetry and to toggle reflection– which you can change in the lower left hand corner of the screen.
The number, with its +/- controls, refers to the order of discrete rotational symmetry. If the number shown is n, then n-fold rotational symmetry is applied, which means that the displayed object is unchanged when rotated by 360 degrees/n. In the screenshot above, 9-fold rotational symmetry is applied.
Orders from 1 to 99 are allowed– note that 1-fold rotational symmetry is “no symmetry at all” since it requires 360/1 = 360 degrees of rotation to return to the original shape.
The second control is for reflection symmetry, and toggles between “reflect” or “rot. only,” where it either does, or does not apply a mirror reflection across the vertical axis.
With reflection symmetry turned off, the figure is drawn with pure rotational symmetry. (This screenshot was taken while editing the shape, and you can see control points, indicated by little circles.)
Going for higher orders of rotational symmetry can lead to interesting looking shapes as well:
At the lower right corner of the window are “Clear” and “Save” buttons. The “Clear” button that erases your drawing and resets the vertices on the screen. The “Save” button saves your drawing as a PDF file. The file is automatically saved in the same folder as the SymmetriSketch program, with file name SymmetriSketch-####.pdf, where #### is a number.
Here is what the PDF output looks like, in comparison to the program that generated it on screen.
The PDF files are saved with single-stroke output. That is to say, any shape drawn by this program can be drawn in one pass, without lifting a pen– although lines are allowed to cross. That makes the program suitable for designing continuous paths for pen plotters, vinyl cutters, engraving machines, and other CNC and art robots.
Programs written in Processing are called sketches. The SymmetriSketch sketch can be either opened and run directly– as an application– or executed from within the Processing environment.
Method 1: Download the SymmetriSketch application directly for your choice of platform:
Method 2: Download SymmetriSketch source code and Processing
- 2A: Download Processing for your platform.
- 2B: Download the SymmetriSketch sketch file (60 kB .ZIP archive)
We suspect that this app will lead to some good geometric play time– and maybe even interesting objects via the vector export. We’d love to see the drawings that you produce in the Evil Mad Science Auxiliary!