Tiny advice for "I want to make pen plotter art, help!"

On a near-weekly basis, I'll get a message on Instagram saying something along the lines of...

Hey there, I love the work you're doing, I'm thinking about getting a pen plotter, I know a little Processing, what do I need to know to make things like you?"

...and I love getting that message because it means more people want to join the world of pen plotting. And the more people doing pen plotting, the more lovely pen plots I'll get to see.

Pen plot

💙 💙 💙

Anyway, this is roughly what I write back, only expanding just a touch (a lot) because I don't have to use my thumbs to type.

It goes like this.

"Hey, thanks for dropping me a line, pen plotting is fun, and you already know a bit of Processing, so that's cool...

In essence, pen plotters know three commands; move to, pen up and pen down.

That's it, you draw lines, lots of lines, from that you build everything. For example, to draw a square you'd "pen up", and then "move to" the first corner, then you "pen down" and "move to" each other corner in turn, then back to the first corner again. Finally one last "pen up", and you're done.

Second, pen plotters love SVG files. So you need two things, some code that makes lines, and shoves them all into an SVG file, and a pen plotter to send that SVG file to.

I don't use Processing; I use JavaScript, I advise you don't use JavaScript, use Processing. It's easier to find help for the things you'll want to do in Processing.

Go and have a look at the following page: https://processing.org/reference/libraries/svg/index.html I have no idea the size of the SVG it outputs, so you'll need to find that out when you try to send it to the pen plotter. Once you've worked it out then you know.

These are the building blocks I use to make, well everything.

🧱 🧱 🧱

  1. Loops, for and while
  2. Random numbers
  3. Perlin noise
  4. Sine waves
  5. Polar coordinate system
  6. Translation
  7. Rotation
  8. Scaling

🧱 🧱 🧱

Literally, all of my pen plots are made up of combining some of the things above. If you properly learn about all those ☝️ then you're set. One of my favourite pen plots is made up of nothing more than lots of parallel lines: https://www.instagram.com/p/CBQSiPjHM_X/ one of the simplest things possible, that's like, one loop.

📷 📸 📷

Lines are made up of points.

Points are defined by an x and y coordinate.

Use whatever takes your fancy from the list of things above to do stuff to that x and y point. Plug the x and/or y value into Noise() and then move either the x or y value by the results. Stick either the x or y value into the sin() function then move it up or down.

Divide the x and y values by big numbers before you plug them into the noise() or sin() function, multiply the results by equally big numbers when you get 'em.

Make a loop, put the counter thingy into the sin() function and then rotate the point around another point by the result.

Stick it all in a loop and do it over and over again.

🕑 🕕 🕙 🕑 🕕 🕙 🕑 🕕 🕙

Learn about percentages. Random numbers and noise() will give you values between 0 and 1, like 0.21 or 0.875, or 0.45. If you have something that's 1920 units wide, multiply it by the number you got that was between 0 and 1.

% % %

  • 1920 * 0.210 = 403
  • 1920 * 0.875 = 1680
  • 1920 * 0.45 = 864
  • 1920 * 0 = 0
  • 1920 * 1 = 1920

Percentages will solve all your problems.

% % %

sin() will give you a value between -1 and 1, sometimes that's good, sometimes it's not. Add 1 to the result, and you'll get a value between 0 and 2, then divide it by 2, and you'll have converted it to a number between 0 and 1.

Numbers between 0 and 1 are your friend, learn to love them.

If you totally take the time to learn about about the eight building blocks listed above, then you'll know as much as I do about making SVG files to send to pen plotters.

🖋 🤖 ✒️ 🤖 🖋 🤖 ✒️ 🤖 🖋 🤖 ✒️ 🤖 🖋 🤖 ✒️

Afterword

I use an AxiDraw pen plotter, A3 version. I bought it from RobotShop.com because they ship almost everywhere. I'd suggest picking up a couple of spare servos at the same time, and shove 'em in a drawer. They're kinda like the ink of printers, but a lot cheaper, they last a long time but you'll be glad to have one on hand when the first one dies.

I can't speak to other plotters, there's a review of a cheap one here.

There's some tutorials over on generativehut.com/tutorials, check out the Tools and Blog section to.

You should also pop over to drawingbots.net, select the "COMMUNITY" dropdown from the menu at the top and pick Discord Channel, to join a community of other pen plotter people who are super helpful.

Finally, I have a whole bunch of online SVG generating tools online over here: revdancatt.com/penplotter (all written in JavaScript)

🐈 🐈 🐈