Welcome to Fractal Forums

Fractal Math, Chaos Theory & Research => Mandelbrot & Julia Set => Topic started by: Hiato on March 28, 2013, 10:38:43 PM




Title: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Hiato on March 28, 2013, 10:38:43 PM
Hello all,

This is actually something I discovered (alert me if this is not the case and I will edit duly) a while ago and somehow overlooked. Recently though I figured that, if for no other reason, you guys might like it because it is pretty and something fairly novel to do with the M-Set.

One day I was wondering what the M-Set would look like on strange geometries. I went through the usual: polar coords projections, spheres and blah blah. Nothing seemed to really introduce new or interesting features until I considered the Mobius strip, or to be precise, the Mobius cylinder. The Mobius cylinder as I term it, is characterised by some length a on the real axis and is unbounded on the imaginary axis, and has the usual mobius transform at x=-a and x=a. That is, any point with |Re{z}|>a is wrapped around the cylinder horizontally until Re{z} in [-a,a) (or the complementary interval, or the closed one) and is vertically flipped (complex conjugate).

Code wise, we are looking at something akin to the following:
Code:
vec2 mobius(vec2 p) {
float dist=abs(p.x)-width;
if (p.x>width) {
p.x=-width+dist;
p.y*=-1;
}
else if (p.x<-width) {
p.x=width-dist;
p.y*=-1;
};
return p;
};

note here width=a and that this is technically the half-width. For some terminology, I call this the total Mobius Cylinder. A partial Mobius cylinder is thus where the wrapping is applied at only one boundary.

What does this have to do with the M-Set? Well, I found that if we adjust the iteration for points to z->MobiusWrap(z^2+c), that is, apply the coordinate transform after every iteration, beautiful new patterns emerge for all values of a ~ (0,2.7). Naturally, due to the fact that the only way for a point to escape is vertically (or in one horizontal direction and vertically), we must increase the bailout radius a tad to include all of the fractal. Values around six seem to work just fine. Most interestingly of all, despite what would seem like a non-conformal map, the fractal remains continuous.

Now for some pictures to pique some interest: http://imgur.com/a/2Onxl#0 (http://imgur.com/a/2Onxl#0)
The overall shape, for the lazy, with a=1 and total:

(http://i.imgur.com/FU4MniOh.jpg)

I would encourage all of you to play with this and discover the hidden beauties and let me know! (I have compiled a quick fragmentarium file to render the fractal, attached)  ;D

Hiato


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: cKleinhuis on March 28, 2013, 10:59:33 PM
we like :)

so, it has tricorns and minibrots!

the tricorn happens quite often in the hybrids

tricorn:
http://en.wikipedia.org/wiki/Tricorn_%28mathematics%29


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Levi on April 05, 2013, 02:20:01 AM
Beautiful! It's really interesting that the tricorns appear, as well as the addition of a shape on the positive real axis...which I'm pretty sure doesn't normally have any satellites on it.


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: kram1032 on April 05, 2013, 01:21:26 PM
(http://i.imgur.com/2pbOiHF.png)...
...
...
...
*snort*

Lol, does it actually suffer from too much gas in the stomach?

Anyway, it's really nice work :D
<<-----


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: panzerboy on April 20, 2013, 07:18:50 AM
Just created Fractal Extreme 64bit and 32bit plugins for this formula.

http://sourceforge.net/projects/mobiusmandel/files

Rendering a very pretty 'right' mobius zoom  at the moment.

I've simplified the formula a little
You don't need the 'dist' you either add or subtract double the width.

Ie.

Code:
uniform float width2 = width + width;

vec2 mobius(vec2 p) {

if (p.x>width) {
p.x-=width2;
p.y*=-1;
}
else if (p.x<-width) {
p.x+=width2;
p.y*=-1;
};
return p;
};

Not sure if that's legal fragmentarium code but you get the idea.


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: panzerboy on April 20, 2013, 04:57:04 PM
(http://farm9.staticflickr.com/8264/8664773757_948cfb4c90_c.jpg) (http://www.flickr.com/photos/panzerboy/8664773757/)
Mobius Mandelbrot (http://www.flickr.com/photos/panzerboy/8664773757/) by panzerboyNZ (http://www.flickr.com/people/panzerboy/), on Flickr

Total mobius
real +0.252,620,120,566,35
Imginary +0.000,072,012,958,67
Zooms 38 magnification 2.749e11


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Dinkydau on April 21, 2013, 04:22:59 AM
Nice
I'll check that out.


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: panzerboy on April 22, 2013, 04:40:40 AM
Here is that very pretty zoom of a right mobius mandelbrot.

http://www.youtube.com/watch?v=_-p6HgjrFD8


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: cKleinhuis on April 22, 2013, 08:12:46 AM
cool video, i wonder this is different to just a map-transform ?
because it is applied in every iteration.. and not just before the formula is iterated, i wonder if ultrafractal transformation mappings could be applied the same way?


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Levi on April 23, 2013, 02:48:25 AM
Beautiful! Why does yours look a little different than the OP, panzerboy? In any case that zoom video is amazing. Good job!


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: panzerboy on April 23, 2013, 04:33:19 AM
I think the difference is that my zoom is a right mobius like kram1032's post.
The total mobius wraps when the real value exceeds 1 or is less than -1.
The right version maps only when the real exceeds 1, the left only when it is less than -1.
See Hiato's link to imgur for examples of each.
This logic is in Hiato's attached fragmentarium code mandel_mobius.frag (open with wordpad on windows).
The right and left versions are a little quicker to calculate because there is one less step involved.
I'm rendering a total zoom now that will take a few days but is MUCH more detailed.


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Levi on April 24, 2013, 02:14:50 AM
Oh I see now! This is actually really interesting. The implied geometry of those one-sided wraps is very peculiar then--if you took the infinite plane and cut it in two at x=a, discarded one half, then rolled up the finite end a little bit- like a scroll that's partly rolled up, but the unrolled end goes on forever. Plus a bit of a twist in the sense that it's got that Mobius-inversion thing going on. I like!!

I'll post some pics if I find any cool variations!


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: panzerboy on April 25, 2013, 06:45:49 AM
So here's the Total Mobius zoom I mentioned a couple of days ago.

http://www.youtube.com/watch?v=TfKfojhwehs

I was pleasantly suprised at the different structures revealed.


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: cKleinhuis on April 25, 2013, 07:24:57 AM
So, we need to introduce a pre and post transform for generalization of this?
Like in the flames. . .


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Levi on May 10, 2013, 07:05:31 AM
I like the images that this can create but have just written a program to generate these and it brought some issues to mind.

1) Seeds are not wrapped around the Mobius cylinder. Of course, this arguably could be intentional as otherwise it would no longer be a map of the entire complex plane.
2) Initial value for z is not (0 + 0i) but rather the seed value, which was once again not wrapped around the cylinder. Using the seed as the initial z value is a Mandlebrot program optimization which can be done because the seed is normally a critical value - but in this case the seed is not a critical value.
3) You are not taking into account the possibility that a value may leave the acceptable interval [-a, a] by more than just 2a. If the result of a multiplication is a number with a real component of say, 10, you would simply be subtracting 2a resulting in a real component of 8 (if a=1) - which is still not in the acceptable interval. To fix this, you would have to just slightly modify the code:

