I'm using Ultrafractal actually, to make it work, just use the code above in the inner loop (I just replace an existing mandelbulb formula where useDE is false, must be pasted in both places, for pos iteration and lighting iteration). Then add this line prior to the code

point.Init(real(zri), imag(zri), zj)

and these lines afterwards

zri = point.x + flip(point.y) + cri

zj = point.z + cj

and not forgetting to initialise the point vector at the beginning of the file:

Vector point = new Vector()

Lastly, you need the vector class implemented, I put this in mmf.ulb

class Vector(){

public:

func Init(float xx, float yy, float zz)

x = xx

y = yy

z = zz

endfunc

float func Dot(Vector other)

return x*other.x + y*other.y + z*other.z

endfunc

func Divide(float f)

x = x / f

y = y / f

z = z / f

endfunc

func Multiply(Vector a, float f)

x = a.x * f

y = a.y * f

z = a.z * f

endfunc

func MultiplyEquals(float f)

x = x * f

y = y * f

z = z * f

endfunc

func Normalise()

float mag = sqrt(x*x + y * y + z*z)

if mag>0

x = x / mag

y = y / mag

z = z / mag

endif

endfunc

float func Magnitude()

return sqrt(x*x + y*y + z*z)

endfunc

func Add(Vector a, Vector b)

x = a.x + b.x

y = a.y + b.y

z = a.z + b.z

endfunc

func AddEquals(Vector a)

x = x + a.x

y = y + a.y

z = z + a.z

endfunc

func Subtract(Vector a, Vector b)

x = a.x - b.x

y = a.y - b.y

z = a.z - b.z

endfunc

func Cross(Vector a, Vector b)

float _x = (a.y * b.z) - (a.z * b.y)

float _y = (a.z * b.x) - (a.x * b.z)

float _z = (a.x * b.y) - (a.y * b.x)

x = _x

y = _y

z = _z

endfunc

float x

float y

float z

}

I would add it to the MMFwip3D.ufm but I'm not sure if this is reserved just for mandelbulbs, don't know how to add an extra fractalType and am getting confused with the number of duplications of the inner loop algorithms in the latest version. Anyway, let me know if that doesn't work.

I put some pics in the gallery section

http://www.fractalforums.com/index.php?action=gallery;su=user;cat=111;u=853Do we dare go inside? -