I still have a strong gut feeling that there is a relation between C3 and the M-set, but it turns out I was wrong in thinking it was a simple projection
. From the pictures of C3 I think it is at least an affine transformation that maps C3 to the complex plane.
My feeling is that there is something more general going on. It looks like there is a connection between the M-set and all of the groups on your site.
The Java program that generates the above code from a simple script file is 1000 lines long. If you want it I can get it to you.
Well, I almost certainly won't understand how it works, but I'll PM you my email address anyway.
Thank you for posting the loop code. It would have been a nightmare to do by hand. Here's the (0,1,2) cross section of C11:
at 25 iterations
at 100 iterations:
and a composite image of a few different iteration depths:
I'll have more up tomorrow, but for now I'll just post the formula file so you can explore it too.
cp_63303(QUATERNION) {
parameter real bailout, c4;
parameter quaternion c5678;
parameter complex c910;
int ndx;
real e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,magn,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;
real E[11];
void init(void)
{
p0 = real(pixel);
p1 = imag(pixel);
p2 = part_j(pixel);
p3 = part_k(pixel);
p4 = c4;
p5 = real(c5678);
p6 = imag(c5678);
p7 = part_j(c5678);
p8 = part_k(c5678);
p9 = real(c910);
p10 = imag(c910);
for(ndx = 0; ndx <= 10; ndx = ndx+1){ E[ndx] = 0.0;}
}
void loop(void)
{
e0=E[0]; e1=E[1]; e2=E[2]; e3=E[3]; e4=E[4]; e5=E[5]; e6=E[6]; e7=E[7]; e8=E[8];
e9=E[9]; e10=E[10];
E[0] = p0 + e0*e0 + ( e1*e10 + e2*e9 + e3*e8 + e4*e7 + e5*e6 )*2;
E[1] = p1 + e6*e6 + ( e0*e1 + e2*e10 + e3*e9 + e4*e8 + e5*e7 )*2;
E[2] = p2 + e1*e1 + ( e0*e2 + e3*e10 + e4*e9 + e5*e8 + e6*e7 )*2;
E[3] = p3 + e7*e7 + ( e0*e3 + e1*e2 + e4*e10 + e5*e9 + e6*e8 )*2;
E[4] = p4 + e2*e2 + ( e0*e4 + e1*e3 + e5*e10 + e6*e9 + e7*e8 )*2;
E[5] = p5 + e8*e8 + ( e0*e5 + e1*e4 + e2*e3 + e6*e10 + e7*e9 )*2;
E[6] = p6 + e3*e3 + ( e0*e6 + e1*e5 + e2*e4 + e7*e10 + e8*e9 )*2;
E[7] = p7 + e9*e9 + ( e0*e7 + e1*e6 + e2*e5 + e3*e4 + e8*e10 )*2;
E[8] = p8 + e4*e4 + ( e0*e8 + e1*e7 + e2*e6 + e3*e5 + e9*e10 )*2;
E[9] = p9 + e10*e10 + ( e0*e9 + e1*e8 + e2*e7 + e3*e6 + e4*e5 )*2;
E[10] = p10 + e5*e5 + ( e0*e10 + e1*e9 + e2*e8 + e3*e7 + e4*e6 )*2;
for(ndx = 0; ndx <= 10; ndx = ndx+1){ E[ndx] = E[ndx];}
magn = E[0]*E[0]+E[1]*E[1]+E[2]*E[2]+E[3]*E[3]+E[4]*E[4]+E[5]*E[5]+E[6]*E[6]+E[7]*E[7]+E[8]*E[8] +E[9]*E[9]+E[10]*E[10];
}
bool bailout(void)
{
return(magn <= bailout);
}
void description(void)
{
this.title = "C11";
bailout.caption = "Bailout Value";
bailout.default = 4.0;
bailout.min = 1.0;
bailout.hint = "Defines the bailout radius: As soon as a pixel falls outside a circle with this radius, the iteration stops.";
c4.default = 0.0;
c5678.default = (0.0,0.0,0.0,0.0);
c910.default = (0.0,0.0);
}
}