Code:
uniform float width2 = width + width;

vec2 mobius(vec2 p) {
while (p.x>width) {
p.x-=width2;
p.y*=-1;
}
while (p.x<-width) {
p.x+=width2;
p.y*=-1;
};
return p;
};

(I'm not sure if while loops are legal fragmentarium code but I'm a C++ guy so that's how I would do it.)

Unfortunately, adding the above changes ruins the aesthetic appeal of the fractals, imo :( . These mobius cylinder things are a cool idea though and I will keep you posted if I find anything else.

A pic with change number 3 only:
(http://i.imgur.com/OQUQQPk.png)

EDIT: also, a proposed optimization: do away with the escape radius entirely.  Since a number isn't supposed to escape in the x direction, you simply need to check that (p.y < r && p.y > -r) to confirm that the value has not escaped yet. But note that this changes the coloring of the exterior of the set - kinda makes it look like a spiderweb for large r.
(http://i.imgur.com/6zHDq4G.png)


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: Levi on May 10, 2013, 08:18:16 AM
Here are some escape time pics of a power-2 Mandelbulb with the Mobius cylinder rules applied. Same configuration as in OP. I also tried inverting the 'supplementary' component (I don't know if the Mandelbulb's 3rd dimension has a name, I just call it supplementary) in addition to inverting the imaginary component, but it didn't change much.

Top view
(http://i.imgur.com/tvWzdaA.png)

Side view
(http://i.imgur.com/YrY3T0u.png)


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: PeaBrain on July 26, 2015, 07:30:27 PM
Hello, I'm new in the forum. Can you please explain me how I can redo the formula in UltraFractal5?


Title: Re: M-Set on a Partial/Total Mobius Cylinder looks neat
Post by: claude on July 28, 2015, 02:16:22 PM
Nice!  Wrapping in the other direction looks good too, just change the formula line
Code:
p=mobius(p);
to
Code:
p.yx=mobius(p.yx);
(I like this version with the width slider around 1.3).  Also, using the regular quadratic Mandelbrot set distance estimator seems to work well enough.  I tried some experiments by rotating instead of reflecting, basing the angle on the continuous X value, got a sort of sinusoidal strip with cusps opposite needles alternating up and down but it wasn't as interesting.

Not very mathematically satisfying, as Levi mentioned, but the pictures look cool.  A Möbius strip isn't orientable, and squaring complex numbers has to do with doubling orientation relative to a distinguished origin (which also isn't really possible to pick on a loop).  But, it might be worth trying some iterated function systems (using the chaos game method) on a Moebius cylinder: http://math.stackexchange.com/questions/1369588/is-this-a-valid-example-of-a-non-euclidean-sierpinski-attractor