Title: first post, something fundamental about fractal generation Post by: puntopunto on March 14, 2012, 10:49:32 AM Hello Jesse, DarkBeam and all others
I am Dutch. I say that, so you don't have to be surprised if my English is not that perfect. It is also my first post, not only on this forum, but on any forum. So, if anything goes wrong, well, I will learn.... Four times in my life I was, several months, really excited about a computer program. The first program was Mathematica, for the ability to do very sophisticated symbolic math and for the arbitrarily precision. The second was Fractint, for the incredibly fast algorithms and for the possibility of writing your own formulas. The third was Great Stella and Stella4D. With this program you can generate (almost) all polyhedra. And now Mandelbulb3D. Why? The many very different images you can create. Many that are not that chaotic. The very sophisticated possibilities of coloring, lightning and shadowing. The unbelievable fast developments. That I found out by going a bit through the posts on this forum. Congratulations, Jesse and Darkbeam with these achievements and thanks for the hours of pleasure I had and I will have. There was one post, I think started by Kali, that reminds me of what I did, something like 15 years ago with Fractint. I wanted more "straightness". This was one of the transformations that suites me: T(x,y)=(ax2+by2+cxy,dx2+ey2+fxy) It is an example why I think trying to put everything in complex functions, to be more precise in the representation with a+bi, is not a good starting point for fractal generation. Then everything is focused on functions that are extensions of real valued functions. But most of the let's say "point valued" functions aren't such extensions. For most parameter values of the transformations above, there is no representation with z, z2, exp(z) etc. The above T is so obvious, someone else can have used it also. I did not look for fractals many a year, but a quick investigation on the net did not gave anything. What does the T from above give: Most parameter values gives a non empty set. There are all kinds of (deformed) circles. All kind of (deformed) rectangles. Line patterns. Mondrian like pictures, the Mandelbrot set, deformations of the Mandelbrot set, strange transitions from Mandelbrot set to "squareness", and more. Here are some old Fractint pictures I still had on my disk. (http://www.stitchstitch.info/m3d/Fractals-Fractint1.jpg) I did it a bit over again in an old copy of ultra Fractal. Funny, you can see the preoccupation with the (1,i) system. You cannot declare real variables in the programming language of Ultra Fractal. But here some quick results: (http://www.stitchstitch.info/m3d/maart%202012.jpg) Why all this on a Mandelbulb3D page? Because based on T above, this transformation might be interesting: T(x,y,z)=(f1(x,y,z), f2(x,y,z,f3(x,y,z)) met fi (x,y,z)=aix2+biy2+ciz2+dixy+eixz+giyz I know hardly anything about the3D transformations of the 3D fractal programs, but I guess that for many values of the parameters there are interesting "prisoner sets". I am gambling but I expect all possible deformations of objects that are topologically the same as a sphere, There seem to be an infinitely number of parameter sets with a prisoner set that has the Mandelbrot set as cross section with two of the three "Axes planes". There could be all kinds of "bar/plane constructions". And who knows what else. 18 parameters is much, but the integers between 3 and -3 seems sufficient. Writing the code, I expect would not be difficult. All functions are smooth, no discontinuities. But maybe it is leading nowhere. I think, DarkBeam it is up to you. If you give it a try, let me now. Title: Re: first post, something fundamental about fractal generation Post by: cKleinhuis on March 14, 2012, 11:20:35 AM hello and welcome to the forums, might take some minutes for darkbeam to implement it ;)
(you forgot a brace in the f2 function ;) ) look slike a hell lot of parameters, how would you define the classical mandelbrot using your definition ? Title: Re: first post, something fundamental about fractal generation Post by: hobold on March 14, 2012, 12:13:13 PM Interesting idea! By the way, the most general second order polynomial in two variables has even more parameters:
q(X,Y) := a*X^2 + b*Y^2 + c*XY + d*X + e*Y + f and is known under the name "quadric". Quadrics can be generalized to arbitrary dimensions, e.g.: Q(X,Y,Z) := a*X^2 + b*Y^2 + c*Z^2 + d*YZ + e*ZX + f*XY + g*X + h*Y + i*Z + j (where i is not the imaginary unit, for a change) The function values on any straight line through a quadric of arbitrary dimension form a parabola, i.e. a one dimensional polynomial of degree 2. That means if you iterate a point, the values of the orbit can stay small near the apex of the parabola, but they can also grow to infinity if they go far enough from the apex. Sounds like good conditions for Julia- and Mandelbrot-style fractals. Title: Re: first post, something fundamental about fractal generation Post by: puntopunto on March 14, 2012, 02:41:46 PM Quote from: cKleinhuis look slike a hell lot of parameters, how would you define the classical mandelbrot using your definition ? There is a lot of repetition in the formulas. I think that makes it a lot easier to program. I don't know exactly what you mean with "how would you define the classical Mandelbrot using your definition". The Mandelbrot set is well defined. If you want to know which parameter values generate the Mandelbrot set:(1,-1,0,0,0,2) in the order of the formula above. And thanks for you welcome and you seem to have a Dutch family name Title: Re: first post, something fundamental about fractal generation Post by: David Makin on March 14, 2012, 04:45:48 PM Hello Jesse, DarkBeam and all others <snip> You cannot declare real variables in the programming language of Ultra Fractal. But here some quick results: <snip> Er --- "float" !!!! Title: Re: first post, something fundamental about fractal generation Post by: DarkBeam on March 14, 2012, 05:19:21 PM For a possibly long time I wil not be able to implement anything
Title: Re: first post, something fundamental about fractal generation Post by: puntopunto on March 14, 2012, 05:37:26 PM [quote author David Makin]Er --- "float" !!!![/quote]
Thanks David. I didn't even know that you can declare anything in Ultra Fractal. What I ment was that if you use a variable without declaration, the program assumes it is complex. So I used x+flip(y) to go from two reals to an ordered pair. Title: Re: first post, something fundamental about fractal generation Post by: Jesse on March 14, 2012, 06:47:28 PM For a possibly long time I wil not be able to implement anything :'( Of course, we have some years trying all possibilities with the ones you gave us so far, thanks a thousand times and hope you find some time (maybe if i finish the more general formula handling, but that needs a lot of time too)! Title: Re: first post, something fundamental about fractal generation Post by: David Makin on March 14, 2012, 08:30:36 PM Thanks David. I didn't even know that you can declare anything in Ultra Fractal. What I ment was that if you use a variable without declaration, the program assumes it is complex. So I used x+flip(y) to go from two reals to an ordered pair. With the older formula types the language is similar to many forms of structured basic - except for the addition of the sections i.e. init:, loop: etc. so you can use quite a number of declared types - as always it's better to declare all even if they're complex (which is the default). Of course the predefined vars. e.g. #z, #pixel etc. require no declaration. Although *mostly* true I think it's best not to assume vars are initialised to zero or false unless done explicitly (including array entries). Even in the old-style formulas you can define 2 types of func - func as in a function parameter block (with the predefined option) and actual functions as in routines that can be called. Of course the new class-based formulas (the ulb files) are essentially C++ or Java style - one thing to note is that for simplicity and speed reasons you cannot have a derived class that has two parent classes e.g. if you define a class "vehicle" you can define derived classes such as "lorry" or "car" but if you have a separate class "container" you can't define a "container lorry" class as a child of both "lorry" and "container", the best option here would be to have a "container lorry" class as either derived from "container" or "lorry" but with a "lorry" or "container" respectively as one of its variables. Title: Re: first post, something fundamental about fractal generation Post by: David Makin on March 14, 2012, 08:49:23 PM Thanks David. I didn't even know that you can declare anything in Ultra Fractal. What I ment was that if you use a variable without declaration, the program assumes it is complex. So I used x+flip(y) to go from two reals to an ordered pair. If x and y are default then they're complex - so x+ flip(y) actually gets you real(x)+imag(y)+flip(imag(x)+real(y)). Edit: Unless you meant #x and #y ;) Title: Re: first post, something fundamental about fractal generation Post by: Syntopia on March 14, 2012, 10:58:18 PM Hi, and welcome Puntopunto (coincidentally, my Fiat Punto broke completely down today, but I guess I can not blame your name for that).
I've also tested several quadratic forms, and just want to make a quick comment. If you use your quadratic formula: T(x,y)=(ax2+by2+cxy,dx2+ey2+fxy) there seems to be a large parameter space, but nearly all combinations are non-conformal - which usually results in fractals which are stretched and loses details when zooming in. If you require conformality, you end up with the constraints: a=-b=½f and e=-d=½c (since the Jacobian of a conformal transformation must be a scalar times a rotation matrix). For the normal Mandelbrot a=1, and e=0. Now this suggest that you do have at least two free parameters, but in reality they will only rotate and scale the Mandelbrot! Of course, it is possible to make perfectly fine non-conformal fractals, so don't let conformality stop you :-) Wrt 3D there have been many attempts of finding a way to square a 3-component vector, and the quadratic forms have been quite well examined (I've also tested the most obvious of these). Title: Re: first post, something fundamental about fractal generation Post by: puntopunto on March 15, 2012, 09:35:57 AM [quote author DarkBeam]For a possibly long time I wil not be able to implement anything[/quote]
There is much more in life. I understand perfectly. And only if you have yourself the idea that it might give interesting result, use the idea. Tomorrow, next month, next year, I really don't mind. I have a lot of respect for what you have done so far. [quote author Syntopia]Hi, and welcome Puntopunto (coincidentally, my Fiat Punto broke completely down today, but I guess I can not blame your name for that). I've also tested several quadratic forms, and just want to make a quick comment. If you use your quadratic formula: T(x,y)=(ax2+by2+cxy,dx2+ey2+fxy) there seems to be a large parameter space, but nearly all combinations are non-conformal -.............................. the quadratic forms have been quite well examined (I've also tested the most obvious of these).[/quote] Watch out, I have some strange ^^. Seriously, your comment is valuable. I would like to give a reaction. But, I need some time to think. Math, fractals it is all for me a long time ago. Title: Re: first post, something fundamental about fractal generation Post by: DarkBeam on March 15, 2012, 12:52:01 PM :'( Of course, we have some years trying all possibilities with the ones you gave us so far, thanks a thousand times and hope you find some time (maybe if i finish the more general formula handling, but that needs a lot of time too)! Do not cry ... There is a bit of residual hope, for now... Hope won't fade away ^-^ Title: Re: first post, something fundamental about fractal generation Post by: puntopunto on March 19, 2012, 10:15:27 AM I promised to give a reaction on what Syntopia wrote. It took some time, also because I have a RSI problem.
[quote author Syntopia] If you require conformality, you end up with the constraints: a=-b=½f and e=-d=½c (since the Jacobian of a conformal transformation must be a scalar times a rotation matrix [/quote] I didn't knew you could filter out the angle preserving mappings. But this is nice, because these are mappings that do not interest me. [quote author Syntopia]but nearly all combinations are non-conformal - which usually results in fractals which are stretched and loses details when zooming in.[/quote] I find many of the non-conformal mappings interesting. They certainly have fractal properties, and they are often far away from fractals of complex functions. I like that. I think I have seen enough "brots"and spirals. For some more results it seems more appropriate to post somewhere else. What do you suggest? Then now for 3D Take parameter values in the T in my first post, getting T(x,y,z)=(x2-y2-z2+pyz,2xy+qyz,2xz+ryz) with x2+y2+z2 for the bail out. This transformation gives for z=0 : (x2-y2,2xy,0) and for y=0: (x2-z2,0,2xz) So for starting values in the XY plane it gives the Mandelbrot set in that plane and for starting values in the XZ plane it gives the Mandelbrot set in that plane. They are part of the prisoner set. It could mean that the prisoner set is just the Mandelbrot set, revolving round an axes. I doubt that. If these Mandelbrots are inside the set, they are part of some internal structure. For instance, cross sections, with a coloring based on z values, can give something interesting. If they, the Mandelbrot sets, are on the boundary, then it can give an interesting bulb. So, I have the question: did you investigate this quadratic form, at least for p=q=r=0? Title: Re: first post, something fundamental about fractal generation Post by: Syntopia on March 20, 2012, 10:42:12 PM Take parameter values in the T in my first post, getting T(x,y,z)=(x2-y2-z2+pyz,2xy+qyz,2xz+ryz) with x2+y2+z2 for the bail out. This transformation gives for z=0 : (x2-y2,2xy,0) and for y=0: (x2-z2,0,2xz) So for starting values in the XY plane it gives the Mandelbrot set in that plane and for starting values in the XZ plane it gives the Mandelbrot set in that plane. They are part of the prisoner set. It could mean that the prisoner set is just the Mandelbrot set, revolving round an axes. I doubt that. If these Mandelbrots are inside the set, they are part of some internal structure. For instance, cross sections, with a coloring based on z values, can give something interesting. If they, the Mandelbrot sets, are on the boundary, then it can give an interesting bulb. So, I have the question: did you investigate this quadratic form, at least for p=q=r=0? I don't know if I checked that exact form, but I've created some screenshoots with different p,q,r values. As you say, they contain the Mandelbrot set in the Z=0, and Y=0 plane. The first, the p=q=r=0 form is not very interesting, since it is a revolution object (like the Quaternion Mandelbrot set). Title: Re: first post, something fundamental about fractal generation Post by: Syntopia on March 20, 2012, 10:44:08 PM Btw, here is the Fragmentarium script I used:
Code: #include "DE-Raytracer.frag" Title: Re: first post, something fundamental about fractal generation Post by: Alef on March 21, 2012, 06:37:39 PM The 2D pictures seems very similar to formula I just a month agou uploaded to Ultra Fractal database. Zuzubrot im EM.upr.
Julia fractals are exactly similar to picture 2. http://www.fractalforums.com/images-showcase-(rate-my-fractal)/zuzu-urban/?PHPSESSID=bd58a48d9b9f916e892c3a53995708c0 (http://www.fractalforums.com/images-showcase-(rate-my-fractal)/zuzu-urban/?PHPSESSID=bd58a48d9b9f916e892c3a53995708c0) I found that formula by implementing another true 3D mandelbrot of new number set. http://www.fractalforums.com/mathematics/new-numbers-set/30/ (http://www.fractalforums.com/mathematics/new-numbers-set/30/) But I got nothing in 3D. Title: Re: first post, something fundamental about fractal generation Post by: puntopunto on March 28, 2012, 11:57:00 AM Quote from: Asdam The 2D pictures seems very similar to formula I just a month agou uploaded to Ultra Fractal database. Zuzubrot im EM.upr. Julia fractals are exactly similar to picture 2. If the images are the same, the formula should me the same. shouldn't? I downloaded the Ultra Fractal formulas and looked up ours. And yes it is the same, although the formula I use is more general. Because mine still was in the Fractint language I translated it in Ultrafractal. The juliaform is still seperated. (it is the first time I use UF language). Here they are: Code: quadraticforms {Actually You give a example of focusing on complex functions, is not always wise. You arrived at you formula, taking a complicated route, but it is a very simple and logic formula. No need for complex function theory. This is one example. If I have some time I will show some more. Syntopia: Thanks for the reply. Before reading your post, I just had figured out that Fragmentarium is a program, also for rendering 3D images. I also discovered that it is possible to use the graphic processor for calculations. Because I have a very modest graphic card I did not even try it. But, surprise,surprise, I downloaded Fragmentarium and it runs very smooth. So I discovered that you are the creator. You must be very pround!!! But, sadly, I cannot follow your script. I can see two functions: sqr and DE. But I do not see something as a main loop. The variable a, I don't understand what it is doing there. i expected the script runs over x,y,z. The page on tricomplex numbers on Wikipedia has been deleted. Anyhow if some kind if tri complex numbers is involved it is impossible to see if the sqr function does the same as my first formula. I suppose the tricomplex numbers are used to define some multiplication in R3, reflecting multiplication in R2 in one of the axes planes. Implementation of the total quadratic form, will give all possibilities, everything only using reals. Title: Re: first post, something fundamental about fractal generation Post by: Alef on March 31, 2012, 08:10:13 PM Actualy I found it by making a mistake in 3D code.
It have non ordinary bailout conditions left from w variable, but probably anywhay, if the result is same formula should be the same. Well, probably yours are more general, I just seen the post, haven't tested or looked deeper. You could upload your formula to UF database together with parameter files as examples;) Well there are lots of UF formulas, but many are just xyzMandelbrot. Title: Re: first post, something fundamental about fractal generation Post by: Alef on April 10, 2012, 06:57:52 PM I tried to implement your formula with switch. Your formula is much more general, zuzubrot square patterns are just one of possibilities. Throught without the bailout conditions, same polyniomials just shows black square. Alsou implemented with post abs function, it generates very nice patterns. Quote Quadraticforms { ;by Jos Hendriks, origianally in Fractint, about 1990 ; Implementation by Edgar Malinovsky 09.04.2012. init: float zx=0 float zy=0 float zzx=0 float zzy=0 complex c=0 IF (@settype=="Mandelbrot") IF (@pixelstart) z=#pixel ELSE z=0 ENDIF c=#pixel ELSEIF (@settype=="Julia") z= #pixel c=@julia ENDIF loop: zx=real(z) zy=imag(z) zzx=sqr(zx)*@p1 + sqr(zy)* @p2 + @p3*zx*zy zzy=sqr(zx)*@p4 + sqr(zy)*@p5 + @p6*zx*zy z=zzy*1i + zzx + c IF (@function=="Abs") z=abs(z) ELSEIF (@function=="Conj") z=conj(z) ELSEIF (@function=="None") ; do nothing ENDIF bailout: |z|< @bailout switch: type = "Quadraticforms" julia = #pixel p1=p1 p2=p2 p3=p3 p4=p4 p5=p5 p6=p6 function=function bailout=bailout pixelstart=pixelstart settype= switchsettype switchsettype=settype default: title = "Quadratic Forms" magn = 1 center = (-0.5, 0) maxiter = 250 periodicity = 0 float param bailout caption = "Bailout Value" default = 128 min = 0.5 endparam param settype caption="Set type" default=0 enum="Mandelbrot" "Julia" endparam param switchsettype caption = "switch to" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam complex param julia caption="Julia Seed" default=(-1.6, 0) visible = (@settype=="Julia") endparam param pixelstart caption ="Start with c=pixel" default = FALSE visible = (@settype=="Mandelbrot") hint="Starts calculation with c= pixel instead of 0 as did most of Fractint's formulas." endparam heading caption = "Info" text = "Quadratic generalisation by Jos Hendriks \ X = K*X^2 + L*Y^2 + M*X*Y + C \ Y = O*X^2 + P*Y^2 + Q*X*Y + C \ Coefficients 1,-1,0,0,0,2 generates Mandelbrot set." endheading float param p1 caption = "X= coef K* x^2" default=1.0 endparam float param p2 caption = "X= coef L* y^2" default=1 endparam float param p3 caption = "X= coef M* xy" endparam float param p4 caption = "Y= coef O* x^2" endparam float param p5 caption = "Y= coef P* y^2" endparam float param p6 caption = "Y= coef Q* xy" default=2.5 endparam param function caption="Post function" default=0 enum="None" "Abs" "Conj" endparam } Throught, m3D threads is not the best place for 2D discussions, so no pictures. This subject more would fit new theories and research. |