Logo by Fiery - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Follow us on Twitter
 
*
Welcome, Guest. Please login or register. December 07, 2022, 05:55:41 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 [2] 3 4   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Quasi-Fuchsian fractal goodness  (Read 12780 times)
Description: Yes that old chestnut
0 Members and 1 Guest are viewing this topic.
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #15 on: February 28, 2011, 10:28:17 AM »

Awasome Aexion!!!!!!!! I will try to transpose to MB3D formula one day for sure! If you know more variations please post cheesy wink
Logged

No sweat, guardian of wisdom!
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #16 on: March 01, 2011, 07:21:01 PM »

I tried to translate the code to UF but it don't really works as expected. The limit is too unstable, and the generated spirals are too much deformed to look good undecided Anyone knows?

Code:
tester00 {
; ----------------

init:
  z = #pixel
  float x = real(z)
  float y = imag(z)
  ;float x2 = x
  float zz = @zinit
  float rad = 0
  float rr = 0
  int i = @itercnt
loop:

  ; here is the main fmla
  ; -------------------
  while i>1
  x = x-@p
  y = y-@q
  zz = zz-@r
  rad=(x*x+y*y+zz*zz)
  x=x/rad
  y=-y/rad
  zz = (zz+@r)/rad
  i = i-1
  endwhile
  ; -------------------
  ;while i>1
  rr=sqrt(@q*@q+@r*@r)
  y=y+2*@r/rr
  zz=zz-2*@q/rr
  rad=(x*x+y*y+zz*zz)
  x=4*rr*x/rad
  y=4*rr*(y/rad)-@r
  zz=4*rr*(zz/rad)+@q
  ;i = i-1
  ;endwhile
  ; -------------------
  z = x + flip(y)
  ;ends here
bailout:
   false
   ;|z| > @bailout
default:
  title = "Test function"
  center = (0,0)
  float param p
    caption = "p"
    default = 0
  endparam
  float param q
    caption = "q"
    default = 1.9
  endparam
  float param r
    caption = "r"
    default = .04
  endparam
  float param zinit
    caption = "z init"
    default = 0
  endparam
  int param itercnt
    caption = "Iter count"
    default = 30
  endparam
  float param bailout
    caption = "Bailout"
    hint = "-disabled-"
    default = 1024
  endparam
}
Logged

No sweat, guardian of wisdom!
Aexion
Conqueror
*******
Posts: 116


The Fractal Hermit


WWW
« Reply #17 on: March 01, 2011, 10:08:00 PM »

I tried to translate the code to UF but it don't really works as expected. The limit is too unstable, and the generated spirals are too much deformed to look good undecided Anyone knows?

Code:
tester00 {
; ----------------

init:
  z = #pixel
  float x = real(z)
  float y = imag(z)
  ;float x2 = x
  float zz = @zinit
  float rad = 0
  float rr = 0
  int i = @itercnt
loop:

  ; here is the main fmla
  ; -------------------
  while i>1
  x = x-@p
  y = y-@q
  zz = zz-@r
  rad=(x*x+y*y+zz*zz)
  x=x/rad
  y=-y/rad
  zz = (zz+@r)/rad
  i = i-1
  endwhile
  ; -------------------
  ;while i>1
  rr=sqrt(@q*@q+@r*@r)
  y=y+2*@r/rr
  zz=zz-2*@q/rr
  rad=(x*x+y*y+zz*zz)
  x=4*rr*x/rad
  y=4*rr*(y/rad)-@r
  zz=4*rr*(zz/rad)+@q
  ;i = i-1
  ;endwhile
  ; -------------------
  z = x + flip(y)
  ;ends here
bailout:
   false
   ;|z| > @bailout
default:
  title = "Test function"
  center = (0,0)
  float param p
    caption = "p"
    default = 0
  endparam
  float param q
    caption = "q"
    default = 1.9
  endparam
  float param r
    caption = "r"
    default = .04
  endparam
  float param zinit
    caption = "z init"
    default = 0
  endparam
  int param itercnt
    caption = "Iter count"
    default = 30
  endparam
  float param bailout
    caption = "Bailout"
    hint = "-disabled-"
    default = 1024
  endparam
}

Hello

I tried your formula on UF, but got nothing (a blue image)..  sad
any hint about what im doing wrong?
I just pasted the formula on the editor and used it with the default parameters..
Logged

Fractals all the way..
Incendia for 3D Fractals
Aural for Musical Fractals
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #18 on: March 01, 2011, 10:31:06 PM »

Whoa thanks for the reply!
Well, I see something when I choose orbit traps or smooth as inside and outside colorings! cheesy
Logged

No sweat, guardian of wisdom!
Aexion
Conqueror
*******
Posts: 116


The Fractal Hermit


WWW
« Reply #19 on: March 01, 2011, 11:46:41 PM »

