Wednesday, November 7, 2012

Curve Stitching

Curve Stitching, also known as String Art, was first introduced by Mary Boole, a self-taught mathematician and wife of George Boole (the father of Boolean Algebra to which Mary also contributed quite a bit).  The idea is to draw a design with straight lines, then subdivide the lines (usually at regular intervals) and connect points on two adjacent lines, again with straight lines (1 to 1, 2 to 2 and so on) as shown below:

How to create a Curve Stitch Design

The interesting thing is that because the straight lines meet at an angle, there is an illusion that you have created a curved line by drawing straight lines.  And the more subdivisions you make in the original two lines, the smoother the curve looks.

There is an interesting article in Maths Plus about the relationship between these Curve Stitches and Bezier Curves:
Jason Davies also has a nice animation illustrating how Bezier curves are formed..

There are many very nice examples of String Art on the web.  One of my favourite sites is by Lionel Deimel (  Lionel has experimented with computer programs to create some very detailed examples and he gives a very thorough explanation of how he created the images.

There is also a Pinterest board with some lovely examples (mostly made with string):

Here are some ideas for creating Curve Stitches of your own.

Approach 1: Graph paper

The easiest way to start is with a ruler, a pencil and some graph paper.  Draw a few lines, mark divisions on the lines and connect them.  Any easy way to play around with the divisions is to measure the length of the line, divide it in half and place a mark.  Do the same with the line you want to connect to and join the two marks together.  Next take the two smaller line segments you have created on the first line and divide them in half.  Repeat for the line you are connecting to.  Join the marks (make sure you match up the right ones!).  You can do this over and over again until you have the number of divisions that you think looks nice or you get tired.  Make sure your pencil is sharp!

You can also create String Art with string and cardboard as shown by Wen Jin Chow:

Approach 2: Scratch

You can use the Pen and Motion blocks in Scratch or BYOB to create computer String Art designs.

I used a BYOB program to create the picture below:

Screen Shot of Output from BYOB program

I recommend that you try mapping out the design on graph paper first, assign coordinates to the ends of the lines and then create the design in Scratch or BYOB.  Once you have created a design in BYOB, you can play around with different things like pen colour, pen size, the number of times you divide the line and the placement of the original lines.

If you don't feel like writing your own program, you can use the following Scratch program to create String Art on the computer:
Just click to make three dots and the program will fill in the lines for you.  Keep clicking to extend your design.

Approach 3: Inkscape Path Effect

The one drawback of Scratch and BYOB is that the canvas for drawing is pretty small and the lines are not very fine.  If you want more precision, you might try a Scalable Vector Graphics tool like Inkscape.

There are at least two ways to create Curve Stitches with Inkscape.  The first is to use the built in Path Effect tool.  To do this, draw two lines using the Pen tool.  Select the two lines and from the top menu bar select Path -> Combine:

Step 1

Next, from the top menu bar select Path - > Path Effect Editor...

Step 2
Finally, in the Path Effect Editor, choose "Stitch Sub-paths" from the "Add new effect " drop down and click on the "Add" button.

Step 3
You should now see lines drawn between the two original lines.  You can adjust the number of lines that are drawn using the "Number of paths" field.

Step 4
 Now that you have created a stitched curve, you can use copy, paste and group to combine the curves in interesting patterns.  The following design is based on Circular Designs by Deimel:
Curve Stitch Circular Design based on Deimel's design
(Here is the SVG Image)

Approach 4: Inkscape Extension

If you want to be more precise, you can use Inkscape Extensions and a write a python script to generate the lines.  I used the pTurtle class which provides a nice turtle graphics style API and created a simple Inkscape extension.  To try it out, copy the following two files:


and placed them in the "C:\Program Files (x86)\Inkscape\share\extensions" (or wherever your Inkscape extensions folder may be).  Then in Inkscape select "Extensions -> My Math Art Examples -> Curve Stitch 1..."  This extension was used to generate the picture below which is based on Deimel's Isometric Cube design:

Curve Stitch Isometric Cube design based on Deimel's design
(Here is the SVG Image)


  1. I had no idea this was called string art or curved stitches but this is one of the things I draw whenever I am left bored with a pen and paper -- they are really fun to draw! Your Inkscape extensions is very interesting, I will have to try it out. Great post!

  2. You wrote a great Inkscape extension.
    Thank you for posting it!

  3. Hello, what exactly is the mathematics behind curve stitching? I am curious and am writing a report on how to curve stitch. I would be grateful if you answered this.