Fractrace.Formulas.H6 C# (CSharp) Method

H6() private method

Abgeänderte Form vom Mandelbulb
private H6 ( double ar, double ai, double aj, double ak, double br, double bi, double bj, double bk, long zkl, bool invers ) : long
ar double
ai double
aj double
ak double
br double
bi double
bj double
bk double
zkl long
invers bool
return long
        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);
        }