Making the Worlds Largest Dot-to-Dot

Oliver Stenbom
6 min readMar 24, 2017

--

Code, WR Dot as PDF

Back in December, I picked up a dot-to-dot book filled with 1000 dot representations of art masterpieces. Since then I’ve taken a hobby into ridiculous proportion and made the world’s largest dot-to-dot puzzle (by number of dots). I’m writing this to explain how it was made in an attempt to verify this achievement.

Previous Records

The book I bought was by a Kiwi called Thomas Pavitte who, a few years ago, set a dot-to-dot world record of his own. He created the Mona Lisa in 6,239 dots and completed it in about 9 hours. Not too long after, he started publishing 1000 dot-to-dot books full time. Mr Pavitte mentions his record in nice big letters on the first page of his books, which I took as a challenge. I thought it must be possible to create dot-to-dots without placing dots by hand in something like adobe illustrator for hours on end, so I set out to make a program that could convert any image into a dot-to-dot puzzle.

I later discovered that an American named Michael Weber had spent a month making a 10,000 dot puzzle of his local lock, so I realised I would have to make something quite large to be the world’s largest.

At this point it is worth noting that it may seem like a waste of time to sit connecting thousands and thousands of dots for no particular reason, but I found it addictive to slowly see the the image come together and race myself to the finish. It’s a kind of puzzle that isn’t too draining, doesn’t take too long to complete and in the end you get a pretty picture to show off to all your friends (mostly my ever forgiving flatmates in this case).

How the software works

The code is written in python, chosen for fast prototyping and a wide range of available image libraries. It is open source and can be found on GitHub.

St Pauls Dot Conversion Steps

The dot-to-dot creation happens in 5 stages.

  1. Detect edges using canny edge detection (I used Open CV’s default canny implementation for this).
  2. “Follow” the edges to create traces, if a crossroad is reached, chose the direction most similar to the direction you came from. If a trace is too small to be considered significant, ignore it.
  3. “Follow” each trace you have now made. Start by placing a point (dot), then follow the trace pixel by pixel until the gradient of the line you are making exceeds a given threshold. This means that when the trace bends too much, you add a point and start making a line again from there.
  4. Now you have the lines that together will make up your image, but they are not connected. There can be thousands of lines at this point, so an optimal solution is not feasible as it is a kind of “travelling salesman problem” which means that even for only 100 lines you would have to do 10¹⁵⁵ calculations to find the best way of connecting them. There are around 10⁸⁰ atoms in the universe. Instead we take the best of 50 greedy solutions. For a greedy solution, we start at a random end of a line, follow the line to its other end and then pick the line ending that is closest to it until there are no lines left. I’ve found that this was more effective than other TSP algorithms such as simulated annealing, who’s random swap heuristic often led to long lines completely crossing the image.
  5. Clean the dot-to-dot. At this point in time, some dots might be too close to each other to be legible on paper, and some may be so far away that they are hard to find. We set an upper and lower threshold for the distance between 2 points and add/remove dots until all dots meet these requirements.
Some other output progressions

The world record sized dot-to-dot

“But does it scale?” Yes. Or at least well enough to make the largest one in the world. The idea was to make a map of Europe where there would be an image representing each country. The only way the software had to change for the WR Dot was to remove the max dot threshold and adjust the longest/smallest line constants. I also had to give it a very large image ~5000 x 5000 pixels. Each conversion of the image took around 25 minutes, and I had to run it 5–6 times to get it right, but got there in the end!

The WR Dot ended up consisting of 12356 dots and its printed size is 2 x 2.2m. I started filling it in at 8am on Sunday the 19th of March and with the help of Nathalia, Hugh, Matt, Anne, Svante, Rob, Peter, Vince, Jenny and Will it was finished after around 9 hours.

For anyone who would like to verify the amount of dots in the image, the pdf that was printed can be found here (dot 1 is in Sicily and dot 12356 is in Iceland).

The completed WR Dot

How “official” the attempt is

This is an unofficial world record. I tried applying to the Guinness World Records gang to see if we could do the attempt officially, but the restrictions they had on the attempt were quite severe. For example they did not allow placing the dots automatically using software, and required that someone count all the dots (which would take longer and be significantly harder than filling the dot-to-dot in). So this is an unofficial record, mostly done for fun.

Guinness World Record Requirements

The Future

I hope to make this software more easily accessible in future, by putting it on some kind of platform where anyone can make and print their own dot-to-dot puzzles. Some improvements should be made to the software, particularly to make the trace creation (step 2) more effective, which is the current bottleneck.

A big thank you to everyone who put up with my endless rants about dots and to everyone who came and helped complete the image.

Input Image for WR Dot

--

--