Whoa thanks for the reply!
Well, I see something when I choose orbit traps or smooth as inside and outside colorings! cheesy

Blue all the way sad

Can you post an image?

BTW.. I have many 3D formulaes for escape time, but all coded in C, since they are a bit more complicated than the classic iteration schema.. if you can translate them I will post the most interesting ones.. smiley
Logged

Fractals all the way..
Incendia for 3D Fractals
Aural for Musical Fractals
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #20 on: March 02, 2011, 12:01:24 AM »

What you are waiting for? You want to hide them out? wink
Spread your amazing knowledge please, I will try to make it work. But it is not guaranteed because I'm not that expert smiley
Logged

No sweat, guardian of wisdom!
Aexion
Conqueror
*******
Posts: 116


The Fractal Hermit


WWW
« Reply #21 on: March 02, 2011, 01:51:32 AM »

What you are waiting for? You want to hide them out? wink
Spread your amazing knowledge please, I will try to make it work. But it is not guaranteed because I'm not that expert smiley

Amazing knowledge!?? me?.. no.. Im just an experimentalist.. smiley

Here is some some code:
1. First define this Global Array (I know..globals are ugly):

Code:
float SAVEMANDELITER[130];

2. on your main function, fill it with this procedure:

Code:
SAVEMANDELITER[0]=0;
for (int tr=1;tr<129;tr++) SAVEMANDELITER[tr]=pow(SAVEMANDELITER[tr-1],0.85)+0.1475;


Now, for every point in the space, use the following function:

Code:
bool Newton(float x, float y, float z){
float a,b,c,d,e,f,d1,g1,e1,potential;
float w,X1,Y1,Z1,xiter,yiter,W1,radius,radius1,angle,angle1, inside;
char u_Counter;
potential=0;
if(z<=0)return (false);
W1=0;
a=x;
b=y;
inside=1000;
radius=0;
xiter=x;
yiter=y;
for(u_Counter=0;u_Counter<100;u_Counter++){
w=W1;
c=xiter;
d=yiter;
const float X2=xiter*xiter;
const float Y2=yiter*yiter;
const float X3=X2*xiter;
const float Y3=Y2*yiter;
const float X4=X2*X2;
const float Y4=Y2*Y2;
const float X5=X4 - 6 *X2 *Y2 + Y4 - 1;
const float Y5=4* X3 *yiter - 4.0*xiter *Y3;
const float X6=4 *( X3 - 3.0*xiter *Y2 );
const float Y6= 4 *( 3 *X2 *yiter - Y3 );
const float den = 1.0f / (X6*X6 + Y6*Y6);
X1 = xiter-(X5*X6 + Y5*Y6) * den;
Y1 = yiter-(Y5*X6 - X5*Y6) * den;
radius1=radius;
radius=sqrt(X1*X1+Y1*Y1);
if(radius<inside)inside=radius;
xiter=X1;
yiter=Y1;
W1=SAVEMANDELITER[u_Counter]; //W1=powf(W1,0.85)+0.1475; //if you cannot use arrays.. runs slower..
if (fabs(radius-radius1)<0.01) break;
}
X1=a;
Z1=b;
potential=radius1;
if (radius<10){potential=inside*5; }
if(W1<z)return(false);
if (radius<10)w=inside;
f=((z-w)/(W1-w))*5;
angle=10-radius1;
angle1=radius-radius1;
c=(c/10.0)*5;
d=(d/10.0)*5;
radius= 7 - (cos(c + 1.61803399*f) + cos(c - 1.61803399*f) + cos(f + 1.61803399*d) + cos(f - 1.61803399*d) + cos(d - 1.61803399*c) + cos(d + 1.61803399*c));

//if(potential<0)return false; else return true;

if (radius<4.8)return (true);
return(false);
}


It returns TRUE if you're in the fractal..and FALSE if you're not..(or it was reversed..long time without touching this formula)
you can also use the "potential" variable to define distance from the fractal surface, but the result is not very interesting..

Without much complexity, you can turn this formula into a Nova fractal..by just adding a C value..
If this is too complex, let me know and I will send something more simpler.. smiley

Good Luck

ps. Completely this code is completely unoptimized..just to make things clear..
Logged

Fractals all the way..
Incendia for 3D Fractals
Aural for Musical Fractals
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #22 on: March 02, 2011, 08:12:25 AM »

 undecided undecided undecided

