lkmitch
Fractal Lover
Posts: 238
|
|
« on: November 19, 2009, 07:04:37 PM » |
|
Ok, I freely admit that I've only skimmed the original thread, and may have missed parts or misunderstood. So now that we have a fresh, sparkly new board and thread, let me ask here:
What is the 3D Mandelbulb formula, in algebra (i.e., not code or implementation specific)? And why, in words, is this THE 3D analog to the standard 2D Mandelbrot set?
Thanks, and I promise to pay better attention, Kerry
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #1 on: November 19, 2009, 07:40:58 PM » |
|
Hi Kerry, first off I don't think Daniel White (twinbee) or Paul Nylander (bugman) have actually claimed it to be *the* 3D analog of the 2D Mandelbrot, it's just that Daniels investigations (see beginning of *the* thread) which produced something like what we're looking for in the case of z^2+c produced the startling results at higher "power"/degree as discovered by Paul. As to what is it, well see Paul's post of his latest suggestion for a "correct" version of the formula: http://www.fractalforums.com/3d-fractal-generation/true-3d-mandlebrot-type-fractal/msg8680/#msg8680If that's not sufficiently algebraic I'm not sure exactly what you're after, here's the same thing described in a mix of complex/real form as could be coded in UF or other software that handles complex, though this is less optimum even than the trig version in some cases (depending how the compiler handles ^@mpwr): ztemp = ((r=cabs(zri)) + flip(zj))^@mpwr zri = real(ztemp)*(zri/r)^@mpwr + cri zj = imag(ztemp) + cj
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #2 on: November 19, 2009, 09:26:28 PM » |
|
Kerry,
A UF 5 version is in reb.ulb (need the latest update to see it) If you do a search for spower at the top of the file the search will take you right to it.
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #3 on: November 19, 2009, 10:01:50 PM » |
|
Kerry,
Here is an example of z^5 + c rendered in Ultrafractal.
|
|
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #4 on: November 19, 2009, 11:02:20 PM » |
|
@ron, where (the heck ) do i increase the bulb iteration depth ?!
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
cKleinhuis
|
|
« Reply #5 on: November 19, 2009, 11:43:53 PM » |
|
@ron, additionally, i was browsing through your methods, with the goal of implementing an "alternated bulb" , i see you are using the base class "Quat" as formula base class, i have some questions about it
for the alternate method i would like to know when a formula is first used in an iteration loop ( for reseting a counter ), or the current iteration depth value ...
have you ever thought about using the quat class for more simple functions, like a generic add or mul? , i wanted to start, but stopped because i have not the right math book at my fingertips for reference of derivative functions ... but i believe it could be done so that it would work in many cases ...
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
fractalrebel
|
|
« Reply #6 on: November 20, 2009, 04:48:58 AM » |
|
@ron, additionally, i was browsing through your methods, with the goal of implementing an "alternated bulb" , i see you are using the base class "Quat" as formula base class, i have some questions about it
for the alternate method i would like to know when a formula is first used in an iteration loop ( for reseting a counter ), or the current iteration depth value ...
have you ever thought about using the quat class for more simple functions, like a generic add or mul? , i wanted to start, but stopped because i have not the right math book at my fingertips for reference of derivative functions ... but i believe it could be done so that it would work in many cases ...
The Quat class is called such because it was originally for quaternion plugins, which was almost immediately broadened to include hypercomplex, juliabrots, and most recently the twinbee formula. Don't let the name fool you. Its really a wrapper to deal with 3D/4D objects and puts no conditions on the mathematics other than representing a 3D/4D number as a vector. The wrapper has built in functions for conversion between the vector representation and complex numbers. The actual math is carried out in other classes. The nested loops you are looking at have a counter reset. The inner loop is the actual iterations loop and is the iteration depth. The outer loop is for stepping in towards the fractal surface. I hope this helps and makes some sense.
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #7 on: November 20, 2009, 04:54:09 AM » |
|
There is a class in reb.ulb called QH which holds a large collection of static functions for quaternion and hypercomplex operations, such as multiply, power, exponential, log, etc. I recently added a new class called MD which has the static functions for power and multiply for the twinbee method and for Dave Makin's 4D number approach.
|
|
|
Logged
|
|
|
|
s31415
|
|
« Reply #8 on: November 20, 2009, 05:02:01 AM » |
|
To Kerry: From what I understood (someone correct me if I'm wrong), you switch to spherical coordinates, square the radius and double the two angles (without caring if you get out of the usual range for theta), and switch back to cartesian coordinates. Then you perform a parity transformation. See this post: http://www.fractalforums.com/3d-fractal-generation/true-3d-mandlebrot-type-fractal/msg8726/#msg8726I could get an answer about how crucial the parity transformation is. Did any body tried to drop it? Note that Jos Leys answered to my second question in the post above, look a little bit further in the thread. Best, Sam
|
|
|
Logged
|
|
|
|
s31415
|
|
« Reply #9 on: November 20, 2009, 05:02:56 AM » |
|
I could get...
I meant "I couldn't..."
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #10 on: November 20, 2009, 05:13:06 AM » |
|
To Kerry: From what I understood (someone correct me if I'm wrong), you switch to spherical coordinates, square the radius and double the two angles (without caring if you get out of the usual range for theta), and switch back to cartesian coordinates. Then you perform a parity transformation. See this post: http://www.fractalforums.com/3d-fractal-generation/true-3d-mandlebrot-type-fractal/msg8726/#msg8726I could get an answer about how crucial the parity transformation is. Did any body tried to drop it? Note that Jos Leys answered to my second question in the post above, look a little bit further in the thread. Best, Sam Not quite (at least with my method), but close. For example, if I want the z^8 + c mandelbulb, The radius is taken to the 8th power and the two angles are multiplied by 8 before conversion back to cartesian coordinates.
|
|
|
Logged
|
|
|
|
s31415
|
|
« Reply #11 on: November 20, 2009, 04:00:16 PM » |
|
Not quite (at least with my method), but close. For example, if I want the z^8 + c mandelbulb, The radius is taken to the 8th power and the two angles are multiplied by 8 before conversion back to cartesian coordinates.
Of course, my explanation was only to "square" a vector. I also forgot to mention that the two angles are the usual azimut running from 0 to 2pi and the elevation, running from -pi/2 to pi/2 and equal to zero at the equator.
But this is interesting in the case of the power 8, you don't use any parity transformation?
Sam
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #12 on: November 20, 2009, 07:32:09 PM » |
|
Not quite (at least with my method), but close. For example, if I want the z^8 + c mandelbulb, The radius is taken to the 8th power and the two angles are multiplied by 8 before conversion back to cartesian coordinates.
Of course, my explanation was only to "square" a vector. I also forgot to mention that the two angles are the usual azimut running from 0 to 2pi and the elevation, running from -pi/2 to pi/2 and equal to zero at the equator.
But this is interesting in the case of the power 8, you don't use any parity transformation?
Sam
Back in one of the earlier threads there is a statement that with the corrected twinbee formula, no parity transformation is needed.
|
|
|
Logged
|
|
|
|
fractalrebel
|
|
« Reply #13 on: November 20, 2009, 07:36:04 PM » |
|
Forgot to mention, I don't worry about effects of the elevation outside its normal range. I some of my early coding, I took that into account, and it didn't seem to have any effect on the image.
|
|
|
Logged
|
|
|
|
jehovajah
|
|
« Reply #14 on: November 23, 2009, 02:48:31 PM » |
|
Quote from: David Makin on November 03, 2009, 12:56:44 AM Hi all, you may remember I had a 3D based suggestion for a "true 3D" Mandy using the following:
* | r i j ----------------- r | r i j i | i -r -j j | j -j -r
Which gives a square of (x,y,z):
new x = x^2 - y^2 - z^2 new y = 2*x*y new z = 2*z*(x-y) ==========================================================================
I attempt to be explicit and thorough. * x iy jz -iy -jz ------------------------------------ x: x2 xiy xjz -xiy -xjz iy: iyx -y2 iyjz -iyiy -iyjz jz: jzx jziy -z2 -jziy -jzjz -iy: -iyx -iyiy -iyjz -y2 -iy(-jz) -jz: -jzx -jziy -jzjz -jz(-iy) -z2
The rules are: i2 = j2 = (-j)2 = (-i)2 = -1 -ii = -jj = +1
The manipulations are:
yix = yxi = xyi = xiy = ixy = iyx
zjx = zxj = xzj = xjz = jxz = jzx
-yix = -yxi = -xyi = -xiy = -ixy = -iyx
-zjx = -zxj = -xzj = -xjz = -jxz = -jzx
double operator manipulations non commutative :
ziyj =zyij = yzij = yizj = iyzj = [iyjz = -iy(-jz)] = ijyz = ijzy= izjy
+y2 = -y2i2 = -yiyi = -iy2i = [-iyiy = iy(-iy)] = -i2y2 = +y2 -ziyj = -zyij = -yzij = -iyzj = [-iyjz = iy(-jz)] = -ijyz = -ijzy = -izjy
yjzi = yzji = zyji = zjyi = jzyi = [jziy = -jz(-iy)] = jizy = jiyz = jyiz
-yjzi = -yzji = -zyji = -zjyi = -jzyi = [-jziy = jz(-iy)] = -jizy = -jiyz = -jyiz
+z2 = -z2j2 = -zjzj = -jz2j = [-jzjz = jz(-jz)] = -j2z2 = +z2
summary of main manipulations: yzij = ijyz (±jz)2 = -z2 yxi = iyx -yzij = -ijyz (±iy)2 = -y2 zxj = jzx yzji = jiyx -(iy)2 = +y2 -yxi = -iyx yzji = jiyz -(jz)2 = +z2 -zxj = -jzx -yzji = -jiyz
So (x + iy +jz)2 gives the following parts
x2 + (iy)2 + (jz)2
i(xy + yx)
j(xz + zx)
yz(ij + ji)
So for the function the last term which i am calling the handedness term is decided by the programmer.
For the geometrical space mandelbrot iteration
newx =x2 - y2 - z2
newy = 2xy
newz = 2xz
handedness term affects either x or y or z or 2 out of the 3 and has magnitude yz so: if ij / ji
newyz =y.z.
for the handedness term if ij = ji newyz = 2yz
I will suggest in another post how the handedness term might be applied but i think there is enough here for you to play with.
Report to moderator 81.108.14.116
May you delight in orgasms and know peace joy vigorous health and feelings of grat
|
|
« Last Edit: November 27, 2009, 06:15:07 AM by jehovajah, Reason: index change »
|
Logged
|
May a trochoid of ¥h¶h iteratively entrain your Logos Response transforming into iridescent fractals of orgasmic delight and joy, with kindness, peace and gratitude at all scales within your experience. I beg of you to enrich others as you have been enriched, in vorticose pulsations of extravagance!
|
|
|
|