Vulcan #10

Page
April 11, 2026
Download

Saw function with `min` and rotation.

The generating code:

var z = pixel.point;
z *= new Complex(0.7,0.7);
var a = saw(z.Real);
var b = saw(z.Imaginary);
pixel.value = Math.Min(a,b);

Here the pixel is set to the minimum value; the previous post, Vulcan #9, used the maximum. Also, the complex numbers are back — notice the multiplication on the second line.`*=` is shorthand for “multiply the left side by the right side, then assign the result back to the left side.”

Recall that these are all repeating patterns. The multiplication serves to rotate the pattern, in this case by 45°.

Vulcan #11

Page
April 12, 2026
Download

See my brief description of paint‑by‑math in the previous post, in Vulcan #7.

As I was starting out with a blank canvas and a new program, I began mentally imagining different basic patterns that I could mix and combine in various ways. The patterns I had in mind were simple repeating forms that would uniformly fill a plane.

My brain can’t hold these mental pictures for long, so I started hand‑sketching them. Soon I decided the program could do a better job — plus it has features to store, categorize, recall, and modify the images I make.

After I made a few this way, similarities in the generating code became immediately obvious, along with a stream of “try me next” variations.

Today’s image uses the saw function with distance coloring

    pixel.value = Math.Sqrt(a*a + b*b);

Vulcan #12

Page
April 13, 2026
Download

I only partially answered the “Why” question a few posts back. I spent a good part of last year writing the Art program, and the first couple of months of this year developing a new website. Fortunately, I had a collection of work — Cylinder Art — from a separate Christmas project that I could reuse here.

When that dried up, I had a brand‑new program, a brand‑new website, but no new artwork in the queue. I certainly didn’t want to roll out the new site and then immediately let it go stale.

So I decided to just post whatever I’m working on. This isn’t the first time I’ve put together a behind‑the‑scenes or workshop‑style series. But the main reason is simply that I’ve started to find these very simple basic patterns interesting in their own right — especially when collected together.

If you’re following the code, today’s image uses both the saw() and frac() functions.

var z = pixel.point;
var a = frac(z.Real);
var b = saw(z.Imaginary);
pixel.value = Math.Max(a, b);

Vulcan #13

Page
April 14, 2026
Download

Why is this series called Vulcan? See Wikipedia and Altar Gods. He is often depicted with a hammer and a forge. Unlike his lazier counterparts who simply conjured things into existence, Vulcan actually built things the hard way. I’ve already set a precedent for mixing mythologies, and I chose Vulcan because it’s easier to read and say than Hephaestus.

This series is about building images from basic patterns — and also about building and using my new art program and the new website. I’m not sure where this series is headed, only that wherever it ends up, it will get there through construction and craft, not by conjuring a finished product.

Today’s piece is a picture of the frac/saw mix with distance coloring.

var z = pixel.point;
var a = saw(z.Real);
var b = frac(z.Imaginary);
pixel.value = Math.Sqrt(aa + bb);

Vulcan #14

Page
April 15, 2026
Download

I am running out of things to say. That is normal, 50% of my posts are only pictures. I am falling back into that mode now.

For those who are interested, and for images where the math is visible, I will include some brief code/formula math snippets.

$pixel.value = \sqrt{a}+\sqrt{b}$

The rest of the setup is similar to the previous posts.

Vulcan #15

Page
April 16, 2026
Download
The pixel value is a sum of scaled versions of two functions that were used in earlier posts. Specifically, $$pixel.value = 0.5*\sqrt{a^2+b^2} + 4*min(a,b)$$

Vulcan #16

Page
April 17, 2026
Download
Another mash-up of functions used for the pixel value $$pixel.value = \min(\sqrt{a^2+b^2},10*\min(a,b))$$

Vulcan #17

Page
April 18, 2026
Download
A small variation on the previous. $$pixel.value = \min(0.5*\sqrt{a^2+b^2},4*\min(a,b))$$

Vulcan #18

Page
April 19, 2026
Download

The next set of images introduces some symmetry around the diagonal axes in addition to the orthogonal axes.

The pattern in the earlier images could be repeated forever. A vast plane in which wherever you are standing, it looks exactly the same as anywhere else. These new ones, add a unique point at the center. There is an eight pointed star at the center. Other than some small distortion, everywhere else looks like everywhere else.

I am going to dial back on the math. But if you are curious, the additional symmetry is the result of $$z = z^2 /\lvert z \rvert$$ The squaring maps the diagonal axes to the vertical axis. Dividing by the absolute value keeps things the same size.

Vulcan #19

Page
April 20, 2026
Download
Feel free to ignore this, but for the curious and so I have at least one line of text: $$pixel.value = a + b$$

Vulcan #20

Page
April 21, 2026
Download
$$pixel.value = \sqrt{\sqrt{a}+b}$$

Vulcan #21

Page
April 22, 2026
Download

Math for the curious, not required to enjoy the post.

I use a rounded version of the saw function. $$ a = \lvert \sin(x) \rvert\\ b = \lvert \sin(y) \rvert\\ pixel.value = a + b $$

← Previous 20 Showing 10-21 of 21 Next 20 →