Large Update to the Circle Pattern Generator

published: November 9, 2022 — last modified: October 23, 2025

Today I published a significant update to the circle pattern generator. Version 1.4.1 of the application is available for macOS and Windows for download. This new version adds various shapes, rotations, colours and a generator for circular or elliptical canvases.

Shapes

Circles are great, but different shapes may be better. The new version contains a small selection of shapes that can be used for the whole document or individually mixed.

The shape rendering in the SVG file is implemented using references.

<?xml version="1.0" encoding="utf-8"?>
<svg baseProfile="tiny" version="1.2" width="82mm" height="49mm" viewBox="0 0 82 49" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <g id="star1">
      <path d="M 0,-1 0.294,-0.404 0.951,-0.309 0.475,0.154 0.587,0.809 0,0.5 l -0.588,0.309 0.112,-0.654 -0.475,-0.463 0.657,-0.095 z" />
    </g>
  </defs>
  <rect x="0" y="0" width="82" height="49" fill="#e0e0e0" />
  <use xlink:href="#star1" transform="translate(35.4000 33.1000) scale(6) rotate(180.0000)" fill="#000000" />
  <use xlink:href="#star1" transform="translate(54.4000 19.3000) scale(5) rotate(180.0000)" fill="#000000" />
  ...
</svg>

So it is easy to replace a symbol in the definition tag, creating more complex documents, as I demonstrate below:

Rotation

Applying dynamic rotation based on item positions generates beautiful effects.

Colour

Colours can be generated dynamically by individually controlling hue, saturation, value and alpha based on the item position. This opens endless possibilities.

Round Canvas

Conclusion

I hope this update will help you create even more creative patterns. The examples I show here are just the tip of what’s possible with the generator.

If you have questions or feedback, feel free to comment below. Also, do not hesitate to contact me if you have feature requests or any feedback on the application.

Have a great day!

 

More Posts

My Personal Programming Language Recommendation Shift over Time

Posted on 2019-04-15— Recommendations

I've been developing software for over 20 years and share how my language preferences shifted—from assembler and C to Python, Swift, C++, Go and Rust. I outline use-cases and trade-offs in a personal, practical way; if you're deciding what to learn, please read the full post for detailed guidance.

Read this post

New Additions to the Storage Box System

Posted on 2023-10-17— 3D Printing

I've added a batch of new divider layouts across my storage box system — regular, flat, tall, triple and extended series — based on your feedback. I've updated documentation and uploads; downloads are available on the new platform. Please take a look and read the full post for details and download links.

Read this post

Use Enum with More Class!

Posted on 2019-07-29— C++, Improve your Code, Learn

I explain C++11 enum class: why it prevents name conflicts, how it compares to traditional enums and common workarounds, with practical Arduino-friendly examples. If you want clearer, safer enum usage in your interfaces, read the full post for code samples and simple best-practice guidance.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 4)

Posted on 2017-03-04— How and Why

I guide you through writing a near-final firmware for my cheap plant watering sensor, describing module structure, incremental development, and practical tests. I cover ADC sampling, oscillator checks, EEPROM settings and a prototype fix for the push-button. If you’re building a similar device, I invite you to read the full post.

Read this post

Printing a Giant Planter

Posted on 2024-08-26— 3D Printing, Projects

I walked through designing and 3D-printing a 70 cm PETG planter for my deep-rooted Ctenanthe. I share the tests, design choices, and practical fixes for warping, filament, split parts, and assembly. If you’re curious about large-scale prints or want the model files and tips, please read the full post.

Read this post

No Success with First Long Term Measurement

Posted on 2017-03-26— Projects

I ran a five-day long test of my plant watering sensor and the results were confusing, so I started a new, more insulated setup using an Adafruit Feather M0, an optocoupler, and pulse-length encoded signals with interrupts. If you’re interested in the hardware and code details, read the full write-up.

Read this post