Tglad
Fractal Molossus
Posts: 703
|
|
« on: February 01, 2010, 02:23:26 AM » |
|
This is a new fractal that is member of the fractals described in http://www.fractalforums.com/3d-fractal-generation/continuous-conformal-mandelbrots/msg12464/#newThe formula is simple: float scale = 2 ; fold box onto itself if (point.x > 1) point.x = 2 - point.x elseif (point.x < -1) point.x = -2 - point.x endif if (point.y > 1) point.y = 2 - point.y elseif (point.y < -1) point.y = -2 - point.y endif if (point.z > 1) point.z = 2 - point.z elseif (point.z < -1) point.z = -2 - point.z endif ; fold sphere onto itself float fixedRadius = 1 float minRadius = 0.5 float length = point.Magnitude() if (length < minRadius) point.MultiplyEquals(sqr(fixedRadius)/sqr(minRadius)) elseif length < fixedRadius point.MultiplyEquals(sqr(fixedRadius)/sqr(length)) endif point.MultiplyEquals(scale) point.AddEquals(C) Here are the first shots for scale = 3:
|
|
« Last Edit: February 02, 2010, 02:20:32 AM by Tglad »
|
Logged
|
|
|
|
Tglad
Fractal Molossus
Posts: 703
|
|
« Reply #1 on: February 01, 2010, 02:29:14 AM » |
|
Here's an opening, lit a little from below with scale = 3, and a shot using scale = 2.
|
|
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #2 on: February 01, 2010, 03:00:25 AM » |
|
cool one, nice ornaments!
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
msltoe
Iterator
Posts: 187
|
|
« Reply #3 on: February 01, 2010, 03:46:23 AM » |
|
Tglad: This looks like the inside of a cathedral. Mesmerizing! What is your termination condition? I'm using a norm < 32, and the extents are at least -6 to 6. Here's a slice through the middle. If only Escher had a 2 GHz laptop...
-mike
|
|
« Last Edit: February 01, 2010, 04:42:30 AM by msltoe, Reason: Added picture »
|
Logged
|
|
|
|
Tglad
Fractal Molossus
Posts: 703
|
|
« Reply #4 on: February 01, 2010, 05:36:53 AM » |
|
I'm terminating at > 1024. Need to zoom in to see the details, like attached pic for scale=3. Scale = 2 is more connected, see 2nd pic.
|
|
|
Logged
|
|
|
|
kram1032
|
|
« Reply #5 on: February 01, 2010, 04:34:01 PM » |
|
cube cathedral Really great Though I guess, you terminate at < 1024, rather than > 1024?
|
|
|
Logged
|
|
|
|
Dinkydau
|
|
« Reply #6 on: February 01, 2010, 06:22:55 PM » |
|
Very cool, I like it.
|
|
|
Logged
|
|
|
|
stigomaster
Guest
|
|
« Reply #7 on: February 01, 2010, 06:44:23 PM » |
|
Steampunk fractal goodness
|
|
|
Logged
|
|
|
|
bib
|
|
« Reply #8 on: February 01, 2010, 06:49:05 PM » |
|
I LOVE these pics. It's the convergence of fractal and decorative architecture. Anyone wrote the equivalent for Ultrafractal?
|
|
|
Logged
|
Between order and disorder reigns a delicious moment. (Paul Valéry)
|
|
|
Tglad
Fractal Molossus
Posts: 703
|
|
« Reply #9 on: February 02, 2010, 02:15:11 AM » |
|
I'm using Ultrafractal actually, to make it work, just use the code above in the inner loop (I just replace an existing mandelbulb formula where useDE is false, must be pasted in both places, for pos iteration and lighting iteration). Then add this line prior to the code point.Init(real(zri), imag(zri), zj) and these lines afterwards zri = point.x + flip(point.y) + cri zj = point.z + cj and not forgetting to initialise the point vector at the beginning of the file: Vector point = new Vector() Lastly, you need the vector class implemented, I put this in mmf.ulb class Vector(){ public: func Init(float xx, float yy, float zz) x = xx y = yy z = zz endfunc float func Dot(Vector other) return x*other.x + y*other.y + z*other.z endfunc func Divide(float f) x = x / f y = y / f z = z / f endfunc func Multiply(Vector a, float f) x = a.x * f y = a.y * f z = a.z * f endfunc func MultiplyEquals(float f) x = x * f y = y * f z = z * f endfunc func Normalise() float mag = sqrt(x*x + y * y + z*z) if mag>0 x = x / mag y = y / mag z = z / mag endif endfunc float func Magnitude() return sqrt(x*x + y*y + z*z) endfunc func Add(Vector a, Vector b) x = a.x + b.x y = a.y + b.y z = a.z + b.z endfunc func AddEquals(Vector a) x = x + a.x y = y + a.y z = z + a.z endfunc func Subtract(Vector a, Vector b) x = a.x - b.x y = a.y - b.y z = a.z - b.z endfunc func Cross(Vector a, Vector b) float _x = (a.y * b.z) - (a.z * b.y) float _y = (a.z * b.x) - (a.x * b.z) float _z = (a.x * b.y) - (a.y * b.x)
x = _x y = _y z = _z endfunc float x float y float z } I would add it to the MMFwip3D.ufm but I'm not sure if this is reserved just for mandelbulbs, don't know how to add an extra fractalType and am getting confused with the number of duplications of the inner loop algorithms in the latest version. Anyway, let me know if that doesn't work. I put some pics in the gallery section http://www.fractalforums.com/index.php?action=gallery;su=user;cat=111;u=853Do we dare go inside? -
|
|
« Last Edit: February 02, 2010, 02:22:29 AM by Tglad »
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #10 on: February 02, 2010, 03:56:12 AM » |
|
Nice.
|
|
|
Logged
|
|
|
|
twinbee
|
|
« Reply #11 on: February 02, 2010, 05:59:01 AM » |
|
This is really amazing - not seen anything really like it. Definitely suited to exploration - love to see some higher res pics!
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #12 on: February 02, 2010, 12:56:37 PM » |
|
I would add it to the MMFwip3D.ufm but I'm not sure if this is reserved just for mandelbulbs, don't know how to add an extra fractalType and am getting confused with the number of duplications of the inner loop algorithms in the latest version.
Just to clarify - the third use of the inner loop is in the "loop:" section of the UF code and it's used in the conventional UF manner such that just one iteration is performed per pass through the UF loop, you'll notice it's just the main iteration code without any DE stuff. It's there for the "UF colouring" options where the user can choose to colour the fractal using any class-based UF colouring. Basically the "solid" location is iterated as if it were a standard UF formula so that the orbit is passed to the colouring - of course we have to convert our 3D/4D value of z to a standard complex z value as that's all that gets passed to the colouring so what I've done is used methods such that on conversion the complex value of the z passed to the colour always has the same magnitude as the original 3D/4D value.
|
|
|
Logged
|
|
|
|
Jesse
Download Section
Fractal Schemer
Posts: 1013
|
|
« Reply #13 on: February 02, 2010, 08:51:45 PM » |
|
Somebody burned a hole in mine
|
|
|
Logged
|
|
|
|
bib
|
|
« Reply #14 on: February 02, 2010, 09:29:35 PM » |
|
Thanks Tglad for the code, but my competences are too limited to put the pieces of the puzzle together. After copy/pasting your pieces of code in an approximatively random order and adding a few lines to get rid of errors like "Variable has not been detected" (C), I'm stuck with a desperately black image Any chance you could post the entire code, or even better, an ultrafractal file (upr, ufr, ufm...) ?
|
|
|
Logged
|
Between order and disorder reigns a delicious moment. (Paul Valéry)
|
|
|
|