(New?) Variations On The Buddhabrot

  • 5 Replies

0 Members and 1 Guest are viewing this topic.

Offline AlexH

  • *
  • Fractal Fanatic
  • ***
  • Posts: 35
« on: September 08, 2018, 10:54:32 PM »
I've had a number of ideas over the past couple months regarding variations on the Buddhabrot.
I don't have a ton of time today to go over the finer points of  exactly how each of these work, but they all relate to a common concept: What does it look like as each complex point moves linearly between each of its iterations?


If this is in fact a new idea I kind've like the term "Projectilebrot", with each of my current examples being under the sub-category of "Linear Projectilebrot".
Other ideas:
"Particlebrot" (I really like this one, but feel like it should be reserved for something else.)
"Trajectorybrot" (Unweildy.)
"Laserbrot" (Only works if the movement is linear, and although all of my implementations are linear, they don't have to be.)

For the time being, all implementations that involve drawing lines will be called "Laserbrots", and animations showing step-by-step movement are called "Particlebrots".


Particlebrot (animation-exclusive): Move all points ([frame #]/[#of frames])% of the way to their destination each frame.
I have evidence that this isn't an entirely original idea. I recently found someone who had done something like this before, but they used non-linear movement.

Laserbrot: For each iteration, imagine drawing a line between \( Z_{n} \) and \( Z_n+1 \). For each bucket the line passes through, calculate the distance the line travels through that particular bucket and add that distance to that bucket.

Riemann Laserbrot: Construct a sphere from voxels. The voxels will act as our buckets. Convert your \( Z_{n} \) and \( Z_n+1 \) coordinates to coordinates on the Riemann sphere. Imagine drawing a line between each point DIRECTLY THROUGH the sphere. For each voxel-bucket the line passes through, calculate the distance the line travels through that particular voxel-bucket and add that distance to that voxel-bucket.


Note All of my implementations are still a little buggy. Also, I only very recently added the ability for my program to distinguish between Normal and Anti-Buddhabrots, so most of these examples are Normal+Anti.

(Attached) Laserbrot (Normal + Anti) - Kinda looks like Buddha's rib cage.

Particlebrot (Normal + Anti) - This is one I created early on. I have since made a change to the algorithm that fades in the first iteration and fades out the last one, which makes the animation loop smoother. There's still a bug with it, so it doesn't work as intended all the time.

Riemann Anti-Laserbrot - I just completed this last night. This animation cycles through the XY, ZY, and ZX cross-sections of the sphere. The next thing I want to do is render the whole thing in 3D (See Future Ideas).

Other Examples:

Particlebrot (Not a Mandelbrot, will add equation later.) (Normal + Anti) - This is my favorite Particlebrot.

Laserbrot Animation (Not a Mandelbrot, will add equation later.) (Normal + Anti) - Cycling through a series of Julias.

Future ideas not yet implemented:

The Riemann Laserbrot is incomplete. I want to render it in 3D, but on top of that I have a few ideas regarding some rendering effects.
1. Normal render.
2. Value-based opacity. All voxels are white, but their opacity is based on their value.
3. Perspective-based brightness. Recompute the brightness of each pixel based on the angle you're looking at the sphere, adding the obscured voxels values to the values of the voxels in front of them.

I'd also like to do the same thing with plain-old Buddhabrots on the Riemann Sphere. Also, I'd like to make an iteration-layer based version of the Buddhabrot on the Riemann Sphere, just like I've done before with fractals:

I'd also like to explore more non-linear movements. After all, \( {Z_{n}}^2+C \) is a rotation and then a translation (or vice-versa). Showing how those two ideas work together could also result in something cool.

Final note:

I wrote this all in a 2.5-hour rush so I know I missed something or could have explained something better (Like why would fading in the first and fading out the last iteration on a Particlebrot make an animation loop more smoothly?). I also want to add some more examples that I either don't have rendered or don't have good renders of.
« Last Edit: September 09, 2018, 07:17:13 AM by AlexH »

Offline claude

  • *
  • 3c
  • ***
  • Posts: 895
    • mathr.co.uk
« Reply #1 on: September 18, 2018, 12:26:38 PM »
Particlebrot (Normal + Anti)
Great animation idea :)  You can really see the rotation of the bulbs around rational parabolic points.

For the Anti (which is my preferred variant), you could colour based on period of the limit cycle, which might bring out more structure to the eye.  I have some code for such an Anti-Buddhabrot here: https://mathr.co.uk/blog/2013-12-30_ultimate_anti-buddhabrot.html (the "ultimate" is just because it finds the limit cycle, instead of plotting all iterates, not because it's the best way of doing it).  My code only plots periodic interior points, though - I'm not sure if the other boundary points (Misiurewicz, Siegel, etc) would contribute anything visible, it depends on whether the boundary of the Mandelbrot set (which has dimension 2) has a positive area, I think that question is still an open research problem...

It could also be fun to interpolate the periodic cycle using cubic splines instead of linear segments, which should give a less steppy appearance.  I wonder what the most mathematically meaningful way of doing it would be.  Maybe:
\[ w_k(t) = z_k^{1 + t} + t c \]
but I think you'd want to pick a continuous branch for the power to minimize the total arc length of \( w_k(t), t \in [0,1) \), and I'm not sure how to go about that - perhaps for power 2 it's enough to consider t = 1/2 and pick the w that is nearest the straight line midpoint (z + z^2+c)/2 ?

Offline AlexH

  • *
  • Fractal Fanatic
  • ***
  • Posts: 35
« Reply #2 on: September 20, 2018, 03:51:25 AM »
Wait, you're the person who created that image? I found your article through google last year while I was researching how Buddhabrots were colored. Not a joke: that's my absolute favorite Anti-Buddhabrot. So actually, yeah, I think "Ultimate" is pretty appropriate. XD
I never noticed the source code at the bottom of the page. I'll definitely look into it.

Embarrassingly, I don't know that much about the properties of the Mandelbrot Set. I tend to stray away from Mandelbrot-related stuff except when I'm testing new ideas out. I don't hate the Mandelbrot Set or anything, it's just that my favorite part of generating fractals is mixing different equations and escape rules together and seeing what pops out.

Anyway, the point is that you threw like, 6 vocabulary terms at me and I had no idea what they meant. XD
I'm thrilled to have an excuse to finally learn some of the stuff that I'd been putting off learning for so long.

I understand your equation though. I'll give it a shot and post the results soon.

If there is a mathematically-significant way of moving a point across the plane, then I would guess that there would be movement rules for the building blocks of mathematics that would remain the same even if you rewrote the equation and used identities. For instance, the movement for \( ln({Z_{n}}^{2}) \) would be the same as the movement for \( ln(Z_{n}) + ln(Z_{n}) \). Intuitively I think that addition is probably linear movement, but intuition isn't always reality.

Other stuff:

Here's a higher-quality Normal and Anti Particlebrot:

Here's a Normal Julia Set Particlebrot for [latex=inline]C=0+0*i[/inline]:

Here's one thing I forgot to show off last time. If you gradually change the C value of a Julia Set Particlebrot every frame, as long as you return C to its initial value at the end of the animation you can create a loop. This is probably obvious for some but I thought it was worth sharing.

Offline AlexH

  • *
  • Fractal Fanatic
  • ***
  • Posts: 35
« Reply #3 on: September 22, 2018, 10:39:06 PM »
Status report:
This morning I attempted to implement the new movement suggested by Claude and was met with a bug:

Apparently there's a major bug in my generator where the Complex.pow(Complex input) function does not return the correct output. This is a pretty horrifying revelation for me because some of my favorite fractals I've made (and at least one or two I've posted to the gallery) use that function.

I attempted to fix it, but was met with further problems. I did manage to make one that was pretty cool, but it was not what Claude suggested.

Tomorrow I will attempt again.

Offline claude

  • *
  • 3c
  • ***
  • Posts: 895
    • mathr.co.uk
« Reply #4 on: September 23, 2018, 02:31:30 PM »
I attempted to fix it

Keep a backup of the old version to be able to reproduce old images!

Offline AlexH

  • *
  • Fractal Fanatic
  • ***
  • Posts: 35
« Reply #5 on: September 24, 2018, 03:48:54 AM »
Keep a backup of the old version to be able to reproduce old images!
Haha, absolutely.
There was something wrong with my arg function, which is used by my pow function.

Here's the results:

This is the same movement that can be seen in the youtube video by Ahknaton I linked to in my first post.

Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer

Started by Sharkigator on Other

15 Replies
Last post December 23, 2017, 08:00:35 PM
by Fraktalist
All of Kosmic-Stardust's ABS variations

Started by greentexas on ChaosPro

4 Replies
Last post October 30, 2018, 04:23:07 AM
by gerrit
JosLeys Kleinian Group Variations

Started by trafassel on Image Threads

2 Replies
Last post September 16, 2018, 08:57:55 AM
by pauldelbrot
A few Mandelbrot variations I discovered (Stay tuned for more!)

Started by greentexas on Share a fractal

13 Replies
Last post November 02, 2018, 11:15:12 AM
by v

Started by FractalStefan on Image Threads

3 Replies
Last post February 26, 2018, 11:28:21 PM
by FractalStefan