long H6(double ar, double ai, double aj, double ak, double br, double bi, double bj, double bk, long zkl, bool invers)
{
double aar, aai, aaj, aak;
long tw;
int n;
int pow = 8; // n=8 entspricht dem Mandelbulb
double theta, phi;
double theta1;
double r_n = 0;
aar = ar * ar; aai = ai * ai; aaj = aj * aj; aak = ak * ak;
tw = 0L;
double r = aar + aai + aaj + aak;
double sintheta = 0;
for (n = 1; n < zkl; n++)
{
theta = Math.Atan2(aar + aai, aj);
theta1 = Math.Atan2(aar + aai, ak);
phi = Math.Atan2(ai, ar);
r_n = Math.Pow(r, pow);
sintheta = Math.Sin(theta * pow) + Math.Sin(theta1 * pow);
ar = r_n * (sintheta * Math.Cos(phi * pow));
ai = r_n * (sintheta * Math.Sin(phi * pow));
aj = r_n * (Math.Cos(theta * pow));
ak = r_n * (Math.Cos(theta1 * pow));
ar += br;
ai += bi;
aj += bj;
ak += bk;
aar = ar * ar; aai = ai * ai; aaj = aj * aj; aak = ak * ak;
r = Math.Sqrt(aar + aai + aaj + aak);
if (r > gr) { tw = n; break; }
}
if (invers)
{
if (tw == 0)
tw = 1;
else
tw = 0;
}
return (tw);
}