I'd like to, but am not familiar with mathematical Lie groups. For now, however, I have been inspired by your and others comments, and in general by the whole forum.
So here is another formula, one that rotates x axis vs the yz plane, y axis vs. the xz plane, and z axis vs. the xy plane.
It is interesting, but starts out pretty plain at the z^2 area, as I've not got up into the 200th iteration (when the seahorse valley starts getting interesting). I suppose this is a good place to put a teaser image to demonstrate the potential variety contained in the new formula. This is a z^8 (8th order, as I call them) 10 iteration 3d fractal (zoomed pretty deep (especially for 10 iterations) in on some islands in this one quadrant (this is a set of tiny nubs off of a nub of a nub of a nub of a tiny island):

This is based off of the kaleidoscope formula from earlier in this thread. I was thinking that there had to be a way to create a fractal by rotating the components around the other 2 components planar magnitude, so went back to the old formula and tweaked it. As the old formula was named "type D", I've gotten very original and named this one "type D2". I suppose I should make a formula "type R"... so that I can modify it.
I don't know why I didn't do this fractal thing earlier: I think I just didn't bother to zoom in enough (or set bailout correctly).
MAKE SURE YOU SET BAILOUT HIGH, I set mine to 10^30, or you get a tiny little thing Pixel and variable assignment follow:
pixelr is the x component, as usual
pixeli is the y
pixelj is the z
pixelw is the yz planar component (I should name it plane_yz, but.. I didn't rewrite the formula yet)
anyways: pixelw= sqrt(pixeli^2+pixelj^2);
pixelv is the xz planar component: pixelv=sqrt(pixelr^2+pixelj^2);
pixelu is the xy planar component: pixelu=sqrt(pixelr^2+pixeli^2);
I set all variables to their initial pixel components before beginning the iteration. If you want to include a seed value, you can do so instead of setting the variables to the corresponding pixel and planar components.
sx=pixelr; sw=pixelw; // sw rotates with sx
sy=pixeli; sv=pixelv; // sv rotates with sy
sz=pixelj; su=pixelz; // su rotates with sz
Here is the formula:
One way to do it, checked it out, I don't think this method is "better" or even that much faster. Not sure what the problem was (probably was running something in the background when I tried the other method).
r= (sx^2+sy^2+sz^2)^(n); // I don't know why, but you basically get the same fractal if you split the components
r2=(sw^2+sv^2+su^2)^(n); // like this, but for some reason it calculates a lot faster (I think it's because the
// fractal is bigger)
r=sqrt(r2+r)*.5; // I multiplied the magnitude by .5 to increase the size of the fractal...
You can just do this, but for some reason it's a lot slower and the details I've seen don't look that different:r= (sx^2+sy^2+sz^2+sw^2+sv^2+su^2)^(n/2);
A tangent (skip if you like):
I also use an if statement to assign r=sqrt(sx^2+sy^2+sz^2) so I can make those cool kaleidoscopes I posted a bunch of earlier in this thread (it is the same code except for the magnitude). There is one more mode I call "weirdmode" in which I set r=xyz and r2=wvu values and assign them to opposite variables: it's weird because you get these images that escape after about 2-3 iterations, totally solid, no change for higher iterations: but the images are interesting and different for different angles. It's like completely solid mathematical objects or something (and I forgot the exact settings... bleh).... back to the formula:
phi=atan2(sw+flip(sx)); //
tango=atan2(sv+flip (sy));
theta=atan2(su+flip(sz));
nx=r*sin(v*phi) ;
ny=r*sin(v*tango); // you can just use whatever multiplier variable names you like
nz=r*sin(v*theta); // I used v for the xyz and mag for the wvu... you can use only one, unless you like to mess
nw=r*cos(mag*phi) ; // around... but there is enough variety in the stock fractals that.. well maybe there is
nv=r*cos(mag*tango) ; // maybe we need another dimension
nu=r*cos(mag*theta) ; // the 4d extension of this concept is pretty simple: just do 3d planes instead of 2d...
if (juliaMode) {
sx=nx+cr;
sy=ny+ci; // you gotta add in 3 more variables for julias... I haven't bothered yet, as you can see
sz=nz+cj;
} else {
sx=nx+pixelr;
sy=ny+pixeli;
sz=nz+pixelj;
sw=nw+pixelw;
sv=nv+pixelv;
su=nu+pixelu;
}
I just set bail= |sx+sy+sz| because of the high cutoff, but... doesn't help much. I haven't figure out why the bailout is sooooo high for this one.
Or you can play with various bail formulas (I just have bail2=1 for the above), like a - bail1 and + bail2.. or whatever:
bail=abs(sw)^bail1*abs(sx)^bail2+abs(sv)^bail1*abs(sy)^bail2+abs(su)^bail1*abs(sz)^bail2;
Now for some images of the new formula. I messed around in the 2nd order one for a while, because it's just neat to find the patterns I found in a z^2 3d fractal.
This is a series of zooms, from some location:




Here are a few random images, a 23, 36, then 30 iteration z^2:

Here is another 30 iteration z^2 (done with the slower formula: what a pain):
