Cellular Coloring of Mandelbrot insides

  • 54 Replies
  • 1836 Views

0 Members and 1 Guest are viewing this topic.

Offline kosalos

  • *
  • Fractal Friar
  • *
  • Posts: 128
« Reply #30 on: January 17, 2020, 04:32:58 AM »
I would also like to see the code.
So much to learn!
In the meantime, I tried a slightly altered orbit trap calculation.
Pass in a fixed position  float3(-10 ... 10, -10 ... 10,  -10 ... 10)

here's the Apollonian using the fixed 'trap' :

    for(int i=0; i< control.maxSteps; ++i) {
        pos = -1.0 + 2.0 * fract(0.5 * pos + 0.5);
        k = t / dot(pos,pos);
        pos *= k * control.foam;
        scale *= k * control.foam;
       
        ot = pos - trap;
        orbitTrap = min(orbitTrap, float4(abs(ot), dot(ot,ot)));     <<< this

    // orbitTrap = min(orbitTrap, float4(abs(pos), dot(pos,pos))); <<< instead of this
    }


changing the trap position has a great effect on the orbit trap coloring.

Ignoring my awful coloring in the attached image, look at the detail added by the 'trap' addition.
1st image:  no orbit trapping
2nd image: new trap method



Offline gerrit

  • *
  • 3f
  • ******
  • Posts: 2194
« Reply #31 on: January 17, 2020, 06:07:22 AM »
Another two with this coloring; (2,2) rational function with parameters found by trial and error (using parameter animation in UF with 2D control surface).
Maybe once I understand this "matching" stuff Claude is doing it will become even prettier.
Can this "matching" be done visually with parameter animation?

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #32 on: January 18, 2020, 10:27:14 AM »
Random find of an interesting orbit trap position during an ongoing survey. The main disk of the main cardioid is being subdivided concentrically, so to speak.

TrapX: -0.504070, TrapY: 0.002556

Offline mrrudewords

  • *
  • Fractal Frogurt
  • ******
  • Posts: 443
  • Dat Mandel!
« Reply #33 on: January 18, 2020, 10:56:26 PM »
You can also get very different results by changing the shape of the orbit trap. These three are the same Julia but with Point, Ring and Cross shaped traps. Oh, and triangle average as a separate layer. The Bubble colouring is used with the blue palette and Halo with red.

I have posted a few more in my image thread: https://fractalforums.org/image-threads/25/experiments-with-colouring-and-layers/1231/315
Z = Z2 + C (obvs)

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #34 on: January 19, 2020, 01:35:57 AM »
By the way, kosalos, your application to 3D looks tantalizing!

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #35 on: January 20, 2020, 12:19:29 AM »
If you let the decIter variable count reductions of the 2nd closest distance, too, like so:

Code: [Select]
    // sort current distance into our "list" of closest and 2nd closest
    if (trap < min) {
      min2 = min;
      min = trap;
      mIter = iter;
      ++decIter;  // number of steps to reach minimum distance
    } else if (trap < min2) {
      min2 = trap;
      ++decIter;  // EXPERIMENTAL: also count secondary reductions
    }

then the insides can get really busy.

My intuition fails me as to what the additional boundary curves are connecting or separating. Basically, the inside regions just shatter into (too?) many little slivers, with each of the original cells being subdivided further.

Offline claude

  • *
  • 3f
  • ******
  • Posts: 1550
    • mathr.co.uk
« Reply #36 on: January 20, 2020, 01:42:53 PM »
You can generate a colour after every orbit trap "hit", then combine them all together, for ultimate business.

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #37 on: January 24, 2020, 07:32:13 PM »
At first I thought I wanted the insides to be more and more detailed. But more experiments didn't yield anything that seemed to be "real"; i.e. nothing that tickled my mind in the specific way to make me believe there might be some mathematical structure to be discovered.

I rendered further surveys, and some of them looked nice. But that, too, did not seem to be going anywhere interesting.

