comment { These formulae were contributed by Sven Geier. The corresponding help-files can be accesed through the UF formula help system (Ctl+Alt+F1 in UF3) } Jekyll { ; Sven - 2001 ; ; Either a mandelbrot set or a Julia set or something weird in between... ; ; See the help file (Ctl+Alt+F1) for all the gory details... init: z = @start*Real(@p1)+#pixel*Imag(@p1) loop: z = z^@power + #pixel*Real(@p1) + @jp*Imag(@p1) bailout: |z| <= @bailout default: title = "Dr. Jekyll" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/JH.html" center = (-0.5, 0) param p1 caption = "Metamorphosis" default=(1,0) hint = "Metamorphosis parameter: \ (1,0) = Normal Mandelbrot set, \ (0,1) = Normal Julia set, \ All else: Something new..." endparam param jp caption = "Julia parameter" default = (-0.68125,0.4125) hint = "The common julia parameter for the J-part of the formula." endparam param start caption = "Starting point" default = (0,0) hint = "Perturbation in the Mandelbrot sense.\ Use (0,0) for the standard Mandelbrot set." endparam param power caption = "Power" default = (2,0) hint = "This defines the power of the Mandelbrot\Julia set. \ Use (2,0) for the standard sets." endparam param bailout caption = "Bailout value" default = 128 hint = "Defines how soon an orbit bails out, i.e. doesn't belong \ to the set anymore." endparam switch: type = "Hyde" p1 = #pixel jp = jp start = start power = power bailout = bailout } Hyde { ; Sven - 2001 ; ; Either a mandelbrot set or a Julia set or something weird in between... ; ; See the help file (Ctl+Alt+F1) for all the gory details... init: z = @start*Real(@p1)+#pixel*Imag(@p1) loop: z = z^@power + #pixel*Real(@p1) + @jp*Imag(@p1) bailout: |z| <= @bailout default: title = "Mr. Hyde" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/JH.html" center = (-0.5, 0) param p1 caption = "Metamorphosis" default=(1,0) hint = "Metamorphosis parameter: \ (1,0) = Normal Mandelbrot set, \ (0,1) = Normal Julia set, \ All else: Something new..." endparam param jp caption = "Julia parameter" default = (-0.68125,0.4125) hint = "The common julia parameter for the J-part of the formula." endparam param start caption = "Starting point" default = (0,0) hint = "Perturbation in the Mandelbrot sense.\ Use (0,0) for the standard Mandelbrot set." endparam param power caption = "Power" default = (2,0) hint = "This defines the power of the Mandelbrot\Julia set. \ Use (2,0) for the standard sets." endparam param bailout caption = "Bailout value" default = 128 hint = "Defines how soon an orbit bails out, i.e. doesn't belong \ to the set anymore." endparam switch: type = "Jekyll" p1 = p1 jp = #pixel start = start power = power bailout = bailout } SBJ { ; by Sven Geier ; Started with Generic Julia set, added s-boost... ; ; See help file! init: z = #pixel loop: float sb = cos(@rfreq*cabs(z-@z0)+@roff)*cos(@tfreq*atan2(z-@z0)+@toff) z = z^@power + (@bamp*sb+@boff)*@seed bailout: |z| <= @bailout default: title = "S-boost Julia" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/SBJM.html" param rfreq caption = "Radial Frequency" default = 1. endparam param roff caption = "Radial Phase" default=0. hint = "Useful values are 0 ... 2*pi" endparam param tfreq caption = "Tangential Frequency" default = .2 endparam param toff caption = "Tangential Phase" default=0. hint = "Useful values are 0 ... 2*pi" endparam param z0 caption ="Distortion center" default = (0,0) endparam param bamp caption = "Boost Amplitude" default = 1. hint="Overall Factor applied to S-term." endparam param boff caption = "Boost Offset" default = 0. hint="Overall Offset applied to S-term." endparam param seed caption = "Julia seed" default = (-0.68125,0.4125) hint = "Use this to create many different Julia sets. You can \ also set this value using the Switch feature." endparam param power caption = "Power" default = (2,0) hint = "This defines the power of the Julia set. Use (2,0) \ for the standard Julia set." endparam param bailout caption = "Bailout value" default = 4.0 min = 1.0 hint = "Defines how soon an orbit bails out, i.e. doesn't belong \ to the Mandelbrot set anymore." endparam switch: type = "SBJM" power = @power bailout = @bailout rfreq = @rfreq roff = @roff tfreq = @tfreq toff = @toff bamp = @bamp z0 = @z0 } SBJM { ; by Sven Geier ; M-set with S-boost ; ; See help file! init: z = #pixel loop: float sb = cos(@rfreq*cabs(z-@z0)+@roff)*cos(@tfreq*atan2(z-@z0)+@toff) z = z^@power + (@bamp*sb+@boff)*#pixel bailout: |z| <= @bailout default: title = "S-boost-M" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/SBJM.html" param rfreq caption = "Radial Frequency" default = 1. endparam param roff caption = "Radial Phase" default=0. hint = "Useful values are 0 ... 2*pi" endparam param tfreq caption = "Tangential Frequency" default = .2 endparam param toff caption = "Tangential Phase" default=0. hint = "Useful values are 0 ... 2*pi" endparam param z0 caption ="Distortion center" default = (0,0) endparam param bamp caption = "Boost Amplitude" default = 1. hint="Overall Factor applied to S-term." endparam param boff caption = "Boost Offset" default = 0. hint="Overall Offset applied to S-term." endparam param power caption = "Power" default = (2,0) hint = "This defines the power of the Julia set. Use (2,0) \ for the standard Julia set." endparam param bailout caption = "Bailout value" default = 4.0 min = 1.0 hint = "Defines how soon an orbit bails out, i.e. doesn't belong \ to the Mandelbrot set anymore." endparam switch: type = "SBJ" power = @power bailout = @bailout seed = #pixel rfreq = @rfreq roff = @roff tfreq = @tfreq toff = @toff z0 = @z0 bamp = @bamp boff = @boff } Simple { init: z=0 k=#pixel loop: z=(z^k)/k+#pixel bailout: |z| < 4 default: title = "Sven.ufm:Simple"} MinExpM { ; by Sven ; Computes (z^pixel)+c and (pixel^z)+c and retains the smaller of the two. ; c is #pixel*@pweight with some additional weight "pweight". ; ; ; See help file! init: z = (k = #pixel) kc = @Kfunc(k) k = @pweight*k loop: zfz = @Zfunc(z) z1 = zfz^kc + k z2 = kc^zfz + k IF |z1| < |z2| z = z1 ELSE z = z2 ENDIF bailout: |z| < @bailout default: title = "Min Exp M" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/MinExpM.html" param pweight caption = "Pixel weight" default = 0.1 hint = "Weight of pixel in each iteration." endparam param bailout caption = "Bailout" default = 4.0 max = 100. hint = "Defines how soon an orbit bails out, \ i.e. doesn't belong to the Mandelbrot \ set anymore." endparam Func Zfunc Caption = "Zfunc" Hint = "Applied to the z branch" Default = ident() Endfunc Func Kfunc Caption = "Kfunc" Hint = "Applied to the k branch" Default = ident() Endfunc switch: type = "MinExpJ" Jseed = #pixel Zfunc = Zfunc Kfunc = Kfunc pweight = pweight bailout = bailout } MinExpJ { ; by Sven ; Julia version of the S-boost fractal; ; ; Don't use this formula directly. Use the Mandelbrot version ; MinExpM and switch with the Ctl-J/F7 switch tool to this version. ; ; ; See help file! init: z = (k = #pixel) za = @pweight * @Jseed kc = @Kfunc(k) loop: zfz = @Zfunc(z) z1 = zfz^kc + za z2 = kc^zfz + za IF |z1| < |z2| z = z1 ELSE z = z2 ENDIF bailout: |z| < @bailout default: title = "Min Exp J" helpfile = "http://www.its.caltech.edu/~sgeier/fractals/misc/MinExpM.html" param Jseed caption = "Julia seed" default = (0.5,0.5) hint = "Julia seed" endparam param pweight caption = "Pixel weight" default = 0.1 hint = "Weight of pixel in each iteration." endparam param bailout caption = "Bailout" default = 4.0 max = 100. hint = "Defines how soon an orbit bails out" endparam Func Zfunc Caption = "Zfunc" Hint = "Applied to the z branch" Default = ident() Endfunc Func Kfunc Caption = "Kfunc" Hint = "Applied to the k branch" Default = ident() Endfunc switch: type = "MinExpM" Zfunc = Zfunc Kfunc = Kfunc pweight = pweight bailout = bailout }