Mandelbrot
I finally read about the Mandelbrot set and tried implementing it.
The computation is surprisingly simple for how complex the result is.
I read the algorithm for computing the Mset in a book. It caused me some trouble, because it didn’t clarify two important details:

How many iterations to run the procedure for. I was doing 10. Turns out something like 50 or 100 is more appropriate.

That coloring each pixel based on which iteration its length exceeds the threshold—not just a binary indicator of whether it ever exceeds the threshold—produces a much better image. This fading implies the areas where the set continues in further detail. It’s kind of like antialiasing, I think.
It was fun making an ultra rudimentary complex numbers implementation.
Random thought on this: math feels very personal, and I think it should be that way. I’m not “good” at math in the sense of people who majored in math or did mathy topics in their PhDs. But for me, enjoying math is really about working at your own pace and comfort level. Of course, you still need to push yourself into discomfort if you want to grow, but it’s like, you want to be soaking in it and feeling good with your understanding. It’s a damn shame that so many people grow up not connecting with math, and I think most people don’t end up really knowing what math is about (since they just do computations in school).
I first drew rectangles for each sampled point (pixel), which was extremely slow (~2.6s). I checked out Daniel Shiffman’s implementation video, where he uses loadPixels()
/ updatePixels()
. I switched to this and it is like 8–9 times faster (~0.3s).
Next, implementation with a shader, fast enough to run in real time. Click to zoom in, rightclick to zoom out.
garage entry metadata
started  21 Mar 2022 
disclaimer  This is an entry in the garage. It may change or disappear at any point. 