Some published images at fractalforums.com are presented with a corresponding source code.
To use this formula, you have to
- start Gestaltlupe_1_2_0.exe
- Choose the tab Formula
- Delete all Text
- Insert the formula text
- Press the black square at the bottom
- Press the black square at the bottom again (or Preview or Start)
You have to press the preview rendering to times, because some rendering and display parameters are defined in the formula.
I.e. here the source code of this small image:
// formula source:
public override void Init() {
base.Init();
if(GetString("intern.Formula.TempUpdateVal")!="2a38c745978a3ac7b2061c1d6dc1bf3d"){
SetParameterBulk(@"
<Entry Key='Renderer.AmbientIntensity' Value='0' />
<Entry Key='Renderer.ColorFactor.Blue' Value='8' />
<Entry Key='Renderer.ColorFactor.Green' Value='1.3' />
<Entry Key='Renderer.ColorFactor.Red' Value='1' />
<Entry Key='Renderer.ColorFactor.RgbType' Value='1' />
<Entry Key='Renderer.ColorGreyness' Value='0' />
<Entry Key='Renderer.ColorIntensity' Value='1' />
<Entry Key='Renderer.Light.X' Value='0.2' />
<Entry Key='Renderer.Light.Y' Value='-2.8' />
<Entry Key='Renderer.Light.Z' Value='0.6' />
<Entry Key='Renderer.LightIntensity' Value='0.4' />
<Entry Key='Renderer.MaxFieldOfView' Value='0.8' />
<Entry Key='Renderer.MinFieldOfView' Value='0.35' />
<Entry Key='Renderer.Normalize' Value='0' />
<Entry Key='Renderer.ShadowJustify' Value='3' />
<Entry Key='Renderer.ShadowNumber' Value='36' />
<Entry Key='Renderer.Shininess' Value='12' />
<Entry Key='Renderer.ShininessFactor' Value='0.9' />
<Entry Key='Renderer.UseDarken' Value='0' />
<Entry Key='Renderer.UseLight' Value='1' />
<Entry Key='Renderer.UseSharpShadow' Value='0' />
<Entry Key='Border.Max.x' Value='-0.206372175411955' />
<Entry Key='Border.Max.y' Value='-2.02837906936701' />
<Entry Key='Border.Max.z' Value='-0.333956201021493' />
<Entry Key='Border.Min.x' Value='-0.206776822554923' />
<Entry Key='Border.Min.y' Value='-2.02878371650997' />
<Entry Key='Border.Min.z' Value='-0.334360848164461' />
<Entry Key='Formula.Static.Cycles' Value='256' />
<Entry Key='Formula.Static.Formula' Value='-2' />
<Entry Key='Formula.Static.jx' Value='-91' />
<Entry Key='Formula.Static.jy' Value='-0.03' />
<Entry Key='Formula.Static.jz' Value='-1.4' />
<Entry Key='Formula.Static.jzz' Value='0' />
<Entry Key='Formula.Static.MinCycle' Value='256' />
<Entry Key='Transformation.Camera.AngleX' Value='0' />
<Entry Key='Transformation.Camera.AngleY' Value='63.5' />
<Entry Key='Transformation.Camera.AngleZ' Value='180' />
<Entry Key='Transformation.Perspective.Cameraposition' Value='0.3' />
<Entry Key='Transformation.Stereo.Angle' Value='-9' />
<Entry Key='Transformation.Stereo.EyeDistance' Value='0.5' />
<Entry Key='View.Height' Value='1200' />
<Entry Key='View.Perspective' Value='0' />
<Entry Key='View.Width' Value='1200' />
<Entry Key='intern.Formula.TempUpdateVal' Value='2a38c745978a3ac7b2061c1d6dc1bf3d' />");
}
additionalPointInfo=new AdditionalPointInfo();
}
public override long InSet(double ar, double ai, double aj,
double br, double bi, double bj, double bk,
long zkl, bool invers) {
double gr=50000;
double xx, yy, zz; long tw; int n; double x=ar,y=ai,z=aj;
xx = x * x; yy = y * y; zz = z * z; tw = 0;
double r = Math.Sqrt(xx + yy + zz);
double scale = 1.04;
double mult=1;
additionalPointInfo.red=0; additionalPointInfo.green=0; additionalPointInfo.blue=0;
int xcount=6;
for (n = 1; n < zkl; n++) {
for(int xic=0;xic<xcount;xic++) {
if (x > 1) x = 2.0 - x; else break;
}
if (x < -1) x = -2.0 - x;
if (y < -1) y = -2.0 - y;
if (z < -1) z = -2.0 - z;
xx=x*x;yy=y*y;zz=z*z;
r = xx + yy + zz;
if(r!=0) {
additionalPointInfo.red+=xx/r;
additionalPointInfo.green+=yy/r;
additionalPointInfo.blue+=zz/r;
}
if (r > gr) { tw = n; break; }
mult=1;
if (r < 1 && r>0)
mult=1.0/r;
mult*=scale;
x*=mult;
y*=mult;
z*=mult;
x+=br;
y+=bi;
z+=bj;
}
if (invers) {
if (tw == 0)
tw = 1;
else
tw = 0;
}
return (tw);
}