Now I am systematically mapping the influence of the orbit trap position on the resulting appearance. Or at least, somewhat systematically. Because there are still too many arbitrary "design parameters". Nonetheless, structures did emerge from the fog, so to speak.

In the following image, for each single pixel, four entire Mandelbrot images have been computed. The pixel position determines an orbit trap position, and the four Mandelbrots are rendered with a minimally moved orbit trap position. Essentially, I am trying to compute the rate of change (of the corresponding Mandelbrot "cells") around "all" possible orbit trap positions.

Dark pixels mean slow change, bright pixels mean fast change, as the orbit trap position moves around that area.

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #38 on: January 24, 2020, 07:36:22 PM »
The orbit trap atlas depends heavily on the chosen parameters for the internally computed Mandelbrot images. For example here is another numerical experiment where the internally computed images have more emphasis on edges, while the above variant was comparably much smoother.

(Computing such maps is very slow, so it is unlikely that I can present many of them in high quality. But some of the low quality drafts have shown the most unusual discretization artifacts I have ever seen.)

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #39 on: January 25, 2020, 12:29:33 PM »
Hmm. Those atlases might just be inefficiently and incorrectly rendered wrong buddhabrots.

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #40 on: January 30, 2020, 02:00:16 AM »
I had no success finding anything new and interesting down there. So let's return to the beginning, but less flamboyant, less gaudy, less contrasting. Allow part of the structures to fall into obscurity when the spotlight has wandered away.

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #41 on: January 30, 2020, 09:58:11 AM »

Offline mclarekin

  • *
  • Fractal Freak
  • **
  • Posts: 771
« Reply #42 on: January 30, 2020, 11:54:58 PM »
really nice and relaxing O0

Offline C0ryMcG

  • *
  • Uploader
  • *
  • Posts: 215
« Reply #43 on: February 14, 2020, 04:29:22 AM »
This is exactly the sort of content I was hoping to find by coming to this site! I love this approach for coloring, for a few reasons... firstly, it looks great. And secondly, it can teach me new things about some very familiar shapes...

I set this idea up as a coloring method in my own fractal toy and came up with some pretty good results. I made the cell boundaries black instead of white, but it's the same idea. I did not find a very good way to get highlights... Any hints available for how to calculate those?

I'll attach some pictures. First one will be a pretty standard Julia (not very deep) with this coloring method.
And the next one will show the Burning Ship fractal, because I love how it gives some surprisingly structured detail to a section of this fractal that I had always assumed was boring! (The bottom right corner of the shape)

And finally I'll post a zoomed-in view of that bottom corner, so we can all enjoy the chaos that resulted.

Edit: Trying again to get the images to show up properly

Offline hobold

  • *
  • Fractal Flamingo
  • ****
  • Posts: 305
« Reply #44 on: February 14, 2020, 07:58:36 PM »
I love this approach for coloring, for a few reasons... firstly, it looks great. And secondly, it can teach me new things about some very familiar shapes...
The new perspective on old areas is exactly what I thought, too. It seemed so striking to me that I came running here and breathlessly reported it :). And fortunately, some of you were prompted to go on their own explorations of this new parameter plane.
Quote
I made the cell boundaries black instead of white, but it's the same idea. I did not find a very good way to get highlights... Any hints available for how to calculate those?
In hindsight, I should not have scattered code fragments across my three first postings in this thread. In post #1 is the "augmented" core iteration loop. In post #2 there is the variable "halo", and in #3 is "bounds"; both are computed after the final iteration.

"Halo" is 1.0 at the highlight position, and fades towards zero further away. "Bounds" is 1.0 at the cell boundary, and fades towards zero further inside. I do some remapping of these two raw values, e.g. to shrink the highlight's size, or the boundary thickness; this may require clamping to stay within the range [0.0 .. 1.0]. The re-scaled values can modulate the brightness of a cell's base color, or they can blend from the base color to, say, a white highlight; or to a desired boundary color, respectively.