File Exchange

image thumbnail

Spirograph GUI

version (243 KB) by Brian Moore
A MATLAB GUI for generating customizable multilayer spirographs


Updated 11 Jun 2013

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

Syntax: SpirographGUI;

Dependencies: Make sure you add the folder "./HelperFcns/" to your MATLAB
path before running SpirographGUI(). This folder contains
helper functions that are called during execution

Description: This function generates a GUI in a MATLAB figure window
that allows the user to draw customizable multi-layer

Controls: Controls are broken into three button groups: Shapes,
Figure, and Spirograph

The Shapes button group allows the user to select from a
list of available inner/outer shapes and customize their
parameters, including the ability to 1) modify the
positions of the holes in the inner shape, 2) change the
active hole, and 3) show/hide the shapes (e.g., you may
want to hide the shapes to view your finished spirograph!)

The Figure button group allows the user to 1) rotate
layer(s) of the existing spirograph, 2) delete layer(s) of
the existing spirograph, and 3) change the current axis

The Spirograph button group allows the user to customize
the 1) initial angle, 2) number of revolutions, 3) graph
resolution, and 4) plotting style (e.g., line color, line
width, etc.) of the next spirograph layer. After
customizing the layer, simply push the "Draw" button to
watch your spirograph draw itself (you can then push "Stop"
to terminate the drawing early, if desired)

Author: Brian Moore

Cite As

Brian Moore (2021). Spirograph GUI (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (5)


Great! Only I'd like to close the plotted line (if the geometric given parameters allow this). Where can I act on the code to get this? Thanks.

Adam Filion

This is great! I had totally forgotten about spirograph, had one when I was a kid. Nice implementation in MATLAB and fun to play around with :)

Brian Moore

@Jean Bilheux: The algorithm is pretty simple: move a small arc length, say ds, along the border of each shape and then rotate/translate the inner shape as necessary to align the tangent vectors of the inner/outer shapes at their current border positions

I.e., all one needs is an expression for the derivative of each shape's border, from which one can compute arc length (via numerical integration, if necessary) and tangent vectors

Jean Bilheux

Nice application. Will also use it to learn the way you designed the algorithm.



MATLAB Release Compatibility
Created with R2011b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!