1) I can't use any additional global variable. Only x,y,z,w and Cx,Cy,,Cz,Cw
2) It is hard for me use arrays (even nonglobal ones)
You need it only for precalc pow? Okay I can call pow() instead, I have the opcode fast translated version. cheesy
3) MB formulas I can write have only a loop section. Moreover, they must return only 8. Instead I can make something like;

   if (radius<4.cool return 8;
        x = 1000, y=1000, z=1000, w=1000 ;forced bailout
   return 8;

This solution works fine I have already tried it. wink
« Last Edit: March 02, 2011, 08:15:41 AM by DarkBeam » Logged

No sweat, guardian of wisdom!
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #23 on: March 02, 2011, 08:21:36 AM »

qfuchstester {
::y+tb/gn2lF1yOyNIQw7Wy/DIuHPNv8jExlcI/Ary5VEbsnWBDOYs2dyXfwP2RrUugaqqrqrG
  Gjm+kx91yCCJhJnVT/xJEjSeDHS311Sgc3iT3TaZLQcmH24qmtroPaHw0qm+zk1nsfTcjfjD
  MGts4otDb7NLJM410vb6/9UMs5HokwipHTP0MAKLmNLLof6s7dji6vAVcQW32I76uBVddQNP
  XCdkZzkXzq4dKlsuusYMEn3cmDxzm3xd1cFQGRn1bmzL0Mar2Gnpks1xHaayumbCAKZ51FNk
  P/T2Q5uBLvG1QF0mL+L6xU+CPXvbavPpFwe3/yguwWKndeWE6XxB75DY04XHzz3H82yicP/P
  lD9WT8Tp7lkxPYiDVb9unR8l5QId/Igh32XobwZ8eObebVGaKaGwsmjZseIS/wuSihk54RnR
  Q/g998W2HchouWpUiO+Fat8CmJECGXw3t5kiV3+BXdTTDrr5igrauIkimG1FqQKuQVssLXfv
  fOW+wzo8xnPXpKL+HgC7EzO=
}

A test render with my UF function. It looks promising but too much deformed! undecided




test2{
::hOWEZin2lF1yOyJMQw7Ix/glvHG/AjnJR+SOkfgV58qOghpVM2EjR7O5rPGD7oVKcBoququ6
  uHjQfCcftuiQSYyZN0fcAxpk3wh0dTXLjc3iT3Tm2rMiDeYjrG+ui+odATrG6PTWfy+N5FxF
  Bjzp1VlyK22DLJM4N0vD9/eKG28DUSYB6x0DDnxqrmhlF0PdU9uRRDrRrbvVeuKlqLsmOuQR
  mhJvR0oUS+NuquaMEn3cQR5M8OuLVoYkR0Z9wceamRbz24Mlk9N+wQT21cRMGls86SuN887/
  Y4NidLWeNa+yB2fRPmMs8X7m27TGpI/zvA0F2S5cLarrQ/KOYPWeRwvOmbvP4t1V5a+fKH6t
  Q8Th7lE4Hg4QzWv7ZCfZOES3L5L82+8chdktn9WctJDNFhBMrp0j1iIzD7KJGSQZhzJofw+e
  eI6DuQ00py7tbiT0u2TYuUK5CZZBcQx7u+BXnWr530nECl+koVq1qTUZr8EVxzucea/cs8hn
  R5jDvQlPf/j0NQMH
}

These params look more promising. Too bad the figure tends to be smaller & smaller, it almost disappears for numiter > 70 sad

« Last Edit: March 02, 2011, 08:36:13 AM by DarkBeam » Logged

No sweat, guardian of wisdom!
Aexion
Conqueror
*******
Posts: 116


The Fractal Hermit


WWW
« Reply #24 on: March 02, 2011, 09:16:07 AM »

undecided undecided undecided

1) I can't use any additional global variable. Only x,y,z,w and Cx,Cy,,Cz,Cw
2) It is hard for me use arrays (even nonglobal ones)
You need it only for precalc pow? Okay I can call pow() instead, I have the opcode fast translated version. cheesy
3) MB formulas I can write have only a loop section. Moreover, they must return only 8. Instead I can make something like;

   if (radius<4.cool return 8;
        x = 1000, y=1000, z=1000, w=1000 ;forced bailout
   return 8;

This solution works fine I have already tried it. wink

Oh.. sad
Perhaps something far more simpler is a good start (no globals, no arrays, no complex loops..just the simple old loop procedure):

Code:
bool Mandel3TriZ(double x, double y, double z){
//space coordinates transformations..
//Turns the 3D space in an infinite amount
//of 2D slices

const double w=1/(x*x+y*y+z*z);
const double dem=1-(z)*w;
const double ctx =((x)*w)/dem;
const double cty =((-y)*w)/dem;
double Xp=0,Yp=0;
double radius;

//put your favorite fractal iteration here
//A simple Mandelbrot is show..but you can
//try others..
for(unsigned char Counter=0;Counter<20;Counter++){
const double xs=Xp*Xp-Yp*Yp+ctx;
const double ys=2*Xp*Yp+cty;
Xp =xs;
Yp = ys;
radius=Xp*Xp+Yp*Yp;
if (radius>100) break;
const double w1=1/(xs*xs+ys*ys+z*z);
const double dem1=1-(z)*w;
Xp =((xs)*w1)/dem1;
Yp =((-ys)*w1)/dem1;

}
//false, the iteration took the blue pill
//true, the iteration took the red pill
if(radius<100)
return false;
else
return true;
}

Code:
//Based on the MandelBox..4D
bool CheeseBox(double x, double y, double z){

  const double ctx =(x   + y   + z);
  const double cty = (-x -y + z);
  const double ctz =(-x + y   -z);
  const double ctw = (x   -y -z);
float w=0;//cheesebox
//float w=pow(x*x+y*y+z*z,0.333); //cybertronian box
for(unsigned char Counter=0;Counter<15;Counter++){
if(x>1)x=2-x;
else
if(x<-1)x=-2-x;
if(y>1)y=2-y;
else
if(y<-1)y=-2-y;
if(z>1)z=2-z;
else
if(z<-1)z=-2-z;
if(w>1)w=2-w;
else
if(w<-1)w=-2-w;
const float vm=sqrt(x*x+y*y+z*z+w*w);

if(vm<0.5){
x=x*4;
y=y*4;
z=z*4;
w=w*4;
} else
if(vm<1){
const float vsq=vm*vm;
x/=vsq;
y/=vsq;
z/=vsq;
w/=vsq;
}
x=x*2+ctx;
y=y*2+cty;
z=z*2+ctz;
w=w*2+ctw;

radius=sqrt(x*x+y*y+z*z+w*w);

if (radius>60) break;

}


if(radius<60)
return true;
else
return false;
}
Logged

Fractals all the way..
Incendia for 3D Fractals
Aural for Musical Fractals
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #25 on: March 02, 2011, 11:32:49 AM »

Ok. But you have nothing to say about the other message? grin

Thanks a lot for your time cheesy
Logged

No sweat, guardian of wisdom!
Aexion
Conqueror
*******
Posts: 116


The Fractal Hermit


WWW
« Reply #26 on: March 02, 2011, 12:19:12 PM »

Ok. But you have nothing to say about the other message? grin

Thanks a lot for your time cheesy

Oh, yes, I forgot:
Since the original iteration has many transformations, you must reflect that on the escape time iteration..
one solution for example is iterating both transformations but selecting only the most closest one to the starting point, but thats a brute force solution, and not always give good results.. There are better solutions (such as space partitioning), that most probably works better with this particular case. Ask to David Makin, since he has mastered those methods.

btw, no idea how to use those parameters on UF (I'm a little outdated on the usage of most fractal programs..)

 
 
Logged

Fractals all the way..
Incendia for 3D Fractals
Aural for Musical Fractals
DarkBeam
Global Moderator
Fractal Senior
******
Posts: 2512


Fragments of the fractal -like the tip of it


« Reply #27 on: March 02, 2011, 04:21:54 PM »

 sad

Thanks for the help anyway
Logged

No sweat, guardian of wisdom!
fractalrebel
Fractal Lover
**
Posts: 211



WWW
« Reply #28 on: March 02, 2011, 05:49:28 PM »

A reminder, but I am sure you already know, Quasi-Fuchsian fractals from a Kleinian group, and the transforms are Mobius transforms, not affine transforms. There is a lot of information in the book Indra's Pearls by Mumford, Series and Wright. I have several UF formulas that deal with Kleinian groups based upon the Indra's Pearls book. None of them are really 3D - thats one of my many projects on the back burner. Here is a an example generated in UF:



* QuasiFuchsianSingleDegenerate.jpg (40.76 KB, 800x437 - viewed 407 times.)
Logged

fractalrebel
Fractal Lover
**
Posts: 211



WWW
« Reply #29 on: March 02, 2011, 05:56:58 PM »

This is still 2D but using spheres:



* Earthmap.jpg (48.19 KB, 640x512 - viewed 469 times.)
Logged

Pages: 1 [2] 3 4   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Distributed computing for fractal goodness Let's collaborate on something! twinbee 13 3259 Last post January 15, 2010, 06:08:49 PM
by cKleinhuis
Quasi-Quasi Mandelbulb3D Gallery bib 1 607 Last post December 20, 2011, 02:58:26 PM
by bib
quasi fuchsian group in the quaternion algebra Mandelbulb3D Gallery ericr 0 378 Last post December 20, 2012, 09:52:07 AM
by ericr
Mysterious site with encrypted messages and quasi-quasi-fuchsian fractal (?) Fractal News across the World KRAFTWERK 3 1055 Last post December 30, 2015, 08:47:54 PM
by KRAFTWERK
Global Hazard ( Quasi-Quasi-Fuchsian ) Mandelbulb3D Gallery KRAFTWERK 0 471 Last post April 21, 2016, 08:29:44 PM
by KRAFTWERK

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.164 seconds with 24 queries. (Pretty URLs adds 0.01s, 2q)