sdc+dav-4func-tdds2 { ; Based on Davka's 3 function formula, extended to four functions, and with the initial value ; of function 1 set to sinh. ; ; Use outside coloring. ; init: float x = real(#pixel) float y = imag(#pixel) loop: float oldx = x float oldy = y x = oldx + @multiplier * \ @amplitude1 * real(@function1(@frequency1 * oldy + \ @amplitude2 * real(@function2(@frequency2 * oldy + \ @amplitude3 * real(@function3(@frequency3 * oldy + \ @amplitude4 * real(@function4(@frequency4 * oldy )))))))) y = oldy - @multiplier * \ @amplitude1 * real(@function1(@frequency1 * oldx + \ @amplitude2 * real(@function2(@frequency2 * oldx + \ @amplitude3 * real(@function3(@frequency3 * oldx + \ @amplitude4 * real(@function4(@frequency4 * oldx )) )) )) )) z = x + flip(y) bailout: |z| < @bailout default: title = "Four-Function TDDS" method = multipass periodicity = 0 magn = 0.1 float param version default = 0.0 visible = false endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam func function1 default = sinh() caption = "Function 1" endfunc float param amplitude1 default = 1.0 caption = "Amplitude 1" endparam float param frequency1 default = 1.0 caption = "Frequency 1" endparam func function2 default = sin() caption = "Function 2" endfunc float param amplitude2 default = 1.0 caption = "Amplitude 2" endparam float param frequency2 default = 1.0 caption = "Frequency 2" endparam func function3 default = sin() caption = "Function 3" endfunc float param amplitude3 default = 1.0 caption = "Amplitude 3" endparam float param frequency3 default = 1.0 caption = "Frequency 3" endparam func function4 default = sin() caption = "Function 4" endfunc float param amplitude4 default = 1.0 caption = "Amplitude 4" endparam float param frequency4 default = 1.0 caption = "Frequency 4" endparam } sdc-4Fx2+J { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads init: ;default to Mandelbrot complex c = #pixel complex z = ( 0.0, 0.0 ) if( @mode == "Julia" ) z = #pixel c = @startseed endif float x = real( z ) float y = imag( z ) int iter=0 loop: float oldx = x float oldy = y bool formula1 = false iter = iter + 1 ; Determine formula to be used: if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif if (formula1 == true) x = oldx + @multiplier * \ @ampA1 * real(@fcnA1(@freqA1 * oldy + \ @ampB1 * real(@fcnB1(@freqB1 * oldy + \ @ampC1 * real(@fcnC1(@freqC1 * oldy + \ @ampD1 * real(@fcnD1(@freqD1 * oldy )))))))) y = oldy - @multiplier * \ @ampA1 * real(@fcnA1(@freqA1 * oldx + \ @ampB1 * real(@fcnB1(@freqB1 * oldx + \ @ampC1 * real(@fcnC1(@freqC1 * oldx + \ @ampD1 * real(@fcnD1(@freqD1 * oldx )))))))) else x = oldx + @multiplier * \ @ampA2 * real(@fcnA2(@freqA2 * oldy + \ @ampB2 * real(@fcnB2(@freqB2 * oldy + \ @ampC2 * real(@fcnC2(@freqC2 * oldy + \ @ampD2 * real(@fcnD2(@freqD2 * oldy )))))))) y = oldy - @multiplier * \ @ampA2 * real(@fcnA2(@freqA2 * oldx + \ @ampB2 * real(@fcnB2(@freqB2 * oldx + \ @ampC2 * real(@fcnC2(@freqC2 * oldx + \ @ampD2 * real(@fcnD2(@freqD2 * oldx )))))))) endif z = x + flip(y) + c bailout: |z| < @bailout switch: type = "sdc-4Fx2+J" version = @version bailout = @bailout multiplier = @multiplier modValue = @modValue fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 mode = @switchmode switchMode = mode startseed = #pixel default: title = "4Fx2+Julia" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam func fcnA1 default = sinh() caption = "Function A1" endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" endparam float param freqA1 default = 1.0 caption = "Frequency A1" endparam func fcnB1 default = sin() caption = "Function B1" endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" endparam float param freqB1 default = 1.0 caption = "Frequency B1" endparam func fcnC1 default = sin() caption = "Function C1" endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" endparam float param freqC1 default = 1.0 caption = "Frequency C1" endparam func fcnD1 default = cos() caption = "Function D1" endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" endparam float param freqD1 default = 1.0 caption = "Frequency D1" endparam func fcnA2 default = sinh() caption = "Function A2" endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" endparam float param freqA2 default = 1.0 caption = "Frequency A2" endparam func fcnB2 default = cos() caption = "Function B2" endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" endparam float param freqB2 default = 1.0 caption = "Frequency B2" endparam func fcnC2 default = cos() caption = "Function C2" endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" endparam float param freqC2 default = 1.0 caption = "Frequency C2" endparam func fcnD2 default = sin() caption = "Function D2" endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" endparam float param freqD2 default = 1.0 caption = "Frequency D2" endparam } sdc-embrangle { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads init: ;default to Mandelbrot complex c = #pixel complex z = ( 0.0, 0.0 ) if( @mode == "Julia" ) z = #pixel c = @startseed endif float x = real( z ) float y = imag( z ) int iter=0 int seed = random(@randomseed) loop: float oldx = x float oldy = y bool formula1 = false iter = iter + 1 ; Determine formula to be used: if (@version > 0.9) if ( @seq == 1 ) ; First formula formula1 = true elseif ( @seq == 2 ) ; Second formula formula1 = false elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true else formula1 = false endif elseif ( @seq == 0 ); Modulation if (iter % @modBy < @modCmp) formula1 = true else formula1 = false endif endif else if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif endif if (formula1 == true) x = oldx + @multiplier * \ @ampA1 * real(@fcnA1(@freqA1 * oldy + \ @ampB1 * real(@fcnB1(@freqB1 * oldy + \ @ampC1 * real(@fcnC1(@freqC1 * oldy + \ @ampD1 * real(@fcnD1(@freqD1 * oldy )))))))) y = oldy - @multiplier * \ @ampA1 * real(@fcnA1(@freqA1 * oldx + \ @ampB1 * real(@fcnB1(@freqB1 * oldx + \ @ampC1 * real(@fcnC1(@freqC1 * oldx + \ @ampD1 * real(@fcnD1(@freqD1 * oldx )))))))) else x = oldx + @multiplier * \ @ampA2 * real(@fcnA2(@freqA2 * oldy + \ @ampB2 * real(@fcnB2(@freqB2 * oldy + \ @ampC2 * real(@fcnC2(@freqC2 * oldy + \ @ampD2 * real(@fcnD2(@freqD2 * oldy )))))))) y = oldy - @multiplier * \ @ampA2 * real(@fcnA2(@freqA2 * oldx + \ @ampB2 * real(@fcnB2(@freqB2 * oldx + \ @ampC2 * real(@fcnC2(@freqC2 * oldx + \ @ampD2 * real(@fcnD2(@freqD2 * oldx )))))))) endif z = x + flip(y) + c bailout: |z| < @bailout switch: type = "sdc-embrangle" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp randomseed = @randomseed prob1 = @prob1 fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 mode = @switchmode switchMode = mode startseed = #pixel default: title = "Embrangle" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.0 visible = false endparam param mode caption = "Current Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @seq==0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 endparam float param prob1 caption = "Prob for Func 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam heading caption = "Function 1" visible = @seq == 0 || @seq == 1 endheading func fcnA1 default = sinh() caption = "Function A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqA1 default = 1.0 caption = "Frequency A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnB1 default = sin() caption = "Function B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqB1 default = 1.0 caption = "Frequency B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnC1 default = sin() caption = "Function C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqC1 default = 1.0 caption = "Frequency C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnD1 default = cos() caption = "Function D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqD1 default = 1.0 caption = "Frequency D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam heading caption = "Function 2" visible = @seq == 0 || @seq == 2 endheading func fcnA2 default = sinh() caption = "Function A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqA2 default = 1.0 caption = "Frequency A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnB2 default = cos() caption = "Function B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqB2 default = 1.0 caption = "Frequency B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnC2 default = cos() caption = "Function C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqC2 default = 1.0 caption = "Frequency C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnD2 default = sin() caption = "Function D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqD2 default = 1.0 caption = "Frequency D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam } sdc-kology { ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads global: init: ;default to Julia complex z = #pixel complex c = @startseed if( @mode == "Julia" ) c = #pixel z = ( 0.0, 0.0 ) endif float x = real( z ) float y = imag( z ) int iter=0 int seed = random(@randomseed) loop: float oldx = x float oldy = y bool formula1 = false iter = iter + 1 ; Determine formula to be used: if (@version > 0.9) if ( @seq == 1 ) ; First formula formula1 = true elseif ( @seq == 2 ) ; Second formula formula1 = false elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true else formula1 = false endif elseif ( @seq == 0 ); Modulation if (iter % @modBy < @modCmp) formula1 = true else formula1 = false endif if (@invertMod == true) formula1 = @formula1 endif endif else if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif endif if (formula1 == true) float x1 = @ampA1 * real(@fcnA1(@freqA1 * oldy + \ @ampB1 * real(@fcnB1(@freqB1 * oldy )))) float x2 = @ampC1 * real(@fcnC1(@freqC1 * oldy + \ @ampD1 * real(@fcnD1(@freqD1 * oldy )))) float y1 = @ampA1 * real(@fcnA1(@freqA1 * oldx + \ @ampB1 * real(@fcnB1(@freqB1 * oldx )))) float y2 = @ampC1 * real(@fcnC1(@freqC1 * oldx + \ @ampD1 * real(@fcnD1(@freqD1 * oldx )))) float xx float yy if ( @op11 == 0 ) ; + xx = x1 + x2 elseif ( @op11 == 1 ) ; - xx = x1 - x2 else ; * xx = x1 * x2 endif if ( @op12 == 0 ) ; + yy = y1 + y2 elseif ( @op12 == 1 ) ; - yy = y1 - y2 else ; * yy = y1 * y2 endif x = oldx + @multiplier * xx y = oldy - @multiplier * yy else float x1 = @ampA2 * real(@fcnA2(@freqA2 * oldy + \ @ampB2 * real(@fcnB2(@freqB2 * oldy )))) float x2 = @ampC2 * real(@fcnC2(@freqC2 * oldy + \ @ampD2 * real(@fcnD2(@freqD2 * oldy )))) float y1 = @ampA2 * real(@fcnA2(@freqA2 * oldx + \ @ampB2 * real(@fcnB2(@freqB2 * oldx )))) float y2 = @ampC2 * real(@fcnC2(@freqC2 * oldx + \ @ampD2 * real(@fcnD2(@freqD2 * oldx )))) if ( @op21 == 0 ) ; + xx = x1 + x2 elseif ( @op21 == 1 ) ; - xx = x1 - x2 else ; * xx = x1 * x2 endif if ( @op22 == 0 ) ; + yy = y1 + y2 elseif ( @op22 == 1 ) ; - yy = y1 - y2 else ; * yy = y1 * y2 endif x = oldx + @multiplier * xx y = oldy - @multiplier * yy endif z = x + flip(y) + c bailout: |z| < @bailout switch: type = "sdc-kology" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp invertMod = @invertMod randomseed = @randomseed prob1 = @prob1 fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 mode = @switchmode switchMode = mode startseed = #pixel default: title = "Kology" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @seq==0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 endparam float param prob1 caption = "Prob for Func 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 endparam bool param invertMod caption = "Invert Sequence?" default = false visible = @seq==0 || @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam heading caption = "Function 1" visible= @seq != 2 endheading param op11 caption = "Fcn 1, Op 1" default = 0 enum = "+" "-" "*" visible= @seq != 2 endparam param op12 caption = "Fcn 1, Op 2" default = 0 enum = "+" "-" "*" visible= @seq != 2 endparam func fcnA1 default = sinh() caption = "Function A1" visible= @seq != 2 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" visible= @seq != 2 endparam float param freqA1 default = 1.0 caption = "Frequency A1" visible= @seq != 2 endparam func fcnB1 default = sin() caption = "Function B1" visible= @seq != 2 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" visible= @seq != 2 endparam float param freqB1 default = 1.0 caption = "Frequency B1" visible= @seq != 2 endparam func fcnC1 default = sin() caption = "Function C1" visible= @seq != 2 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" visible= @seq != 2 endparam float param freqC1 default = 1.0 caption = "Frequency C1" visible= @seq != 2 endparam func fcnD1 default = cos() caption = "Function D1" visible= @seq != 2 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" visible= @seq != 2 endparam float param freqD1 default = 1.0 caption = "Frequency D1" visible= @seq != 2 endparam heading caption = "Function2" visible= @seq != 1 endheading param op21 caption = "Fcn 2, Op 1" default = 0 enum = "+" "-" "*" visible= @seq != 1 endparam param op22 caption = "Fcn 2, Op 2" default = 0 enum = "+" "-" "*" visible= @seq != 1 endparam func fcnA2 default = sinh() caption = "Function A2" visible= @seq != 1 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" visible= @seq != 1 endparam float param freqA2 default = 1.0 caption = "Frequency A2" visible= @seq != 1 endparam func fcnB2 default = cos() caption = "Function B2" visible= @seq != 1 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" visible= @seq != 1 endparam float param freqB2 default = 1.0 caption = "Frequency B2" visible= @seq != 1 endparam func fcnC2 default = cos() caption = "Function C2" visible= @seq != 1 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" visible= @seq != 1 endparam float param freqC2 default = 1.0 caption = "Frequency C2" visible= @seq != 1 endparam func fcnD2 default = sin() caption = "Function D2" visible= @seq != 1 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" visible= @seq != 1 endparam float param freqD2 default = 1.0 caption = "Frequency D2" visible= @seq != 1 endparam } sdc-centiolier { ; Susan D. Chambless, May, 2003 ; based on DM0 by Denis Magar init: ; default to Mandelbrot complex c = @initfcn(#pixel) complex z = ( 0.0, 0.0 ) if( @mode == "Julia" ) z = @initfcn(#pixel) c = @startseed endif loop: if @op1 == 0 pp1 = z + c elseif @op1 == 1 pp1 = z - c elseif @op1 == 2 pp1 = z * c elseif @op1 == 3 pp1 = z / c else pp1 = z ^ c endif if (@recip == 1 || @recip == 3) if pp1 == 0 pp1 = 1e-20 endif pp1 = 1/pp1 endif if @op2 == 0 pp2 = c + fn1(fn2(pp1)) elseif @op2 == 1 pp2 = c - fn1(fn2(pp1)) elseif @op2 == 2 pp2 = c * fn1(fn2(pp1)) elseif @op2 == 3 pp2 = c / fn1(fn2(pp1)) else pp2 = c ^ fn1(fn2(pp1)) endif if (@recip == 2 || @recip == 3) if pp2 == 0 pp2 = 1e-20 endif pp2 = 1/pp2 endif z = pp2 bailout: |z|<=@bailout switch: type = "sdc-centiolier" version = @version mode = @switchmode switchMode = mode bailout = @bailout startseed = #pixel op1 = @op1 op2 = @op2 recip = @recip initfcn = @initfcn fn1 = @fn1 fn2 = @fn2 default: title="Centiolier" method = multipass periodicity = 0 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" visible = false endparam param bailout caption="Bailout" default=4.0 endparam param startseed caption="Julia Seed" default=(0.5,0.0) endparam param op1 caption = "Operator 1" enum = "+" "-" "*" "/" "^ (exponent)" hint = "P1 [op2] fn1(fn2(z [op1] P1))" default = 0 endparam param op2 caption = "Operator 2" enum = "+" "-" "*" "/" "^ (exponent)" hint = "P1 [op2] fn1(fn2(z [op1] P1))" default = 2 endparam param recip caption="Reciprocate" enum = "None" "Recip Oper1" "Recip Oper2" "Both" default = 0 endparam func initfcn caption = "Initial Function" default = ident() endfunc func fn1 caption = "Function 1" default = asin() endfunc func fn2 caption = "Function 2" default = sqr() endfunc } sdc-tobology { ; ; Kology, significantly enhanced by Toby, August, 2003 ; init: ;default to Julia complex z = #pixel complex c = @startseed if( @mode == "Julia" ) c = #pixel z = ( 0.0, 0.0 ) endif float x = real(@fn3(z^@exx)) float y = imag(@fn4(z^@exy)) float xx = 0.0 float yy = 0.0 float aa = 0.0 float bb = 0.0 float cc = 0.0 float dd = 0.0 float ee = 0.0 float ff = 0.0 float gg = 0.0 float hh = 0.0 int iter = 0 loop: float oldx = x float oldy = y bool formula1 = false iter = iter + 1 ; Determine formula to be used: if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif if @cng1 == true ii = aa^@exp1 - @ampB1 else ii = aa^@exp1 + @ampB1 endif if @cng2 == true jj = cc^@exp3 - @ampD1 else jj = cc^@exp3 + @ampD1 endif if @cng3 == true kk = ee^@exp5 - @ampB3 else kk = ee^@exp5 + @ampB3 endif if @cng4 == true ll = gg^@exp7 - @ampD3 else ll = gg^@exp7 + @ampD3 endif if @cng5 == true mm = aa^@exp1 - @ampB2 else mm = aa^@exp1 + @ampB2 endif if @cng6 == true nn = cc^@exp3 - @ampD2 else nn = cc^@exp3 + @ampD2 endif if @cng7 == true oo = ee^@exp5 - @ampB4 else oo = ee^@exp5 + @ampB4 endif if @cng8 == true pp = gg^@exp7 - @ampD4 else pp = gg^@exp7 + @ampD4 endif if @style1 == true aa = oldx else aa = oldy endif if @style2 == true bb = oldx else bb = oldy endif if @style3 == true cc = oldx else cc = oldy endif if @style4 == true dd = oldx else dd = oldy endif if @style5 == true ee = oldy else ee = oldx endif if @style6 == true ff = oldy else ff = oldx endif if @style7 == true gg = oldy else gg = oldx endif if @style8 == true hh = oldy else hh = oldx endif if (formula1 == true) float x1 = @ampA1 * real(@fcnA1(@freqA1 * ii\ * real(@fcnB1(@freqB1 * bb^@exp2 )))) float x2 = @ampC1 * real(@fcnC1(@freqC1 * jj \ * real(@fcnD1(@freqD1 * dd^@exp4 )))) float y1 = @ampA3 * real(@fcnA3(@freqA3 * kk \ * real(@fcnB3(@freqB3 * ff^@exp6 )))) float y2 = @ampC3 * real(@fcnC3(@freqC3 * ll \ * real(@fcnD3(@freqD3 * hh^@exp8 )))) if @op11 == "1+2" ; + xx = x1 + x2 elseif @op11 == "1-2" ; - xx = x1 - x2 elseif @op11 == "2-1" ; - xx = x2 - x1 elseif @op11 == "1*2" ; * xx = x1 * x2 elseif @op11 == "1/2" ; / xx = x1 / x2 elseif @op11 == "2/1" ; / xx = x2 / x1 elseif @op11 == "1^2" ; ^ xx = x1 ^ x2 elseif @op11 == "2^1" ; ^ xx = x2 ^ x1 endif if @op12 == "1+2" ; + yy = y1 + y2 elseif @op12 == "1-2" ; - yy = y1 - y2 elseif @op12 == "2-1" ; - yy = y2 - y1 elseif @op12 == "1*2" ; * yy = y1 * y2 elseif @op12 == "1/2" ; / yy = y1 / y2 elseif @op12 == "2/1" ; / yy = y2 / y1 elseif @op12 == "1^2" ; ^ yy = y1 ^ y2 elseif @op12 == "2^1" ; ^ yy = y2 ^ y1 endif x = oldx + @multiplier * xx y = oldy - @multiplier * yy else float x1 = @ampA2 * real(@fcnA2(@freqA2 * mm \ * real(@fcnB2(@freqB2 * bb^@exp2 )))) float x2 = @ampC2 * real(@fcnC2(@freqC2 * nn \ * real(@fcnD2(@freqD2 * dd^@exp4 )))) float y1 = @ampA4 * real(@fcnA4(@freqA4 * oo \ * real(@fcnB4(@freqB4 * ff^@exp6 )))) float y2 = @ampC4 * real(@fcnC4(@freqC4 * pp \ * real(@fcnD4(@freqD4 * hh^@exp8 )))) if @op21 == "1+2" ; + xx = x1 + x2 elseif @op21 == "1-2" ; - xx = x1 - x2 elseif @op21 == "2-1" ; - xx = x2 - x1 elseif @op21 == "1*2" ; * xx = x1 * x2 elseif @op21 == "1/2" ; / xx = x1 / x2 elseif @op21 == "2/1" ; / xx = x2 / x1 elseif @op21 == "1^2" ; ^ xx = x1 ^ x2 elseif @op21 == "2^1" ; ^ xx = x2 ^ x1 endif if @op22 == "1+2" ; + yy = y1 + y2 elseif @op22 == "1-2" ; - yy = y1 - y2 elseif @op22 == "2-1" ; - yy = y2 - y1 elseif @op22 == "1*2" ; * yy = y1 * y2 elseif @op22 == "1/2" ; / yy = y1 / y2 elseif @op22 == "2/1" ; / yy = y2 / y1 elseif @op22 == "1^2" ; ^ yy = y1 ^ y2 elseif @op22 == "2^1" ; ^ yy = y2 ^ y1 endif x = oldx + @multiplier * xx y = oldy - @multiplier * yy endif if @op2 =="+" if @op1 == "+" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op1 == "-" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op1 == "*" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op1 == "/" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op1 == "^" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op2 =="-" if @op1 == "+" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op1 == "-" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op1 == "*" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op1 == "/" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op1 == "^" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op2 =="*" if @op1 == "+" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op1 == "-" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op1 == "*" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op1 == "/" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op1 == "^" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op2 =="/" if @op1 == "+" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op1 == "-" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op1 == "*" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op1 == "/" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op1 == "^" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op2 =="^" if @op1 == "+" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op1 == "-" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op1 == "*" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op1 == "/" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op1 == "^" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif endif bailout: |z| < @bailout switch: type = "sdc-tobology" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 fcnA3 = @fcnA3 ampA3 = @ampA3 freqA3 = @freqA3 fcnB3 = @fcnB3 ampB3 = @ampB3 freqB3 = @freqB3 fcnC3 = @fcnC3 ampC3 = @ampC3 freqC3 = @freqC3 fcnD3 = @fcnD3 ampD3 = @ampD3 freqD3 = @freqD3 fcnA4 = @fcnA4 ampA4 = @ampA4 freqA4 = @freqA4 fcnB4 = @fcnB4 ampB4 = @ampB4 freqB4 = @freqB4 fcnC4 = @fcnC4 ampC4 = @ampC4 freqC4 = @freqC4 fcnD4 = @fcnD4 ampD4 = @ampD4 freqD4 = @freqD4 mode = @switchmode switchMode = mode startseed = #pixel style1 = @style1 style2 = @style2 style3 = @style3 style4 = @style4 style5 = @style5 style6 = @style6 style7 = @style7 style8 = @style8 op1 = @op1 op2 = @op2 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 cng1 = @cng1 cng2 = @cng2 cng3 = @cng3 cng4 = @cng4 cng5 = @cng5 cng6 = @cng6 cng7 = @cng7 cng8 = @cng8 exp1 = @exp1 exp2 = @exp2 exp3 = @exp3 exp4 = @exp4 exp5 = @exp5 exp6 = @exp6 exp7 = @exp7 exp8 = @exp8 exx = @exx px = @px exy = @exy py = @py ex1 = @ex1 ey1 = @ey1 mx1 = @mx1 my1 = @my1 px1 = @px1 py1 = @py1 pc1 = @pc1 default: title = "Tobology" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" default = 0 caption = "Formula Sequence" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam heading caption = "Function 1" visible = @seq == 0 || @seq == 1 endheading param op11 caption = "Fcn 1, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam param op12 caption = "Fcn 1, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnA1 default = sinh() caption = "Function A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqA1 default = 1.0 caption = "Frequency A1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnB1 default = sin() caption = "Function B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqB1 default = 1.0 caption = "Frequency B1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnC1 default = sin() caption = "Function C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqC1 default = 1.0 caption = "Frequency C1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnD1 default = cos() caption = "Function D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqD1 default = 1.0 caption = "Frequency D1" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam heading caption = "Function2" visible = @seq == 0 || @seq == 2 endheading param op21 caption = "Fcn 2, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam param op22 caption = "Fcn 2, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnA2 default = sinh() caption = "Function A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqA2 default = 1.0 caption = "Frequency A2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnB2 default = cos() caption = "Function B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqB2 default = 1.0 caption = "Frequency B2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnC2 default = cos() caption = "Function C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqC2 default = 1.0 caption = "Frequency C2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnD2 default = sin() caption = "Function D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqD2 default = 1.0 caption = "Frequency D2" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam heading caption = "Function 3" visible = @seq == 0 || @seq == 1 endheading func fcnA3 default = sinh() caption = "Function A3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampA3 default = 1.0 caption = "Amplitude A3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqA3 default = 1.0 caption = "Frequency A3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnB3 default = sin() caption = "Function B3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampB3 default = 1.0 caption = "Amplitude B3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqB3 default = 1.0 caption = "Frequency B3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnC3 default = sin() caption = "Function C3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampC3 default = 1.0 caption = "Amplitude C3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqC3 default = 1.0 caption = "Frequency C3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam func fcnD3 default = cos() caption = "Function D3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endfunc float param ampD3 default = 1.0 caption = "Amplitude D3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam float param freqD3 default = 1.0 caption = "Frequency D3" enabled = @seq == 0 || @seq == 1 visible = @seq == 0 || @seq == 1 endparam heading caption = "Function4" visible = @seq == 0 || @seq == 2 endheading func fcnA4 default = sinh() caption = "Function A4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampA4 default = 1.0 caption = "Amplitude A4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqA4 default = 1.0 caption = "Frequency A4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnB4 default = cos() caption = "Function B4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampB4 default = 1.0 caption = "Amplitude B4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqB4 default = 1.0 caption = "Frequency B4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnC4 default = cos() caption = "Function C4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampC4 default = 1.0 caption = "Amplitude C4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqC4 default = 1.0 caption = "Frequency C4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam func fcnD4 default = sin() caption = "Function D4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endfunc float param ampD4 default = 1.0 caption = "Amplitude D4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam float param freqD4 default = 1.0 caption = "Frequency D4" enabled = @seq == 0 || @seq == 2 visible = @seq == 0 || @seq == 2 endparam heading caption = "Special Tobology Stuff" endheading bool param opvar caption = "Operator Params" default = false endparam bool param expvar caption = "Exponent Params" default = false endparam bool param shapevar caption = "Shape Params" default = false endparam bool param stylevar caption = "Style Params" default = false endparam bool param globfcnvar caption = "Global Functions" default = false endparam heading caption = "Operator Parameters" visible = @opvar endheading param op1 caption = "Operator 1" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param op2 caption = "Operator 2" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param cng1 caption = "OpChange 1" default = false visible = @opvar endparam param cng2 caption = "OpChange 2" default = false visible = @opvar endparam param cng3 caption = "OpChange 3" default = false visible = @opvar endparam param cng4 caption = "OpChange 4" default = false visible = @opvar endparam param cng5 caption = "OpChange 5" default = false visible = @opvar endparam param cng6 caption = "OpChange 6" default = false visible = @opvar endparam param cng7 caption = "OpChange 7" default = false visible = @opvar endparam param cng8 caption = "OpChange 8" default = false visible = @opvar endparam heading caption = "Exponent Parameters" visible = @expvar endheading complex param exp1 caption = "Exponent 1" default = (1.0,0.0) visible = @expvar endparam complex param exp2 caption = "Exponent 2" default = (1.0,0.0) visible = @expvar endparam complex param exp3 caption = "Exponent 3" default = (1.0,0.0) visible = @expvar endparam complex param exp4 caption = "Exponent 4" default = (1.0,0.0) visible = @expvar endparam complex param exp5 caption = "Exponent 5" default = (1.0,0.0) visible = @expvar endparam complex param exp6 caption = "Exponent 6" default = (1.0,0.0) visible = @expvar endparam complex param exp7 caption = "Exponent 7" default = (1.0,0.0) visible = @expvar endparam complex param exp8 caption = "Exponent 8" default = (1.0,0.0) visible = @expvar endparam float param exx caption = "X Exponent" default = 1.0 visible = @expvar endparam float param exy caption = "Y Exponent" default = 1.0 visible = @expvar endparam heading caption = "Shape Parameters" visible = @shapevar endheading complex param ex1 caption = "X Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param mx1 caption = "X Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param px1 caption = "X Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param ey1 caption = "Y Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param my1 caption = "Y Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param py1 caption = "Y Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param pc1 caption = "C Shape" default = (0.0,0.0) visible = @shapevar endparam heading caption = "Style Parameters" visible = @stylevar endheading param style1 caption = "Variable 1" default = false visible = @stylevar endparam param style2 caption = "Variable 2" default = false visible = @stylevar endparam param style3 caption = "Variable 3" default = false visible = @stylevar endparam param style4 caption = "Variable 4" default = false visible = @stylevar endparam param style5 caption = "Variable 5" default = false visible = @stylevar endparam param style6 caption = "Variable 6" default = false visible = @stylevar endparam param style7 caption = "Variable 7" default = false visible = @stylevar endparam param style8 caption = "Variable 8" default = false visible = @stylevar endparam heading caption = "Global Functions" visible = @globfcnvar endheading func fn1 caption = "Global Function 1" default = ident () visible = @globfcnvar endfunc func fn2 caption = "Global Function 2" default = flip () visible = @globfcnvar endfunc func fn3 caption = "Wild Function 1" default = log () visible = @globfcnvar endfunc func fn4 caption = "Wild Function 2" default = tanh () visible = @globfcnvar endfunc } sdc-4DMandJul { global: init: ;default to Mandelbrot complex c = #pixel complex z = @initz if( @mode == "Julia" ) z = #pixel c = @startseed endif float x = 0.0 float y = 0.0 loop: z = @fcn(z^@power) + c if ( @xaxis == 0 ) ; Zr x = real(z) elseif ( @xaxis == 1 ) ; Zi x = imag(z) elseif ( @xaxis == 2 ) ; Cr x = real(c) else ; Ci x = imag(c) endif if ( @yaxis == 0 ) ; Zr y = real(z) elseif ( @yaxis == 1 ) ; Zi y = imag(z) elseif ( @yaxis == 2 ) ; Cr y = real(c) else ; Ci y = imag(c) endif z = x + flip(y) bailout: |z| < @bailout switch: type = "sdc-4DMandJul" version = @version bailout = @bailout startseed = #pixel xaxis = @xaxis yaxis = @yaxis mode = @switchmode switchMode = @mode power = @power fcn = @fcn default: title = "4D Mandelbrot" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading float param bailout caption = "Bailout" default = 4.0 endparam complex param startseed caption = "Julia seed" default = ( 0.96875, 0.8625 ) visible = @mode==1 endparam complex param initz caption = "Initial Z" default = (0.0, 0.0) endparam complex param power caption = "Power" default = ( 2.0, 0.0 ) endparam func fcn caption = "Function" default = ident() endfunc param xaxis caption = "X-axis" default = 0 enum = "Zr" "Zi" "Cr" "Ci" endparam param yaxis caption = "Y-axis" default = 1 enum = "Zr" "Zi" "Cr" "Ci" endparam } sdc+gnd-cquat2 { ; based on formulae by Junichi Sato ; Susan D. Chambless, April, 2004 ; help on the Julia method by Gilles Nadeau, April, 2004 global: init: ; initmethod 0 complex q0 = #pixel complex q1 = @p1 complex q2 = @p2 complex q3 = @p3 complex z0 = q0 complex z1 = q1 complex z2 = q2 complex z3 = q3 if ( @initmethod == 1 ) q0 = @p1 q1 = #pixel q2 = @p2 q3 = @p3 elseif ( @initmethod == 2 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 3 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 4 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 5 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 6 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 elseif ( @initmethod == 7 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 8 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 9 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 endif q0 = @initfcn0(q0) q1 = @initfcn1(q1) q2 = @initfcn2(q2) q3 = @initfcn3(q3) if ( @loopmethod != 0 ) z0 = (0.0, 0.0) z1 = (0.0, 0.0) z2 = (0.0, 0.0) z3 = (0.0, 0.0) endif if ( @mode == "Julia" ) z0 = q0 z1 = q1 z2 = q2 z3 = q3 if ( @jvar == 0 ) q0 = q1 = q2 = q3 = @seed0 elseif ( @jvar == 1 ) q0 = @seed0 q1 = @seed1 q2 = @seed2 q3 = @seed3 elseif ( @jvar == 2 ) q0 = @seed0 q1 = @p1 q2 = @p2 q3 = @p3 endif endif loop: z0 = @loopfcn0(z0) z1 = @loopfcn1(z1) z2 = @loopfcn2(z2) z3 = @loopfcn3(z3) if ( @loopmethod == 0 ) complex w0 = z0*z0 + z1*z1 + z2*z2 + z3*z3 complex w1 = 2*z0*z1 complex w2 = 2*z0*z2 complex w3 = 2*z0*z3 z0 = w0 + q0 z1 = w1 + q1 z2 = w2 + q2 z3 = w3 + q3 elseif ( @loopmethod == 1 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 z0 = x0*x0 - x1*x1 - x2*x2 - x3*x3 z1 = 2*x0*x1 z2 = 2*x0*x2 z3 = 2*x0*x3 elseif ( @loopmethod == 2 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex y0 = z0 - q0 complex y1 = z1 - q1 complex y2 = z2 - q2 complex y3 = z3 - q3 z0 = x0*y0 - x1*y1 - x2*y2 - x3*y3 z1 = x0*y1 + x1*y0 + x2*y3 - x3*y2 z2 = x0*y2 + x2*y0 + x3*y1 - x1*y3 z3 = x0*y3 + x3*y0 + x1*y2 - x2*y1 elseif ( @loopmethod == 3 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = x0*cx0 - x1*cx1 - x2*cx2 - x3*cx3 z1 = x0*cx1 + x1*cx0 + x2*cx3 - x3*cx2 z2 = x0*cx2 + x2*cx0 + x3*cx1 - x1*cx3 z3 = x0*cx3 + x3*cx0 + x1*cx2 - x2*cx1 elseif ( @loopmethod == 4 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = x0*cy0 - x1*cy1 - x2*cy2 - x3*cy3 z1 = x0*cy1 + x1*cy0 + x2*cy3 - x3*cy2 z2 = x0*cy2 + x2*cy0 + x3*cy1 - x1*cy3 z3 = x0*cy3 + x3*cy0 + x1*cy2 - x2*cy1 elseif ( @loopmethod == 5 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = cx0*cx0 - cx1*cx1 - cx2*cx2 - cx3*cx3 z1 = 2*cx0*cx1 z2 = 2*cx0*cx2 z3 = 2*cx0*cx3 elseif ( @loopmethod == 6 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = cx0*cy0 - cx1*cy1 - cx2*cy2 - cx3*cy3 z1 = cx0*cy1 + cx1*cy0 + cx2*cy3 - cx3*cy2 z2 = cx0*cy2 + cx2*cy0 + cx3*cy1 - cx1*cy3 z3 = cx0*cy3 + cx3*cy0 + cx1*cy2 - cx2*cy1 endif z0 = @finfcn0(z0) z1 = @finfcn1(z1) z2 = @finfcn2(z2) z3 = @finfcn3(z3) z = z0 + z1 + z2 + z3 bailout: |z0| + |z1| + |z2| + |z3| < @bailout default: title = "CQuat2" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param initmethod caption = "Init Method" enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam param loopmethod caption = "Loop Method" enum = "0 - n" "1 - XXn" "2 - XYn" "3 - XcXn" "4 - XcYn" "5 - cXcXn" "6 - cXcYn" endparam float param bailout caption = "Bailout" default = 16.0 endparam param jvar caption = "Julia Variant" enum = "6-dimensional" "Susan's Original" "Gilles' Method" default = 1 endparam complex param seed0 caption = "Julia Seed 0" default = ( 1.0, 0.0 ) visible = @mode == 1 endparam complex param seed1 caption = "Julia Seed 1" default = ( -0.48, 0.05 ) visible = @jvar == 1 endparam complex param seed2 caption = "Julia Seed 2" default = ( -0.43, 0.22 ) visible = @jvar == 1 endparam complex param seed3 caption = "Julia Seed 3" default = ( 0.25, 0.35 ) visible = @jvar == 1 endparam complex param p1 caption = "Param 1" default = (0.0, 0.0) endparam complex param p2 caption = "Param 2" default = (0.0, 0.0) endparam complex param p3 caption = "Param 3" default = (0.0, 0.0) endparam func initfcn0 caption = "Init Function 0" default = ident() endfunc func initfcn1 caption = "Init Function 1" default = ident() endfunc func initfcn2 caption = "Init Function 2" default = ident() endfunc func initfcn3 caption = "Init Function 3" default = ident() endfunc func loopfcn0 caption = "Loop Function 0" default = ident() endfunc func loopfcn1 caption = "Loop Function 1" default = ident() endfunc func loopfcn2 caption = "Loop Function 2" default = ident() endfunc func loopfcn3 caption = "Loop Function 3" default = ident() endfunc func finfcn0 caption = "Final Function 0" default = ident() endfunc func finfcn1 caption = "Final Function 1" default = ident() endfunc func finfcn2 caption = "Final Function 2" default = ident() endfunc func finfcn3 caption = "Final Function 3" default = ident() endfunc switch: type = "sdc+gnd-cquat2" version = @version bailout = @bailout mode = @switchmode switchMode = @mode initmethod = @initmethod loopmethod = @loopmethod p1 = @p1 p2 = @p2 p3 = @p3 jvar = @jvar seed0 = #pixel seed1 = @seed1 seed2 = @seed2 seed3 = @seed3 initfcn0 = @initfcn0 initfcn1 = @initfcn1 initfcn2 = @initfcn2 initfcn3 = @initfcn3 loopfcn0 = @loopfcn0 loopfcn1 = @loopfcn1 loopfcn2 = @loopfcn2 loopfcn3 = @loopfcn3 finfcn0 = @finfcn0 finfcn1 = @finfcn1 finfcn2 = @finfcn2 finfcn3 = @finfcn3 } sdc+gnd-biquat { ; based on formulae by Junichi Sato ; Susan D. Chambless, April, 2004 ; help on the Julia method by Gilles Nadeau, April, 2004 ; Corrections to CQuat2, Gilles Nadeau, May, 2004 global: init: ; initmethod 0 complex q0 = #pixel complex q1 = @p1 complex q2 = @p2 complex q3 = @p3 complex z0 = q0 complex z1 = q1 complex z2 = q2 complex z3 = q3 if ( @initmethod == 1 ) q0 = @p1 q1 = #pixel q2 = @p2 q3 = @p3 elseif ( @initmethod == 2 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 3 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 4 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 5 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 6 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 elseif ( @initmethod == 7 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 8 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 9 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 endif q0 = @initfcn0(q0) q1 = @initfcn1(q1) q2 = @initfcn2(q2) q3 = @initfcn3(q3) if ( @loopmethod != 0 ) z0 = (0.0, 0.0) z1 = (0.0, 0.0) z2 = (0.0, 0.0) z3 = (0.0, 0.0) endif if ( @mode == "Julia" ) z0 = q0 z1 = q1 z2 = q2 z3 = q3 if ( @jvar == 0 ) q0 = q1 = q2 = q3 = @seed0 elseif ( @jvar == 1 ) q0 = @seed0 q1 = @seed1 q2 = @seed2 q3 = @seed3 elseif ( @jvar == 2 ) q0 = @seed0 q1 = @p1 q2 = @p2 q3 = @p3 endif endif loop: z0 = @loopfcn0(z0) z1 = @loopfcn1(z1) z2 = @loopfcn2(z2) z3 = @loopfcn3(z3) if ( @loopmethod == 0 ) complex w0 = z0*z0 - z1*z1 - z2*z2 - z3*z3 complex w1 = 2*z0*z1 complex w2 = 2*z0*z2 complex w3 = 2*z0*z3 z0 = w0 + q0 z1 = w1 + q1 z2 = w2 + q2 z3 = w3 + q3 elseif ( @loopmethod == 1 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 z0 = x0*x0 - x1*x1 - x2*x2 - x3*x3 z1 = 2*x0*x1 z2 = 2*x0*x2 z3 = 2*x0*x3 elseif ( @loopmethod == 2 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex y0 = z0 - q0 complex y1 = z1 - q1 complex y2 = z2 - q2 complex y3 = z3 - q3 z0 = x0*y0 - x1*y1 - x2*y2 - x3*y3 z1 = x0*y1 + x1*y0 + x2*y3 - x3*y2 z2 = x0*y2 + x2*y0 + x3*y1 - x1*y3 z3 = x0*y3 + x3*y0 + x1*y2 - x2*y1 elseif ( @loopmethod == 3 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = x0*cx0 - x1*cx1 - x2*cx2 - x3*cx3 z1 = x0*cx1 + x1*cx0 + x2*cx3 - x3*cx2 z2 = x0*cx2 + x2*cx0 + x3*cx1 - x1*cx3 z3 = x0*cx3 + x3*cx0 + x1*cx2 - x2*cx1 elseif ( @loopmethod == 4 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = x0*cy0 - x1*cy1 - x2*cy2 - x3*cy3 z1 = x0*cy1 + x1*cy0 + x2*cy3 - x3*cy2 z2 = x0*cy2 + x2*cy0 + x3*cy1 - x1*cy3 z3 = x0*cy3 + x3*cy0 + x1*cy2 - x2*cy1 elseif ( @loopmethod == 5 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = cx0*cx0 - cx1*cx1 - cx2*cx2 - cx3*cx3 z1 = 2*cx0*cx1 z2 = 2*cx0*cx2 z3 = 2*cx0*cx3 elseif ( @loopmethod == 6 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = cx0*cy0 - cx1*cy1 - cx2*cy2 - cx3*cy3 z1 = cx0*cy1 + cx1*cy0 + cx2*cy3 - cx3*cy2 z2 = cx0*cy2 + cx2*cy0 + cx3*cy1 - cx1*cy3 z3 = cx0*cy3 + cx3*cy0 + cx1*cy2 - cx2*cy1 endif z0 = @finfcn0(z0) z1 = @finfcn1(z1) z2 = @finfcn2(z2) z3 = @finfcn3(z3) z = z0 + z1 + z2 + z3 bailout: |z0| + |z1| + |z2| + |z3| < @bailout default: title = "BiQuat" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param initmethod caption = "Init Method" enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam param loopmethod caption = "Loop Method" enum = "0 - n" "1 - XXn" "2 - XYn" "3 - XcXn" "4 - XcYn" "5 - cXcXn" "6 - cXcYn" endparam float param bailout caption = "Bailout" default = 16.0 endparam param jvar caption = "Julia Variant" enum = "6-dimensional" "Susan's Original" "Gilles' Method" default = 1 endparam complex param seed0 caption = "Julia Seed 0" default = ( 1.0, 0.0 ) visible = @mode == 1 endparam complex param seed1 caption = "Julia Seed 1" default = ( -0.48, 0.05 ) visible = @jvar == 1 endparam complex param seed2 caption = "Julia Seed 2" default = ( -0.43, 0.22 ) visible = @jvar == 1 endparam complex param seed3 caption = "Julia Seed 3" default = ( 0.25, 0.35 ) visible = @jvar == 1 endparam complex param p1 caption = "Param 1" default = (0.0, 0.0) endparam complex param p2 caption = "Param 2" default = (0.0, 0.0) endparam complex param p3 caption = "Param 3" default = (0.0, 0.0) endparam func initfcn0 caption = "Init Function 0" default = ident() endfunc func initfcn1 caption = "Init Function 1" default = ident() endfunc func initfcn2 caption = "Init Function 2" default = ident() endfunc func initfcn3 caption = "Init Function 3" default = ident() endfunc func loopfcn0 caption = "Loop Function 0" default = ident() endfunc func loopfcn1 caption = "Loop Function 1" default = ident() endfunc func loopfcn2 caption = "Loop Function 2" default = ident() endfunc func loopfcn3 caption = "Loop Function 3" default = ident() endfunc func finfcn0 caption = "Final Function 0" default = ident() endfunc func finfcn1 caption = "Final Function 1" default = ident() endfunc func finfcn2 caption = "Final Function 2" default = ident() endfunc func finfcn3 caption = "Final Function 3" default = ident() endfunc switch: type = "sdc+gnd-biquat" version = @version bailout = @bailout mode = @switchmode switchMode = @mode initmethod = @initmethod loopmethod = @loopmethod p1 = @p1 p2 = @p2 p3 = @p3 jvar = @jvar seed0 = #pixel seed1 = @seed1 seed2 = @seed2 seed3 = @seed3 initfcn0 = @initfcn0 initfcn1 = @initfcn1 initfcn2 = @initfcn2 initfcn3 = @initfcn3 loopfcn0 = @loopfcn0 loopfcn1 = @loopfcn1 loopfcn2 = @loopfcn2 loopfcn3 = @loopfcn3 finfcn0 = @finfcn0 finfcn1 = @finfcn1 finfcn2 = @finfcn2 finfcn3 = @finfcn3 } sdc+gnd-cquatJ { ; based on formulae by Junichi Sato ; Susan D. Chambless, April, 2004 ; help on the Julia method by Gilles Nadeau, April, 2004 ; modified by Gilles Nadeau, May, 2004 init: complex z0 = (0.0, 0.0) complex z1 = (0.0, 0.0) complex z2 = (0.0, 0.0) complex z3 = (0.0, 0.0) complex q0 = @seed0 complex q1 = @seed1 complex q2 = @seed2 complex q3 = @seed3 if ( @initmethod == 0 ) z0 = #pixel z1 = @p1 z2 = @p2 z3 = @p3 elseif ( @initmethod == 1 ) z0 = @p1 z1 = #pixel z2 = @p2 z3 = @p3 elseif ( @initmethod == 2 ) z0 = real(#pixel) + flip(real(@p1)) z1 = imag(#pixel) + flip(imag(@p1)) z2 = @p2 z3 = @p3 elseif ( @initmethod == 3 ) z0 = real(@p1) + flip(real(#pixel)) z1 = imag(@p1) + flip(imag(#pixel)) z2 = @p2 z3 = @p3 elseif ( @initmethod == 4 ) z0 = real(#pixel) + flip(real(@p1)) z1 = imag(@p1) + flip(imag(#pixel)) z2 = @p2 z3 = @p3 elseif ( @initmethod == 5 ) z0 = real(@p1) + flip(real(#pixel)) z1 = imag(#pixel) + flip(imag(@p1)) z2 = @p2 z3 = @p3 elseif ( @initmethod == 6 ) z0 = @p2 z1 = real(#pixel) + flip(real(@p1)) z2 = imag(#pixel) + flip(imag(@p1)) z3 = @p3 elseif ( @initmethod == 7 ) z0 = @p2 z1 = real(@p1) + flip(real(#pixel)) z2 = imag(@p1) + flip(imag(#pixel)) z3 = @p3 elseif ( @initmethod == 8 ) z0 = @p2 z1 = real(#pixel) + flip(real(@p1)) z2 = imag(@p1) + flip(imag(#pixel)) z3 = @p3 elseif ( @initmethod == 9 ) z0 = @p2 z1 = real(@p1) + flip(real(#pixel)) z2 = imag(#pixel) + flip(imag(@p1)) z3 = @p3 endif loop: if ( @loopmethod == 0 ) complex w0 = z0*z0 - z1*z1 - z2*z2 - z3*z3 complex w1 = 2*z0*z1 complex w2 = 2*z0*z2 complex w3 = 2*z0*z3 z0 = w0 + q0 z1 = w1 + q1 z2 = w2 + q2 z3 = w3 + q3 elseif ( @loopmethod == 1 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 z0 = x0*x0 - x1*x1 - x2*x2 - x3*x3 z1 = 2*x0*x1 z2 = 2*x0*x2 z3 = 2*x0*x3 elseif ( @loopmethod == 2 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex y0 = z0 - q0 complex y1 = z1 - q1 complex y2 = z2 - q2 complex y3 = z3 - q3 z0 = x0*y0 - x1*y1 - x2*y2 - x3*y3 z1 = x0*y1 + x1*y0 + x2*y3 - x3*y2 z2 = x0*y2 + x2*y0 + x3*y1 - x1*y3 z3 = x0*y3 + x3*y0 + x1*y2 - x2*y1 elseif ( @loopmethod == 3 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = x0*cx0 - x1*cx1 - x2*cx2 - x3*cx3 z1 = x0*cx1 + x1*cx0 + x2*cx3 - x3*cx2 z2 = x0*cx2 + x2*cx0 + x3*cx1 - x1*cx3 z3 = x0*cx3 + x3*cx0 + x1*cx2 - x2*cx1 elseif ( @loopmethod == 4 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = x0*cy0 - x1*cy1 - x2*cy2 - x3*cy3 z1 = x0*cy1 + x1*cy0 + x2*cy3 - x3*cy2 z2 = x0*cy2 + x2*cy0 + x3*cy1 - x1*cy3 z3 = x0*cy3 + x3*cy0 + x1*cy2 - x2*cy1 elseif ( @loopmethod == 5 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = cx0*cx0 - cx1*cx1 - cx2*cx2 - cx3*cx3 z1 = 2*cx0*cx1 z2 = 2*cx0*cx2 z3 = 2*cx0*cx3 elseif ( @loopmethod == 6 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = cx0*cy0 - cx1*cy1 - cx2*cy2 - cx3*cy3 z1 = cx0*cy1 + cx1*cy0 + cx2*cy3 - cx3*cy2 z2 = cx0*cy2 + cx2*cy0 + cx3*cy1 - cx1*cy3 z3 = cx0*cy3 + cx3*cy0 + cx1*cy2 - cx2*cy1 endif z = z0 + z1 + z2 + z3 bailout: |z0| + |z1| + |z2| + |z3| < @bailout default: title = "CQuatJ" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam heading caption = "Julia Mode" endheading param initmethod caption = "Init Method" enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam param loopmethod caption = "Loop Method" enum = "0 - n" "1 - XXn" "2 - XYn" "3 - XcXn" "4 - XcYn" "5 - cXcXn" "6 - cXcYn" endparam float param bailout caption = "Bailout" default = 16.0 endparam complex param seed0 caption = "(c1, ci)" default = ( -0.745, 0.0 ) endparam complex param seed1 caption = "First (cj, ck)" default = ( 0.113, 0.05 ) endparam complex param seed2 caption = "Second (cj, ck)" default = ( 0.0, 0.0 ) endparam complex param seed3 caption = "Third (cj, ck)" default = ( 0.0, 0.0 ) endparam complex param p1 caption = "First (zj, zk)" default = (0.0, 0.0) endparam complex param p2 caption = "Second (zj, zk)" default = (0.0, 0.0) endparam complex param p3 caption = "Third (zj, zk)" default = (0.0, 0.0) endparam switch: type = "sdc+gnd-cquatM" version = @version bailout = @bailout initmethod = @initmethod loopmethod = @loopmethod p1 = @p1 p2 = @p2 p3 = @p3 } sdc+gnd-cquatM { ; based on formulae by Junichi Sato ; Susan D. Chambless, April, 2004 ; help on the Julia method by Gilles Nadeau, April, 2004 ; modified by Gilles Nadeau, May, 2004 init: complex z0 = (0.0, 0.0) complex z1 = (0.0, 0.0) complex z2 = (0.0, 0.0) complex z3 = (0.0, 0.0) complex q0 = (0.0, 0.0) complex q1 = (0.0, 0.0) complex q2 = (0.0, 0.0) complex q3 = (0.0, 0.0) if ( @initmethod == 0 ) q0 = #pixel q1 = @p1 q2 = @p2 q3 = @p3 elseif ( @initmethod == 1 ) q0 = @p1 q1 = #pixel q2 = @p2 q3 = @p3 elseif ( @initmethod == 2 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 3 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 4 ) q0 = real(#pixel) + flip(real(@p1)) q1 = imag(@p1) + flip(imag(#pixel)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 5 ) q0 = real(@p1) + flip(real(#pixel)) q1 = imag(#pixel) + flip(imag(@p1)) q2 = @p2 q3 = @p3 elseif ( @initmethod == 6 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 elseif ( @initmethod == 7 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 8 ) q0 = @p2 q1 = real(#pixel) + flip(real(@p1)) q2 = imag(@p1) + flip(imag(#pixel)) q3 = @p3 elseif ( @initmethod == 9 ) q0 = @p2 q1 = real(@p1) + flip(real(#pixel)) q2 = imag(#pixel) + flip(imag(@p1)) q3 = @p3 endif loop: if ( @loopmethod == 0 ) complex w0 = z0*z0 - z1*z1 - z2*z2 - z3*z3 complex w1 = 2*z0*z1 complex w2 = 2*z0*z2 complex w3 = 2*z0*z3 z0 = w0 + q0 z1 = w1 + q1 z2 = w2 + q2 z3 = w3 + q3 elseif ( @loopmethod == 1 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 z0 = x0*x0 - x1*x1 - x2*x2 - x3*x3 z1 = 2*x0*x1 z2 = 2*x0*x2 z3 = 2*x0*x3 elseif ( @loopmethod == 2 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex y0 = z0 - q0 complex y1 = z1 - q1 complex y2 = z2 - q2 complex y3 = z3 - q3 z0 = x0*y0 - x1*y1 - x2*y2 - x3*y3 z1 = x0*y1 + x1*y0 + x2*y3 - x3*y2 z2 = x0*y2 + x2*y0 + x3*y1 - x1*y3 z3 = x0*y3 + x3*y0 + x1*y2 - x2*y1 elseif ( @loopmethod == 3 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = x0*cx0 - x1*cx1 - x2*cx2 - x3*cx3 z1 = x0*cx1 + x1*cx0 + x2*cx3 - x3*cx2 z2 = x0*cx2 + x2*cx0 + x3*cx1 - x1*cx3 z3 = x0*cx3 + x3*cx0 + x1*cx2 - x2*cx1 elseif ( @loopmethod == 4 ) complex x0 = z0 + q0 complex x1 = z1 + q1 complex x2 = z2 + q2 complex x3 = z3 + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = x0*cy0 - x1*cy1 - x2*cy2 - x3*cy3 z1 = x0*cy1 + x1*cy0 + x2*cy3 - x3*cy2 z2 = x0*cy2 + x2*cy0 + x3*cy1 - x1*cy3 z3 = x0*cy3 + x3*cy0 + x1*cy2 - x2*cy1 elseif ( @loopmethod == 5 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 z0 = cx0*cx0 - cx1*cx1 - cx2*cx2 - cx3*cx3 z1 = 2*cx0*cx1 z2 = 2*cx0*cx2 z3 = 2*cx0*cx3 elseif ( @loopmethod == 6 ) complex cx0 = conj(z0) + q0 complex cx1 = -conj(z1) + q1 complex cx2 = -conj(z2) + q2 complex cx3 = -conj(z3) + q3 complex cy0 = conj(z0) - q0 complex cy1 = -conj(z1) - q1 complex cy2 = -conj(z2) - q2 complex cy3 = -conj(z3) - q3 z0 = cx0*cy0 - cx1*cy1 - cx2*cy2 - cx3*cy3 z1 = cx0*cy1 + cx1*cy0 + cx2*cy3 - cx3*cy2 z2 = cx0*cy2 + cx2*cy0 + cx3*cy1 - cx1*cy3 z3 = cx0*cy3 + cx3*cy0 + cx1*cy2 - cx2*cy1 endif z = z0 + z1 + z2 + z3 bailout: |z0| + |z1| + |z2| + |z3| < @bailout default: title = "CQuatM" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam heading caption = "Mandlebrot Mode" endheading param initmethod caption = "Init Method" enum = "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" endparam param loopmethod caption = "Loop Method" enum = "0 - n" "1 - XXn" "2 - XYn" "3 - XcXn" "4 - XcYn" "5 - cXcXn" "6 - cXcYn" endparam float param bailout caption = "Bailout" default = 16.0 endparam complex param p1 caption = "First (cj, ck)" default = (0.0, 0.0) endparam complex param p2 caption = "Second (cj, ck)" default = (0.0, 0.0) endparam complex param p3 caption = "Third (cj, ck)" default = (0.0, 0.0) endparam switch: type = "sdc+gnd-cquatJ" version = @version bailout = @bailout initmethod = @initmethod loopmethod = @loopmethod seed0 = #pixel seed1 = @p1 seed2 = @p2 seed3 = @p3 } sdc-isleofchaos { ; inspired by work by Jon Osuch & George Martin init: ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif int iter = 1 loop: bool formula1 = false iter = iter + 1 if (@method == 0) z=fn1(z) + c z=fn2(z)/fn3(z) + c elseif (@method == 1) ; Determine formula to be used: if ( @seq == 0 ) ; First Formula formula1 = true elseif ( @seq == 1 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif if (formula1 == true) z=fn1(z) + c else if (@operation == "/") z=fn2(z)/(fn3(z)+0.000001) + c elseif (@operation == "*") z=fn2(z)*(fn3(z)) + c elseif (@operation == "+") z=fn2(z)+(fn3(z)) + c elseif (@operation == "-") z=fn2(z)-(fn3(z)) + c elseif (@operation == "^") z=fn2(z)^(fn3(z)) + c endif endif elseif (@method == 2) ; Determine formula to be used: if ( @seq == 0 ) ; First Formula formula1 = true elseif ( @seq == 1 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif if (formula1 == true) z = flip(fn1(z)+.00001) + c else if (@operation == "/") z=fn2(z)/(fn3(z)+0.000001) + c elseif (@operation == "*") z=fn2(z)*(fn3(z)) + c elseif (@operation == "+") z=fn2(z)+(fn3(z)) + c elseif (@operation == "-") z=fn2(z)-(fn3(z)) + c elseif (@operation == "^") z=fn2(z)^(fn3(z)) + c endif endif endif z = @overallfn(z) if (@oddevenC == 1) c = -c elseif (@oddevenC == 2) c = conj(c) elseif (@oddevenC == 3) c = flip(c) elseif (@oddevenC == 4) c = recip(c) endif z = z/@finmult bailout: |z| < @bailout switch: type = "sdc-isleofchaos" version = @version bailout = @bailout mode = @switchmode switchMode = @mode seed = #pixel z0 = @z0 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 modBy = @modBy modCmp = @modCmp seq = @seq method = @method oddevenC = @oddevenC finmult = @finmult operation = @operation overallfn = @overallfn default: title = "Isle of Chaos" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param bailout caption = "Bailout" default = 4 endparam param method caption = "Loop Method" enum = "1" "2" "3" ;"4" default = 0 endparam param seq caption = "Sequence Method" enum = "Formula 1" "Formula 2" "Sequenced" default = 2 visible = @method>0 endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @method>0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" visible = @method>0 endparam param operation caption = "Operation" enum = "/" "*" "-" "+" "^" default = 0 visible = @method>0 endparam param z0 caption = "Initial Z" default = (0.0, 0.0) visible = @mode==0 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam func fn1 caption = "Function 1" default = sqr() endfunc func fn2 caption = "Function 2" default = sin() endfunc func fn3 caption = "Function 3" default = cos() endfunc func overallfn caption = "Overall Function" default = ident() endfunc param oddevenC caption = "Odd/Even Method For C" enum = "None" "-C" "conj(C)" "flip(C)" "recip(C)" endparam float param finmult caption = "Final Multiplier" default = 1.0 min = .01 max = 10 endparam } sdc-nautibilus { ; inspired by the Russ Walsmith nautibrots init: float test = 0.0 complex j = @j0 complex k = @k0 ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif loop: if (@nautmode == 0) ; rw Nautibroid j=@j0*j k=@p1*@fn1(k)*j z = z^k + c j=@j0*j k=@p2*@fn2(k)*j z = z^k + c elseif (@nautmode == 1) ; rw Nautibrot2 j=j*(-1) k=@p1*k*j z = z^k + c elseif (@nautmode == 2) ; rw Nautibrot3 k = @p1*conj(k) z = z^k + c elseif (@nautmode == 3) ; rw Nautibrot4 j=j*(-1) k=@p1*conj(k)*j z = z^k + c elseif (@nautmode == 4) ; rw Nautibrot5 k = @p1*@fn1(k) z = z^k + c elseif (@nautmode == 5) ; rw Nautibrot6 j = @j0*j k = @p1*@fn1(k)*j z = z^k + c endif if (@bailmode == 0) test = |z| elseif (@bailmode == 1) test = real(z) elseif (@bailmode == 2) test = imag(z) endif bailout: test < @bailout switch: type = "sdc-nautibilus" version = @version bailout = @bailout bailmode = @bailmode mode = @switchmode switchMode = @mode seed = #pixel nautmode = @nautmode z0 = @z0 j0 = @j0 k0 = @k0 p1 = @p1 p2 = @p2 fn1 = @fn1 fn2 = @fn2 default: title = "Nautibilus" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param bailmode caption = "Bailout Mode" enum = "|z|" "real(z)" "imag(z)" default = 0 endparam param bailout caption = "Bailout" default = 100 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param nautmode caption = "Naut Mode" enum = "1" "2" "3" "4" "5" "6" default = 0 endparam param z0 caption = "Z0" default = (0.0, 0.0) endparam param j0 caption = "J0" default = (1.0, 0.0) visible = (@nautmode!=2 && @nautmode!=4) endparam param k0 caption = "K0" default = (1.0, 0.0) endparam param p1 caption = "Parameter 1" default = (1.5, 0.0) endparam param p2 caption = "Parameter 2" default = (1.0, 0.0) visible = (@nautmode==0) endparam func fn1 caption = "Function 1" default = sin() visible = (@nautmode==0 || @nautmode==4 || @nautmode==5) endfunc func fn2 caption = "Function 2" default = sin() visible = (@nautmode==0) endfunc } sdc-nauti { ; inspired by the Russ Walsmith nautibrots global: complex j = @j0 complex k[#maxiter] int n = 0 while (n < #maxiter) if (@nautmode == 0) ; rw Nautibroid j=@j0*j if (n == 0) k[n] = @p2*@fn2(@k0)*j elseif (n%2 == 0) k[n]=@p1*@fn1(k[n-1])*j else k[n]=@p2*@fn2(k[n-1])*j endif elseif (@nautmode == 1) ; rw Nautibrot2 j=j*(-1) if (n == 0) k[n]=@p1*@k0*j else k[n]=@p1*k[n-1]*j endif elseif (@nautmode == 2) ; rw Nautibrot3 if (n==0) k[n] = @p1*conj(@k0) else k[n] = @p1*conj(k[n-1]) endif elseif (@nautmode == 3) ; rw Nautibrot4 j=j*(-1) if (n==0) k[n]=@p1*conj(@k0)*j else k[n]=@p1*conj(k[n-1])*j endif elseif (@nautmode == 4) ; rw Nautibrot5 if (n==0) k[n] = @p1*@fn1(@k0) else k[n] = @p1*@fn1(k[n-1]) endif elseif (@nautmode == 5) ; rw Nautibrot6 j = @j0*j if (n==0) k[n] = @p1*@fn1(@k0)*j else k[n] = @p1*@fn1(k[n-1])*j endif elseif (@nautmode == 6) ; j=@j0*j if (n == 0) k[n] = @p2*@fn2(@k0)*j elseif (n%3 == 0) k[n]=@p1*@fn1(k[n-1])*j elseif (n%3 == 1) k[n]=@p2*@fn2(k[n-1])*j else k[n]=@p3*@fn3(k[n-1])*j endif endif n = n + 1 endwhile init: int iter = 0 float test = 0.0 ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif loop: z = z^k[iter] + c iter = iter + 1 if (@bailmode == 0) test = |z| elseif (@bailmode == 1) test = real(z) elseif (@bailmode == 2) test = imag(z) endif bailout: test < @bailout switch: type = "sdc-nauti" version = @version bailout = @bailout bailmode = @bailmode mode = @switchmode switchMode = @mode seed = #pixel nautmode = @nautmode z0 = @z0 j0 = @j0 k0 = @k0 p1 = @p1 p2 = @p2 p3 = @p3 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 default: title = "Nauti" method = multipass periodicity = 0 magn = .5 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param bailmode caption = "Bailout Mode" enum = "|z|" "real(z)" "imag(z)" default = 0 endparam param bailout caption = "Bailout" default = 100 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param nautmode caption = "Naut Mode" enum = "1" "2" "3" "4" "5" "6" "7" default = 0 endparam param z0 caption = "Z0" default = (0.0, 0.0) endparam param j0 caption = "J0" default = (1.0, 0.0) visible = (@nautmode!=2 && @nautmode!=4) endparam param k0 caption = "K0" default = (1.0, 0.0) endparam param p1 caption = "Parameter 1" default = (1.5, 0.0) endparam param p2 caption = "Parameter 2" default = (1.0, 0.0) visible = (@nautmode==0 || @nautmode==6) endparam param p3 caption = "Parameter 3" default = (1.0, 0.0) visible = (@nautmode==6) endparam func fn1 caption = "Function 1" default = ident() visible = (@nautmode==0 || @nautmode==4 || @nautmode==5 || @nautmode==6) endfunc func fn2 caption = "Function 2" default = ident() visible = (@nautmode==0 || @nautmode==6) endfunc func fn3 caption = "Function 3" default = ident() visible = (@nautmode==6) endfunc } sdc-tenebrae { ; Inspired by Clifford Pickover function ; The Method A "Mandelbrot" is an allover, ; space filling function when the Method ; functions are trigonometric, which was ; the form of Pickover's function ; Method C has some interesting "Julias" ; even though the "Mandelbrot" appears black. ; Susan D. Chambless, June, 2004 init: ; default to Mandelbrot if (@version < 0.9) complex x = @initfn1(0) complex y = @initfn1(0) complex cx = @initfn2(real(#pixel)) complex cy = @initfn2(imag(#pixel)) if (@mode == "Julia") x = @initfn2(real(#pixel)) y = @initfn2(imag(#pixel)) cx = @initfn1(real(@seed)) cy = @initfn1(imag(@seed)) endif else complex x = @initfn1(0) complex y = @initfn2(0) complex cx = @initfn1(real(#pixel)) complex cy = @initfn2(imag(#pixel)) if (@mode == "Julia") x = @initfn1(real(#pixel)) y = @initfn2(imag(#pixel)) cx = @initfn1(real(@seed)) cy = @initfn2(imag(@seed)) endif endif if (@mode == "Julia") x = @initfn2(real(#pixel)) y = @initfn2(imag(#pixel)) cx = @initfn1(real(@seed)) cy = @initfn1(imag(@seed)) endif complex rcx = @rho * cx complex rcy = @rho * cy loop: x = @loopfn1(x) y = @loopfn2(y) if (@method == "A") if (@power == "1") tx = x - @h*(@fn1(y + @fn2(@rho * y + cx))) y = y + @h*(@fn3(x + @fn4(@rho * x + cy))) x = tx elseif (@power == "2") tx = x - @h*(@fn1(y + @fn2(y + @fn2(@rho * y + cx) + cx))) y = y + @h*(@fn3(x + @fn4(x + @fn4(@rho * x + cy) + cy))) x = tx elseif (@power == "3") tx = x - @h*(@fn1(y + @fn2(@fn2(@fn2(@rho * y + cx) + cx) + cx))) y = y + @h*(@fn3(x + @fn4(@fn4(@fn4(@rho * x + cy) + cy) + cy))) x = tx endif elseif (@method == "B") if (@power == "1") tx = x - @h*(@fn1(y + @fn2(@rho * y))) + cx y = y + @h*(@fn3(x + @fn4(@rho * x))) + cy x = tx elseif (@power == "2") tx = x - @h*(@fn1(y + @fn2(@fn2(@rho * y)))) + cx y = y + @h*(@fn3(x + @fn4(@fn4(@rho * x)))) + cy x = tx elseif (@power == "3") tx = x - @h*(@fn1(y + @fn2(@fn2(@fn2(@rho * y))))) + cx y = y + @h*(@fn3(x + @fn4(@fn4(@fn4(@rho * x))))) + cy x = tx endif elseif (@method == "C") if (@power == "1") tx = x - @h*(@fn1(y + @fn2(rcx * y))) y = y + @h*(@fn3(x + @fn4(rcy * x))) x = tx elseif (@power == "2") tx = x - @h*(@fn1(y + @fn2(@fn2(rcx * y)))) y = y + @h*(@fn3(x + @fn4(@fn4(rcy * x)))) x = tx elseif (@power == "3") tx = x - @h*(@fn1(y + @fn2(@fn2(@fn2(rcx * y))))) y = y + @h*(@fn3(x + @fn4(@fn4(@fn4(rcy * x))))) x = tx endif endif z = @finfn1(x) + flip( @finfn2(y) ) bailout: |z| < @bailout switch: type = "sdc-tenebrae" version = @version bailout = @bailout mode = @switchmode switchMode = @mode seed = #pixel rho = @rho h = @h fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 method = @method power = @power initfn1 = @initfn1 initfn2 = @initfn2 loopfn1 = @loopfn1 loopfn2 = @loopfn2 finfn1 = @finfn1 finfn2 = @finfn2 default: title = "Tenebrae" method = multipass periodicity = 0 center = (0.0,0.0) magn = 0.9 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param bailout caption = "Bailout" default = 4 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param method caption = "Method" enum = "A" "B" "C" default = 0 endparam param power caption = "power" enum = "1" "2" "3" default = 0 endparam complex param rho caption = "Frequency Modulation" default = (3.0, 0.0) endparam complex param h caption = "Step Size" default = (0.1, 0.1) endparam func initfn1 caption = "Init X Function" default = ident() endfunc func initfn2 caption = "Init Y Function" default = ident() endfunc func loopfn1 caption = "Loop X Function" default = ident() endfunc func loopfn2 caption = "Loop Y Function" default = ident() endfunc func finfn1 caption = "Final X Function" default = ident() endfunc func finfn2 caption = "Final Y Function" default = ident() endfunc heading caption = "Method Functions" endheading func fn1 caption = "Function 1" default = sin() endfunc func fn2 caption = "Function 2" default = sin() endfunc func fn3 caption = "Function 3" default = sin() endfunc func fn4 caption = "Function 4" default = sin() endfunc } sdc-4Func-TDDS+J { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads ; Interesting enhancements added ; by Toby Marshall, June, 2004 init: ;default to Mandelbrot complex c = #pixel complex z = ( 0.0, 0.0 ) if( @mode == "Julia" ) z = #pixel c = @startseed endif float x = real(@fnr(z*@pr1)^@pr2) float y = imag(@fni(z*@pi1)^@pi2) ;Toby's modifications to c complex cons = @fnc(c-@pc1)^@pc2 loop: float oldx = x float oldy = y x = oldx + @multiplier * \ @amplitude1 * real(@function1(@frequency1 * oldy + \ @amplitude2 * real(@function2(@frequency2 * oldy + \ @amplitude3 * real(@function3(@frequency3 * oldy + \ @amplitude4 * real(@function4(@frequency4 * oldy )))))))) y = oldy - @multiplier * \ @amplitude1 * real(@function1(@frequency1 * oldx + \ @amplitude2 * real(@function2(@frequency2 * oldx + \ @amplitude3 * real(@function3(@frequency3 * oldx + \ @amplitude4 * real(@function4(@frequency4 * oldx )) )) )) )) if @op == "+" z = @fnz(@fnx(x) + cons)^@pz1 elseif @op == "*" z = @fnz(@fnx(x) * cons)^@pz1 endif bailout: |z| < @bailout switch: type = "sdc-4Func-TDDS+J" version = @version bailout = @bailout multiplier = @multiplier function1 = @function1 amplitude1 = @amplitude1 frequency1 = @frequency1 function2 = @function2 amplitude2 = @amplitude2 frequency2 = @frequency2 function3 = @function3 amplitude3 = @amplitude3 frequency3 = @frequency3 function4 = @function4 amplitude4 = @amplitude4 frequency4 = @frequency4 mode = @switchmode switchMode = mode startseed = #pixel fnz = @fnz fnx = @fnx fny = @fny fnc = @fnc fnr = @fnr fni = @fni pr1 = @pr1 pr2 = @pr2 pi1 = @pi1 pi2 = @pi2 pc1 = @pc1 pc2 = @pc2 pz1 = @pz1 op = @op default: title = "Four-Function TDDS+Julia" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 1.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 4.0 caption = "Bailout" hint = "Try changing this." endparam float param multiplier default = .1 caption = "Multiplier" endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam func function1 default = sinh() caption = "Function 1" endfunc float param amplitude1 default = 1.0 caption = "Amplitude 1" endparam float param frequency1 default = 1.0 caption = "Frequency 1" endparam func function2 default = sin() caption = "Function 2" endfunc float param amplitude2 default = 1.0 caption = "Amplitude 2" endparam float param frequency2 default = 1.0 caption = "Frequency 2" endparam func function3 default = cos() caption = "Function 3" endfunc float param amplitude3 default = 1.0 caption = "Amplitude 3" endparam float param frequency3 default = 1.0 caption = "Frequency 3" endparam func function4 default = sin() caption = "Function 4" endfunc float param amplitude4 default = 1.0 caption = "Amplitude 4" endparam float param frequency4 default = 1.0 caption = "Frequency 4" endparam heading caption = "Toby Xtras" endheading func fnz caption = "Z Function" default = ident () endfunc func fnx caption = "X Function" default = ident () endfunc func fny caption = "Y Function" default = ident () endfunc func fnc caption = "C Function" default = ident () endfunc func fnr caption = "Real Function" default = ident () endfunc func fni caption = "Imag Function" default = ident () endfunc complex param pr1 caption = "X Shape" default = (1,0) endparam complex param pr2 caption = "X Param " default = (1,0) endparam complex param pi1 caption = "Y Shape" default = (1,0) endparam complex param pi2 caption = "Y Param" default = (1,0) endparam complex param pc1 caption = "Pixel Param 1" default = (0,0) endparam complex param pc2 caption = "Pixel Param 2" default = (1,0) endparam complex param pz1 caption = "Z Param" default = (1,0) endparam param op caption = "Operator" enum = "+""*" default = 0 endparam } sdc-poly8 { ; 8th degree polynomial of various forms ; June, 2004 ; ; June, 2004 Optimized 6th degree and higher ; dissected form using polar coordinates. init: ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif complex tz = z complex t = tz float tval = 0.0 complex x = real(tz) complex y = imag(tz) complex cx = real(c) complex cy = imag(c) loop: if (@form == 0) deg1 = @p1*@fn1(tz) deg2 = @p2*@fn2(tz*tz) deg3 = @p3*@fn3(tz*tz*tz) deg4 = @p4*@fn4(tz*tz*tz*tz) deg5 = @p5*@fn5(tz*tz*tz*tz*tz) deg6 = @p6*@fn6(tz*tz*tz*tz*tz*tz) deg7 = @p7*@fn7(tz*tz*tz*tz*tz*tz*tz) deg8 = @p8*@fn8(tz*tz*tz*tz*tz*tz*tz*tz) tz = c + deg1 + deg2 + deg3 + deg4 + deg5 + deg6 + deg7 + deg8 elseif (@form == 1) deg1 = @fn1(@p1*tz) deg2 = @fn2(@p2*tz*tz) deg3 = @fn3(@p3*tz*tz*tz) deg4 = @fn4(@p4*tz*tz*tz*tz) deg5 = @fn5(@p5*tz*tz*tz*tz*tz) deg6 = @fn6(@p6*tz*tz*tz*tz*tz*tz) deg7 = @fn7(@p7*tz*tz*tz*tz*tz*tz*tz) deg8 = @fn8(@p8*tz*tz*tz*tz*tz*tz*tz*tz) tz = c + deg1 + deg2 + deg3 + deg4 + deg5 + deg6 + deg7 + deg8 elseif (@form == 2) deg1x = @p1*@fn1(x) deg1y = @p1*@fn1(y) deg2x = @p2*@fn2(x*x - y*y) deg2y = @p2*@fn2(2*x*y) deg3x = @p3*@fn3(x*x*x - 3*x*y*y) deg3y = @p3*@fn3(3*x*x*y - y*y*y) deg4x = @p4*@fn4(x*x*x*x - 6*x*x*y*y + y*y*y*y) deg4y = @p4*@fn4(4*x*x*x*y - 4*x*y*y*y) deg5x = @p5*@fn5(x*x*x*x*x + 5*x*y*y*y*y - 10*x*x*x*y*y) deg5y = @p5*@fn5(y*y*y*y*y - 10*x*x*y*y*y + 5*x*x*x*x*y) float r = cabs(tz) float th = atan2(tz) float rfac = r*r*r*r*r*r deg6x = @p6*@fn6(rfac*cos(6.0*th)) ;polar form more efficient from here deg6y = @p6*@fn6(rfac*sin(6.0*th)) rfac = rfac*r deg7x = @p7*@fn7(rfac*cos(7.0*th)) deg7y = @p7*@fn7(rfac*sin(7.0*th)) rfac = rfac*r deg8x = @p8*@fn8(rfac*cos(8.0*th)) deg8y = @p8*@fn8(rfac*sin(8.0*th)) x = cx + deg1x + deg2x + deg3x + deg4x + deg5x + deg6x + deg7x + deg8x y = cy + deg1y + deg2y + deg3y + deg4y + deg5y + deg6y + deg7y + deg8y tz = x + flip(y) else ;;;;;;;if (@form == 3) deg1x = @fn1(@p1*(x)) deg1y = @fn1(@p1*(y)) deg2x = @fn2(@p2*(x*x - y*y)) deg2y = @fn2(@p2*(2*x*y)) deg3x = @fn3(@p3*(x*x*x - 3*x*y*y)) deg3y = @fn3(@p3*(3*x*x*y - y*y*y)) deg4x = @fn4(@p4*(x*x*x*x - 6*x*x*y*y + y*y*y*y)) deg4y = @fn4(@p4*(4*x*x*x*y - 4*x*y*y*y)) deg5x = @fn5(@p5*(x*x*x*x*x + 5*x*y*y*y*y - 10*x*x*x*y*y)) deg5y = @fn5(@p5*(y*y*y*y*y - 10*x*x*y*y*y + 5*x*x*x*x*y)) float r = cabs(tz) float th = atan2(tz) float rfac = r*r*r*r*r*r deg6x = @fn6(@p6*(rfac*cos(6.0*th))) ;polar form more efficient from here deg6y = @fn6(@p6*(rfac*sin(6.0*th))) rfac = rfac*r deg7x = @fn7(@p7*(rfac*cos(7.0*th))) deg7y = @fn7(@p7*(rfac*sin(7.0*th))) rfac = rfac*r deg8x = @fn8(@p8*(rfac*cos(8.0*th))) deg8y = @fn8(@p8*(rfac*sin(8.0*th))) x = cx + deg1x + deg2x + deg3x + deg4x + deg5x + deg6x + deg7x + deg8x y = cy + deg1y + deg2y + deg3y + deg4y + deg5y + deg6y + deg7y + deg8y tz = x + flip(y) endif if (@method == 0) z = tz t = tz elseif (@method == 1) z = (1.0, 0.0) / (tz + @epsilon) t = tz elseif (@method == 2) z = (1.0, 0.0) / (tz + @epsilon) t = tz tz = z endif if (@test == 0) tval = |z| elseif (@test == 1) tval = abs(real(z)) elseif (@test == 2) tval = abs(imag(z)) elseif (@test == 3) tval = |t| elseif (@test == 4) tval = abs(real(t)) else tval = abs(imag(t)) endif bailout: tval < @bailout switch: type = "sdc-poly8" version = @version bailout = @bailout mode = @switchmode switchMode = @mode z0 = @z0 seed = #pixel form = @form method = @method p1 = @p1 fn1 = @fn1 p2 = @p2 fn2 = @fn2 p3 = @p3 fn3 = @fn3 p4 = @p4 fn4 = @fn4 p5 = @p5 fn5 = @fn5 p6 = @p6 fn6 = @fn6 p7 = @p7 fn7 = @fn7 p8 = @p8 fn8 = @fn8 default: title = "Eigth degree polynomial" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param form caption = "Form" enum = "p*fn(z)" \ "fn(p*z)" \ "dissected p*fn(z)" \ "dissected fn(p*z)" endparam param method caption = "Method" enum = "z" "1/z" "keep 1/z" default = 0 endparam float param bailout caption = "Bailout" default = 4.0 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode=="Julia" endparam param z0 caption = "Initial z" default = (0.0, 0.0) visible = @mode == "Mandelbrot" endparam param test caption = "Bailout Test abs of" enum = "z" "Real(z)" "Imag(z)" "tz" "Real(tz)" "Imag(tz)" default = 0 endparam float param epsilon caption = "Epsilon" default = .0000001 endparam complex param p1 caption = "Parameter 1" default = (0.0, 0.0) endparam func fn1 caption = "Function 1" default = ident() endfunc complex param p2 caption = "Parameter 2" default = (1.0, 0.0) endparam func fn2 caption = "Function 2" default = ident() endfunc complex param p3 caption = "Parameter 3" default = (0.0, 0.0) endparam func fn3 caption = "Function 3" default = ident() endfunc complex param p4 caption = "Parameter 4" default = (0.0, 0.0) endparam func fn4 caption = "Function 4" default = ident() endfunc complex param p5 caption = "Parameter 5" default = (0.0, 0.0) endparam func fn5 caption = "Function 5" default = ident() endfunc complex param p6 caption = "Parameter 6" default = (0.0, 0.0) endparam func fn6 caption = "Function 6" default = ident() endfunc complex param p7 caption = "Parameter 7" default = (0.0, 0.0) endparam func fn7 caption = "Function 7" default = ident() endfunc complex param p8 caption = "Parameter 8" default = (0.0, 0.0) endparam func fn8 caption = "Function 8" default = ident() endfunc } sdc-hopalongs { init: complex z = (0.0, 0.0) complex c = #pixel int iter = 0 complex p = @initfn(c) float x = real(p) float y = imag(p) loop: iter = iter + 1 x = real(@loopfnx(x)) y = real(@loopfny(y)) float sx = 1.0 if (x < 0.0) sx = -1.0 endif float tx = x float ty = y if (@method == 0) ; Hopalong x = y - sx * sqrt(abs(@pB * x - @pC)) y = @pA - tx elseif (@method == 1) ; Popcorn x = tx - @pH * real(@m1fn1(ty + @m1fn2(@pC1*ty))) y = ty - @pH * real(@m1fn3(tx + @m1fn4(@pC1*tx))) elseif (@method == 2) ; Gingerbread x = 1.0 - ty + abs(tx) y = tx elseif (@method == 3) ; Three Ply x = ty - sx*abs(sin(tx)*cos(@pB3) + @pC3 - tx*sin(@pA3 + @pB3 + @pC3)) y = @pA3 - tx elseif (@method == 4) ; Quadrup Two x = tx - sx*sin(log(abs(@pB4 * ty - @pC4))) * atan(abs(sqr(@pC4 * tx - @pB4))) y = @pA4 - tx else ; Martin x = ty - real(@fnA5(tx)) y = @pA5 - tx endif tx = x ty = y sx = 1.0 ; get the sign of x if (x < 0.0) sx = -1.0 endif if (@perturb == 1) ; Functions x = x + real(@fnx(x))*@px y = y + real(@fny(x))*@py elseif (@perturb == 2) ; Hopalong x = x + (ty - sx * sqrt(abs(@ppB2 * tx - @ppC2)))*@px y = y + (@ppA2 - tx)*@py elseif (@perturb == 3) ; Popcorn x = x + real(tx - @ppH * @p3fn1(ty + @p3fn2(@ppC3*ty)))*@px y = y + real(ty - @ppH * @p3fn3(tx + @p3fn4(@ppC3*tx)))*@py elseif (@perturb == 4) ; Gingerbread x = x + (1.0 - ty + abs(tx))*@px y = y + (tx)*@py elseif (@perturb == 5) ; Three Ply x = x + real(ty - sx*abs(sin(tx)*cos(@ppB5) + @ppC5 - tx*sin(@ppA5 + @ppB5 + @ppC5)))*@px y = y + real(@ppA5 - tx)*@py elseif (@perturb == 6 ) ; Quadrup Two x = x + (tx - sx*sin(log(abs(@ppB6 * ty - @ppC6))) * atan(abs(sqr(@ppC6 * tx - @ppB6))))*@px y = y + (@ppA6 - tx)*@py else ; Martinesque x = x + real(ty - @pfn7(tx))*@px y = y + (@ppA7 - tx)*@py endif z = @finalfn(x + flip(y)) bailout: iter < #maxiter default: title = "Hopalongs" method = multipass periodicity = 0 magn = 1 maxiter = 20 float param version default = 0.0 visible = false endparam param method caption = "Attractor Method" enum = "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" endparam float param pA caption = "A" default = 0.4 visible = @method==0 ; Hopalong endparam float param pB caption = "B" default = 1.0 visible = @method==0 ; Hopalong endparam float param pC caption = "C" default = 0.0 visible = @method==0 ; Hopalong endparam float param pH caption = "H" default = 0.05 visible = @method==1 ; Popcorn endparam float param pC1 caption = "c" default = 3.0 visible = @method==1 ; Popcorn endparam func m1fn1 caption = "Popcorn Fn 1" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn2 caption = "Popcorn Fn 2" default = tan() visible = @method==1 ; Popcorn endfunc func m1fn3 caption = "Popcorn Fn 3" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn4 caption = "Popcorn Fn 4" default = tan() visible = @method==1 ; Popcorn endfunc float param pA3 caption = "A" default = -0.2 visible = @method==3 ; Three Ply endparam float param pB3 caption = "B" default = -0.2 visible = @method==3 ; Three Ply endparam float param pC3 caption = "C" default = .42 visible = @method==3 ; Three Ply endparam float param pA4 caption = "A" default = 1.0 visible = @method==4 ; Quadrup Two endparam float param pB4 caption = "B" default = 1.0 visible = @method==4 ; Quadrup Two endparam float param pC4 caption = "C" default = 1.0 visible = @method==4 ; Quadrup Two endparam float param pA5 caption = "A" default = 3.14 visible = @method==5 ; Martin Two endparam func fnA5 caption = "Martin Function" default = sin() visible = @method==5 ; Martinesque endfunc func initfn caption = "Initial Function" default = ident() endfunc func finalfn caption = "Final Function" default = ident() endfunc func loopfnx caption = "Loop X function" default = ident() endfunc func loopfny caption = "Loop Y function" default = ident() endfunc param perturb caption = "Perturbation Method" enum = "None" \ "Functions" \ "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" default = 1 endparam float param px caption = "X perturbation" default = 0.0 visible = (@perturb != 0) endparam func fnx caption = "X perturb fn" default = ident() visible = (@perturb == 1) endfunc float param py caption = "Y perturbation" default = 0.0 visible = (@perturb != 0) endparam func fny caption = "Y perturb fn" default = ident() visible = (@perturb == 1) endfunc float param ppA2 caption = "A" default = 0.4 visible = @perturb==2 ; Hopalong endparam float param ppB2 caption = "B" default = 1.0 visible = @perturb==2 ; Hopalong endparam float param ppC2 caption = "C" default = 0.0 visible = @perturb==2 ; Hopalong endparam float param ppH caption = "H" default = 0.05 visible = @perturb==3 ; Popcorn endparam float param ppC3 caption = "C" default = 3.00 visible = @perturb==3 ; Popcorn endparam func p3fn1 caption = "Popcorn Fn 1" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn2 caption = "Popcorn Fn 2" default = tan() visible = @perturb==3 ; Popcorn endfunc func p3fn3 caption = "Popcorn Fn 3" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn4 caption = "Popcorn Fn 4" default = tan() visible = @perturb==3 ; Popcorn endfunc float param ppA5 caption = "A" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param ppB5 caption = "B" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param ppC5 caption = "C" default = -0.42 visible = @perturb==5 ; Three Ply endparam float param ppA6 caption = "A" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param ppB6 caption = "B" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param ppC6 caption = "C" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param ppA7 caption = "A" default = 3.14 visible = @perturb==7 ; Quadrup Two endparam func pfn7 caption = "Martin Function" default = sin() visible = @perturb==7 endfunc } sdc-manjul { ; Simple mandelbrot-julia switch ; Template for many of my formulae ; Jazzed up with a couple of functions init: ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif loop: if (@method == 0) z = @fn1(z^@pow) + c else z = @fn1(z)^@pow + C endif bailout: |z| < @bailout switch: type = "sdc-manjul" bailout = @bailout mode = @switchmode switchMode = @mode version = @version seed = #pixel fn1 = @fn1 pow = @pow method = @method default: title = "ManJul" method = multipass periodicity = 0 magn = 1 maxiter = 100 param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam float param version default = 1.0 visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading float param bailout caption = "Bailout" default = 4.0 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param z0 caption = "Initial Z" default = (0.0, 0.0) visible = @mode==0 endparam param method caption = "Method" enum = "f(z^p)" "f(z)^p" default = 0 endparam param pow caption = "Power" default = (1.0, 0.0) endparam func fn1 caption = "Function" default = sqr() endfunc } sdc-jazzymanjul { ; Simple mandelbrot-julia switch ; Template for many of my formulae ; Jazzed up with a couple of functions init: ; default to Mandelbrot complex z = @z0 complex c = #pixel if (@mode == "Julia") z = #pixel c = @seed endif if (@formula == 2 && @z0==(0.0, 0.0)) z = z + .00001 endif loop: if (@formula == 0) z = @fn1(z) + c elseif (@formula == 1) z = 1.0 / (fn1(z) + c) else ; if (@formaula == 2) z = c * @fn1(z + c^2/z) endif bailout: |z| < @bailout switch: type = "sdc-jazzymanjul" bailout = @bailout mode = @switchmode switchMode = @mode formula = @formula version = @version seed = #pixel fn1 = @fn1 default: title = "Jazzy ManJul" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.1 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param formula enum = "z = fn(z) + c" \ "z = 1.0/(fn(z) + c)" \ "z = c * fn(z + c^2/z)" default = 0 visible = @version > 0.05 endparam float param bailout caption = "Bailout" default = 4.0 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param z0 caption = "Initial Z" default = (0.0, 0.0) visible = @mode==0 endparam func fn1 caption = "Function" default = sqr() endfunc } sdc-popPlus { global: init: ;default to Mandelbrot complex c = #pixel complex z = @z0 if( @mode == "Julia" ) z = #pixel c = @startseed endif int iter = 0 loop: bool scenario1 = false iter = iter + 1 ; Determine scenario to be used: if ( @seq == 1 ) ; First scenario scenario1 = true elseif ( @seq == 2 ) ; Second scenario scenario1 = false elseif ( iter % @modBy < @modCmp ); Modulation scenario1 = true endif if(scenario1 == true) z = @fn11(z)*@a1*(1.0 - @fn12(z))*c else z = @fn21(z)*@a2*(1.0 - @fn22(z))*c endif bailout: |z| < @bailout switch: type = "sdc-popPlus" version = @version bailout = @bailout startseed = #pixel mode = @switchmode switchMode = @mode z0 = @z0 seq = @seq modBy = @modBy modCmp = @modCmp a1 = @a1 fn11 = @fn11 fn12 = @fn12 a2 = @a2 fn21 = @fn21 fn22 = @fn22 default: title = "Population Plus" method = multipass periodicity = 0 magn = 1 maxiter = 100 float param version default = 0.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading float param bailout caption = "Bailout" default = 4.0 endparam complex param startseed caption = "Julia seed" default = ( -.8, -.1 ) visible = @mode==1 endparam complex param z0 caption = "Initial Z value" default = (0.5, 0.0) visible = @mode==0 endparam int param seq enum = "Modulation" "First Scenario" "Second Scenario" default = 0 caption = "Scenario Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" endparam heading caption = "Scenario 1" visible = @seq!=2 endheading complex param a1 caption = "Constant" default = (1.0, 0.0) visible = @seq!=2 endparam func fn11 caption = "First Function" default = ident() visible = @seq!=2 endfunc func fn12 caption = "Second Function" default = ident() visible = @seq!=2 endfunc heading caption = "Scenario 2" visible = @seq!=2 endheading complex param a2 caption = "Constant" default = (1.0, 0.0) visible = @seq!=1 endparam func fn21 caption = "First Function" default = ident() visible = @seq!=1 endfunc func fn22 caption = "Second Function" default = ident() visible = @seq!=1 endfunc } sdc-embrangle-t { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads ; Greatly enhanced by Toby, August 2003 ; ; Damien's fBm added November, 2004, at the suggestion ; of Gilles Nadeau: ; This is the basic Embrangle type, but with a ; bit of fBm noise added at each iteration. This ; tends to distort the fractal beyond all recognition ; after just a few iterations, which may or may not ; be what you're looking for. ; ; You can also use the "Coloring Only" option to ; restrict the fBm distortion to the value passed ; to the coloring algorithm; the distortion will be ; removed before the next iteration is calculated. ; ; Toby's progressive parameter method added ; November, 2004. init: ;default to Mandelbrot complex c = #pixel complex z = ( 0.0, 0.0 ) if( @mode == "Julia" ) z = #pixel c = @startseed endif float x = real(@fn3(z^@exx)) float y = imag(@fn4(z^@exy)) int iter=0 int seed = random(@randomseed) float pAmpA1 = @ampA1 float pFreqA1 = @freqA1 float pAmpB1 = @ampB1 float pFreqB1 = @freqB1 float pAmpC1 = @ampC1 float pFreqC1 = @freqC1 float pAmpD1 = @ampD1 float pFreqD1 = @freqD1 float pAmpA2 = @ampA2 float pFreqA2 = @freqA2 float pAmpB2 = @ampB2 float pFreqB2 = @freqB2 float pAmpC2 = @ampC2 float pFreqC2 = @freqC2 float pAmpD2 = @ampD2 float pFreqD2 = @freqD2 float pAmpA3 = @ampA3 float pFreqA3 = @freqA3 float pAmpB3 = @ampB3 float pFreqB3 = @freqB3 float pAmpC3 = @ampC3 float pFreqC3 = @freqC3 float pAmpD3 = @ampD3 float pFreqD3 = @freqD3 float pAmpA4 = @ampA4 float pFreqA4 = @freqA4 float pAmpB4 = @ampB4 float pFreqB4 = @freqB4 float pAmpC4 = @ampC4 float pFreqC4 = @freqC4 float pAmpD4 = @ampD4 float pFreqD4 = @freqD4 complex oz = z ;;; fBm stuff complex dr = @distcenter if (@centermove) dr = #center endif complex r = (0,1) ^ (@angle / 90.0) complex r2 = (0,1) ^ (@anglestep / 90.0) complex r3 = (0,1) ^ (@distangle / 90.0) float fiter = @noisestart bool noise = false loop: if (@dofBm == true) if (@noiseskip != 0); we are skipping some iterations fiter = fiter - 1; one less to go before we add noise while (fiter < 0.0); iterations all used up if (noise); we are currently adding noise noise = false; so stop fiter = fiter + @noiseskip; skip this many iterations else; we aren't currently adding noise noise = true; so start fiter = fiter + @noiseiter; do this many iterations endif endwhile endif if (@coloronly); only using fBm on coloring z = oz; restore z from un-fBm'ed copy endif endif ;; fBm stuff ;;; Embrangle float oldx = real(z) float oldy = imag(z) bool formula1 = false iter = iter + 1 ; Determine formula to be used: if (@version > 0.9) if ( @seq == 1 ) ; First formula formula1 = true elseif ( @seq == 2 ) ; Second formula formula1 = false elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true else formula1 = false endif elseif ( @seq == 0 ); Modulation if (iter % @modBy < @modCmp) formula1 = true else formula1 = false endif endif else if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( iter % @modBy < @modCmp ); Modulation formula1 = true endif endif ;;; Toby's enhancements if @style1 == true aa = oldx else aa = oldy endif if @style2 == true bb = oldx else bb = oldy endif if @style3 == true cc = oldx else cc = oldy endif if @style4 == true dd = oldx else dd = oldy endif if @style5 == true ee = oldy else ee = oldx endif if @style6 == true ff = oldy else ff = oldx endif if @style7 == true gg = oldy else gg = oldx endif if @style8 == true hh = oldy else hh = oldx endif if @style9 == true ii = oldx else ii = oldy endif if @style10 == true jj = oldx else jj = oldy endif if @style11 == true kk = oldx else kk = oldy endif if @style12 == true ll = oldx else ll = oldy endif if @style13 == true mm = oldy else mm = oldx endif if @style14 == true nn = oldy else nn = oldx endif if @style15 == true oo = oldy else oo = oldx endif if @style16 == true pp = oldy else pp = oldx endif if @op2 =="+++" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="++-" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="+-+" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="-++" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="+--" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="--+" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="-+-" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif elseif @op2 =="---" if @op1 =="+++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="++-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+-+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-++" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="+--" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="--+" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="-+-" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif elseif @op1 =="---" if (formula1 == true) x = oldx + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@d )))))))) y = oldy - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@h )))))))) else x = oldx + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll^@l )))))))) y = oldy - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp^@p )))))))) endif endif endif if @op4 =="+" if @op3 == "+" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op3 == "-" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op3 == "*" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op3 == "/" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op3 == "^" z = @fn1(x^@ex1*@mx1-@px1) + @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op4 =="-" if @op3 == "+" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op3 == "-" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op3 == "*" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op3 == "/" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op3 == "^" z = @fn1(x^@ex1*@mx1-@px1) - @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op4 =="*" if @op3 == "+" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op3 == "-" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op3 == "*" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op3 == "/" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op3 == "^" z = @fn1(x^@ex1*@mx1-@px1) * @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op4 =="/" if @op3 == "+" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op3 == "-" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op3 == "*" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op3 == "/" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op3 == "^" z = @fn1(x^@ex1*@mx1-@px1) / @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif elseif @op4 =="^" if @op3 == "+" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) + (c-@pc1) elseif @op3 == "-" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) - (c-@pc1) elseif @op3 == "*" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) * (c-@pc1) elseif @op3 == "/" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) / (c-@pc1) elseif @op3 == "^" z = @fn1(x^@ex1*@mx1-@px1) ^ @fn2(y^@ey1*@my1-@py1) ^ (c-@pc1) endif endif if (@dofBm==true) if (@coloronly); only using fBm on coloring oz = z endif if (@noiseskip == 0.0 || noise); adding noise this iteration complex p = z * @scale * r + @offset float sum = 0.0 float freq = 1.0 complex v = (0,0) int i = @octaves while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^@npower % 65536 + by0)^@npower % 65536 float b10 = (bx1^@npower % 65536 + by0)^@npower % 65536 float b01 = (bx0^@npower % 65536 + by1)^@npower % 65536 float b11 = (bx1^@npower % 65536 + by1)^@npower % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^@npower*0.25 % 512 - 256 float g_b10_0 = (b10)^@npower*0.25 % 512 - 256 float g_b01_0 = (b01)^@npower*0.25 % 512 - 256 float g_b11_0 = (b11)^@npower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@npower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@npower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@npower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@npower*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq * @step p = p * r2 / @step i = i - 1 endwhile if (@dstyle == 0); radial distortion v = (z-dr)/cabs(z-dr) * r3; use vector based on angle to distortion center elseif (@dstyle == 1); linear distortion v = r3; just use rotation vector endif z = z + v * sum*0.5*@distortion endif if (@coloronly == false); not just using fBm on coloring oz = z; value for bailout is fBm'ed z endif else oz = z endif ;; dofBm if (@progressive == true) pAmpA1 = pAmpA1 + @dAmpA1 pAmpB1 = pAmpB1 + @dAmpB1 pAmpC1 = pAmpC1 + @dAmpC1 pAmpD1 = pAmpD1 + @dAmpD1 pAmpA2 = pAmpA2 + @dAmpA2 pAmpB2 = pAmpB2 + @dAmpB2 pAmpC2 = pAmpC2 + @dAmpC2 pAmpD2 = pAmpD2 + @dAmpD2 pAmpA3 = pAmpA3 + @dAmpA3 pAmpB3 = pAmpB3 + @dAmpB3 pAmpC3 = pAmpC3 + @dAmpC3 pAmpD3 = pAmpD3 + @dAmpD3 pAmpA4 = pAmpA4 + @dAmpA4 pAmpB4 = pAmpB4 + @dAmpB4 pAmpC4 = pAmpC4 + @dAmpC4 pAmpD4 = pAmpD4 + @dAmpD4 pFreqA1 = pFreqA1 + @dFreqA1 pFreqB1 = pFreqB1 + @dFreqB1 pFreqC1 = pFreqC1 + @dFreqC1 pFreqD1 = pFreqD1 + @dFreqD1 pFreqA2 = pFreqA2 + @dFreqA2 pFreqB2 = pFreqB2 + @dFreqB2 pFreqC2 = pFreqC2 + @dFreqC2 pFreqD2 = pFreqD2 + @dFreqD2 pFreqA3 = pFreqA3 + @dFreqA3 pFreqB3 = pFreqB3 + @dFreqB3 pFreqC3 = pFreqC3 + @dFreqC3 pFreqD3 = pFreqD3 + @dFreqD3 pFreqA4 = pFreqA4 + @dFreqA4 pFreqB4 = pFreqB4 + @dFreqB4 pFreqC4 = pFreqC4 + @dFreqC4 pFreqD4 = pFreqD4 + @dFreqD4 endif bailout: |oz| <= @bailout \ switch: type = "sdc-embrangle-t" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp randomseed = @randomseed prob1 = @prob1 showfn1 = @showfn1 showfn2 = @showfn2 showfn3 = @showfn3 showfn4 = @showfn4 fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 fcnA3 = @fcnA3 ampA3 = @ampA3 freqA3 = @freqA3 fcnB3 = @fcnB3 ampB3 = @ampB3 freqB3 = @freqB3 fcnC3 = @fcnC3 ampC3 = @ampC3 freqC3 = @freqC3 fcnD3 = @fcnD3 ampD3 = @ampD3 freqD3 = @freqD3 fcnA4 = @fcnA4 ampA4 = @ampA4 freqA4 = @freqA4 fcnB4 = @fcnB4 ampB4 = @ampB4 freqB4 = @freqB4 fcnC4 = @fcnC4 ampC4 = @ampC4 freqC4 = @freqC4 fcnD4 = @fcnD4 ampD4 = @ampD4 freqD4 = @freqD4 dAmpA1 = @dAmpA1 dAmpB1 = @dAmpB1 dAmpC1 = @dAmpC1 dAmpD1 = @dAmpD1 dAmpA2 = @dAmpA2 dAmpB2 = @dAmpB2 dAmpC2 = @dAmpC2 dAmpD2 = @dAmpD2 dAmpA3 = @dAmpA3 dAmpB3 = @dAmpB3 dAmpC3 = @dAmpC3 dAmpD3 = @dAmpD3 dAmpA4 = @dAmpA4 dAmpB4 = @dAmpB4 dAmpC4 = @dAmpC4 dAmpD4 = @dAmpD4 dFreqA1 = @dFreqA1 dFreqB1 = @dFreqB1 dFreqC1 = @dFreqC1 dFreqD1 = @dFreqD1 dFreqA2 = @dFreqA2 dFreqB2 = @dFreqB2 dFreqC2 = @dFreqC2 dFreqD2 = @dFreqD2 dFreqA3 = @dFreqA3 dFreqB3 = @dFreqB3 dFreqC3 = @dFreqC3 dFreqD3 = @dFreqD3 dFreqA4 = @dFreqA4 dFreqB4 = @dFreqB4 dFreqC4 = @dFreqC4 dFreqD4 = @dFreqD4 mode = @switchmode switchMode = mode startseed = #pixel op1 = @op1 op2 = @op2 op3 = @op3 op4 = @op4 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 style1 = @style1 style2 = @style2 style3 = @style3 style4 = @style4 style5 = @style5 style6 = @style6 style7 = @style7 style8 = @style8 style9 = @style9 style10 = @style10 style11 = @style11 style12 = @style12 style13 = @style13 style14 = @style14 style15 = @style15 style16 = @style16 a = @a b = @b c = @c d = @d q = @q f = @f g = @g h = @h i = @i j = @j k = @k l = @l m = @m n = @n o = @o p = @p exx = @exx px = @px exy = @exy py = @py ex1 = @ex1 ey1 = @ey1 mx1 = @mx1 my1 = @my1 px1 = @px1 py1 = @py1 pc1 = @pc1 dofBm = @dofBm doprogressive = @doprogressive distortion = @distortion dstyle = @dstyle distangle = @distangle distcenter = @distcenter centermove = @centermove offset = @offset scale = @scale angle = @angle step = @step anglestep = @anglestep octaves = @octaves npower = @npower default: title = "EmbrangleT" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.0 visible = false endparam param mode caption = "Current Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @seq==0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 endparam float param prob1 caption = "Prob for Func 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam bool param dofBm caption = "fBm distortion?" default = false endparam bool param progressive caption = "Progressive Params?" default = false endparam heading caption = "Functions" endheading bool param showfn1 caption = "Show Function 1" default = true visible= @seq != 2 endparam bool param showfn2 caption = "Show Function 2" default = true visible = @seq != 1 endparam bool param showfn3 caption = "Show Function 3" default = true visible = @seq != 2 endparam bool param showfn4 caption = "Show Function 4" default = true visible = @seq != 1 endparam ;========================================== Function 1 heading caption = "Function 1" visible = @showfn1 && @seq != 2 endheading func fcnA1 default = sinh() caption = "Function A1" visible = @showfn1 && @seq != 2 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" visible = @showfn1 && @seq != 2 endparam float param dAmpA1 default = 0.0 caption = "Delta Amplitude A1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqA1 default = 1.0 caption = "Frequency A1" visible = @showfn1 && @seq != 2 endparam float param dFreqA1 default = 0.0 caption = "Delta Frequency A1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnB1 default = sin() caption = "Function B1" visible = @showfn1 && @seq != 2 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" visible = @showfn1 && @seq != 2 endparam float param dAmpB1 default = 0.0 caption = "Delta Amplitude B1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqB1 default = 1.0 caption = "Frequency B1" visible = @showfn1 && @seq != 2 endparam float param dFreqB1 default = 0.0 caption = "Delta Frequency B1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnC1 default = sin() caption = "Function C1" visible = @showfn1 && @seq != 2 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" visible = @showfn1 && @seq != 2 endparam float param dAmpC1 default = 0.0 caption = "Delta Amplitude C1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqC1 default = 1.0 caption = "Frequency C1" visible = @showfn1 && @seq != 2 endparam float param dFreqC1 default = 0.0 caption = "Delta Frequency C1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnD1 default = cos() caption = "Function D1" visible = @showfn1 && @seq != 2 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" visible = @showfn1 && @seq != 2 endparam float param dAmpD1 default = 0.0 caption = "Delta Amplitude D1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqD1 default = 1.0 caption = "Frequency D1" visible = @showfn1 && @seq != 2 endparam float param dFreqD1 default = 0.0 caption = "Delta Frequency D1" visible = @showfn1 && @seq != 2 && @progressive endparam ;========================================== Function 2 heading caption = "Function 2" visible = @showfn2 && @seq != 1 endheading func fcnA2 default = sinh() caption = "Function A2" visible = @showfn2 && @seq != 1 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" visible = @showfn2 && @seq != 1 endparam float param dAmpA2 default = 0.0 caption = "Delta Amplitude A2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqA2 default = 1.0 caption = "Frequency A2" visible = @showfn2 && @seq != 1 endparam float param dFreqA2 default = 0.0 caption = "Delta Frequency A2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnB2 default = cos() caption = "Function B2" visible = @showfn2 && @seq != 1 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" visible = @showfn2 && @seq != 1 endparam float param dAmpB2 default = 0.0 caption = "Delta Amplitude B2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqB2 default = 1.0 caption = "Frequency B2" visible = @showfn2 && @seq != 1 endparam float param dFreqB2 default = 0.0 caption = "Delta Frequency B2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnC2 default = cos() caption = "Function C2" visible = @showfn2 && @seq != 1 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" visible = @showfn2 && @seq != 1 endparam float param dAmpC2 default = 0.0 caption = "Delta Amplitude C2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqC2 default = 1.0 caption = "Frequency C2" visible = @showfn2 && @seq != 1 endparam float param dFreqC2 default = 0.0 caption = "Delta Frequency C2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnD2 default = sin() caption = "Function D2" visible = @showfn2 && @seq != 1 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" visible = @showfn2 && @seq != 1 endparam float param dAmpD2 default = 0.0 caption = "Delta Amplitude D2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqD2 default = 1.0 caption = "Frequency D2" visible = @showfn2 && @seq != 1 endparam float param dFreqD2 default = 0.0 caption = "Delta Frequency D2" visible = @showfn2 && @seq != 1 && @progressive endparam ;========================================== Function 3 heading caption = "Function 3" visible = @showfn3 && @seq != 2 endheading func fcnA3 default = sinh() caption = "Function A3" visible = @showfn3 && @seq != 2 endfunc float param ampA3 default = 1.0 caption = "Amplitude A3" visible = @showfn3 && @seq != 2 endparam float param dAmpA3 default = 0.0 caption = "Delta Amplitude A3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqA3 default = 1.0 caption = "Frequency A3" visible = @showfn3 && @seq != 2 endparam float param dFreqA3 default = 0.0 caption = "Delta Frequency A3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnB3 default = sin() caption = "Function B3" visible = @showfn3 && @seq != 2 endfunc float param ampB3 default = 1.0 caption = "Amplitude B3" visible = @showfn3 && @seq != 2 endparam float param dAmpB3 default = 0.0 caption = "Delta Amplitude B3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqB3 default = 1.0 caption = "Frequency B3" visible = @showfn3 && @seq != 2 endparam float param dFreqB3 default = 0.0 caption = "Delta Frequency B3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnC3 default = sin() caption = "Function C3" visible = @showfn3 && @seq != 2 endfunc float param ampC3 default = 1.0 caption = "Amplitude C3" visible = @showfn3 && @seq != 2 endparam float param dAmpC3 default = 0.0 caption = "Delta Amplitude C3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqC3 default = 1.0 caption = "Frequency C3" visible = @showfn3 && @seq != 2 endparam float param dFreqC3 default = 0.0 caption = "Delta Frequency C3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnD3 default = cos() caption = "Function D3" visible = @showfn3 && @seq != 2 endfunc float param ampD3 default = 1.0 caption = "Amplitude D3" visible = @showfn3 && @seq != 2 endparam float param dAmpD3 default = 0.0 caption = "Delta Amplitude D3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqD3 default = 1.0 caption = "Frequency D3" visible = @showfn3 && @seq != 2 endparam float param dFreqD3 default = 0.0 caption = "Delta Frequency D3" visible = @showfn3 && @seq != 2 && @progressive endparam ;========================================== Function 4 heading caption = "Function 4" visible = @showfn4 && @seq != 1 endheading func fcnA4 default = sinh() caption = "Function A4" visible = @showfn4 && @seq != 1 endfunc float param ampA4 default = 1.0 caption = "Amplitude A4" visible = @showfn4 && @seq != 1 endparam float param dAmpA4 default = 0.0 caption = "Delta Amplitude A4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqA4 default = 1.0 caption = "Frequency A4" visible = @showfn4 && @seq != 1 endparam float param dFreqA4 default = 0.0 caption = "Delta Frequency A4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnB4 default = cos() caption = "Function B4" visible = @showfn4 && @seq != 1 endfunc float param ampB4 default = 1.0 caption = "Amplitude B4" visible = @showfn4 && @seq != 1 endparam float param dAmpB4 default = 0.0 caption = "Delta Amplitude B4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqB4 default = 1.0 caption = "Frequency B4" visible = @showfn4 && @seq != 1 endparam float param dFreqB4 default = 0.0 caption = "Delta Frequency B4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnC4 default = cos() caption = "Function C4" visible = @showfn4 && @seq != 1 endfunc float param ampC4 default = 1.0 caption = "Amplitude C4" visible = @showfn4 && @seq != 1 endparam float param dAmpC4 default = 0.0 caption = "Delta Amplitude C4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqC4 default = 1.0 caption = "Frequency C4" visible = @showfn4 && @seq != 1 endparam float param dFreqC4 default = 0.0 caption = "Delta Frequency C4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnD4 default = sin() caption = "Function D4" visible = @showfn4 && @seq != 1 endfunc float param ampD4 default = 1.0 caption = "Amplitude D4" visible = @showfn4 && @seq != 1 endparam float param dAmpD4 default = 0.0 caption = "Delta Amplitude D4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqD4 default = 1.0 caption = "Frequency D4" visible = @showfn4 && @seq != 1 endparam float param dFreqD4 default = 0.0 caption = "Delta Frequency D4" visible = @showfn4 && @seq != 1 && @progressive endparam heading caption = "Enhancement Params" endheading bool param opvar caption = "Operator Params" default = false endparam bool param expvar caption = "Exponent Params" default = false endparam bool param shapevar caption = "Shape Params" default = false endparam bool param stylevar caption = "Style Params" default = false endparam bool param globfcnvar caption = "Global Functions" default = false endparam bool param fbmvar caption = "fBm Params" default = false visible = @dofBm==true endparam heading caption = "Operator Params" visible = @opvar endheading param op1 caption = "Operator 1" enum = "+++""++-""+-+""-++""+--""--+""-+-""---" default = 0 visible = @opvar endparam param op2 caption = "Operator 2" enum = "+++""++-""+-+""-++""+--""--+""-+-""---" default = 0 visible = @opvar endparam param op3 caption = "Global Operator 1" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param op4 caption = "Global Operator 2" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam heading caption = "Exponent Parameters" visible = @expvar endheading float param exx caption = "X Exponent" default = 1.0 visible = @expvar endparam float param exy caption = "Y Exponent" default = 1.0 visible = @expvar endparam complex param a caption = "Exponent 1" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param b caption = "Exponent 2" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param c caption = "Exponent 3" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param d caption = "Exponent 4" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param q caption = "Exponent 5" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param f caption = "Exponent 6" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param g caption = "Exponent 7" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param h caption = "Exponent 8" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param i caption = "Exponent 9" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param j caption = "Exponent 10" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param k caption = "Exponent 11" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param l caption = "Exponent 12" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param m caption = "Exponent 13" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param n caption = "Exponent 14" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param o caption = "Exponent 15" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param p caption = "Exponent 16" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam heading caption = "Shape Parameters" visible = @shapevar endheading complex param ex1 caption = "X Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param mx1 caption = "X Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param px1 caption = "X Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param ey1 caption = "Y Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param my1 caption = "Y Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param py1 caption = "Y Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param pc1 caption = "C Shape" default = (0.0,0.0) visible = @shapevar endparam heading caption = "Style Parameters" visible = @stylevar endheading param style1 caption = "Variable 1" default = false visible = @stylevar && @seq != 2 endparam param style2 caption = "Variable 2" default = false visible = @stylevar && @seq != 2 endparam param style3 caption = "Variable 3" default = false visible = @stylevar && @seq != 2 endparam param style4 caption = "Variable 4" default = false visible = @stylevar && @seq != 2 endparam param style5 caption = "Variable 5" default = false visible = @stylevar && @seq != 2 endparam param style6 caption = "Variable 6" default = false visible = @stylevar && @seq != 2 endparam param style7 caption = "Variable 7" default = false visible = @stylevar && @seq != 2 endparam param style8 caption = "Variable 8" default = false visible = @stylevar && @seq != 2 endparam param style9 caption = "Variable 9" default = false visible = @stylevar && @seq != 1 endparam param style10 caption = "Variable 10" default = false visible = @stylevar && @seq != 1 endparam param style11 caption = "Variable 11" default = false visible = @stylevar && @seq != 1 endparam param style12 caption = "Variable 12" default = false visible = @stylevar && @seq != 1 endparam param style13 caption = "Variable 13" default = false visible = @stylevar && @seq != 1 endparam param style14 caption = "Variable 14" default = false visible = @stylevar && @seq != 1 endparam param style15 caption = "Variable 15" default = false visible = @stylevar && @seq != 1 endparam param style16 caption = "Variable 16" default = false visible = @stylevar && @seq != 1 endparam heading caption = "Global Functions" visible = @globfcnvar endheading func fn1 caption = "Global Function 1" default = ident () visible = @globfcnvar endfunc func fn2 caption = "Global Function 2" default = flip () visible = @globfcnvar endfunc func fn3 caption = "Wild Function 1" default = ident () visible = @globfcnvar endfunc func fn4 caption = "Wild Function 2" default = ident () visible = @globfcnvar endfunc heading caption = "fBm Parameters" visible = @dofBm==true && @fBmvar==true endheading param distortion caption = "Distortion Strength" default = 1.0 hint = "This is the amount the noise distorts the image." visible = @dofBm==true && @fBmvar==true endparam param dstyle caption = "Distortion Style" default = 0 enum = "radial" "linear" hint = "This selects whether the distortion will be focused \ around a single point, or directed along a line." visible = @dofBm==true && @fBmvar==true endparam param distangle caption = "Distortion Angle" default = 0.0 hint = "This is the angle to rotate the distortion." visible = @dofBm==true && @fBmvar==true endparam param distcenter caption = "Distortion Center" default = (0,0) hint = "Sets the center of distortion. If Use Screen \ Center is set, this item is ignored." visible = @dofBm==true && @fBmvar==true endparam param centermove caption = "Use Screen Center" default = FALSE hint = "If set, distortion will be around the center of \ the window, regardless of the Distortion Center \ setting." visible = @dofBm==true && @fBmvar==true endparam param offset caption = "Noise Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @dofBm==true && @fBmvar==true endparam param scale caption = "Noise Scale" default = 1.0 hint = "This is the overall scale of the noise." visible = @dofBm==true && @fBmvar==true endparam param angle caption = "Noise Rotation" default = 0.0 hint = "This is the angle, in degrees, of the noise." visible = @dofBm==true && @fBmvar==true endparam param step caption = "Noise Scale Step" default = 0.5 hint = "This is the step in scale between noise iterations." visible = @dofBm==true && @fBmvar==true endparam param anglestep caption = "Noise Rotation Step" default = 37.0 hint = "This is the angle, in degrees, to rotate between noise \ iterations." visible = @dofBm==true && @fBmvar==true endparam param octaves caption = "Noise Octaves" default = 7 min = 1 hint = "This is the number of iterations of the noise formula." visible = @dofBm==true && @fBmvar==true endparam param npower caption = "Noise Exponent" default = 2.0 hint = "This is the exponent used to scramble numbers." visible = @dofBm==true && @fBmvar==true endparam param noisestart caption = "Start Iteration" default = 0.0 hint = "This is the iteration at which to start adding noise." visible = @dofBm==true && @fBmvar==true endparam param noiseiter caption = "Noise Iterations" default = 10000.0 hint = "This is the number of iterations to add noise to." visible = @dofBm==true && @fBmvar==true endparam param noiseskip caption = "Skip Iterations" default = 0.0 hint = "This is the number of iterations to skip adding noise \ before starting again." visible = @dofBm==true && @fBmvar==true endparam param coloronly caption = "Coloring Only" default = false hint = "If set, noise will only apply to pixel values passed \ to the coloring algorithm; it will not be included in \ the fractal calculation between iterations." visible = @dofBm==true && @fBmvar==true endparam } sdc-dust2dust { ; formulae from Middlekoop's ; Dust program... ; Actually, this is a transmogrification of a number ; of Strange Attractor formulae into escape-time ; formula. ; ; fixed Chip, December 2004, version 1.0 init: complex z = (0.0, 0.0) complex c = #pixel int iter = 0 complex p = @initfn(c) float x = real(p) float y = imag(p) loop: iter = iter + 1 x = real(@loopfnx(x)) y = real(@loopfny(y)) float sx = 1.0 if (x < 0.0) sx = -1.0 endif float tx = x float ty = y if (@method == 0) ; Hopalong x = y - sx * sqrt(abs(@m0pB * x - @m0pC)) y = @m0pA - tx elseif (@method == 1) ; Popcorn x = tx - @m1pH * real(@m1fn1(ty + @m1fn2(@m1pC*ty))) y = ty - @m1pH * real(@m1fn3(tx + @m1fn4(@m1pC*tx))) elseif (@method == 2) ; Gingerbread x = 1.0 - ty + abs(tx) y = tx elseif (@method == 3) ; Three Ply x = ty - sx*abs(sin(tx)*cos(@m3pB) + @m3pC - tx*sin(@m3pA + @m3pB + @m3pC)) y = @m3pA - tx elseif (@method == 4) ; Quadrup Two x = tx - sx*sin(log(abs(@m4pB * ty - @m4pC))) * atan(abs(sqr(@m4pC * tx - @m4pB))) y = @m4pA - tx elseif (@method == 5) ; Martin x = ty - real(@m5fnA(tx)) y = @m5pA - tx elseif (@method == 6) ; Ganymede Standard x = real(@m6f1(@m6pB*ty) + @m6pC*@m6f2(@m6pB*tx)) y = real(@m6f3(@m6pA*tx) + @m6pD*@m6f4(@m6pA*ty)) elseif (@method == 7) ; Ganymede Alpha x = real(@m7f1(@m7pB*ty) + @m7f1(@m7pB*tx)^2 + @m7f1(@m7pB*tx)^3) y = real(@m7f1(@m7pA*tx) + @m7f1(@m7pA*ty)^2 + @m7f1(@m7pC*ty)^3) elseif (@method == 8) ; Ganymede Beta x = real(@m8f1(@m8pB*ty) + @m8f2(@m8pB*tx)) y = real(@m8f3(@m8pA*tx) + @m8f4(@m8pA*ty)) elseif (@method == 9) ; Chip if (@version < 0.9) x = ty - sx*cos(sqr(log(abs(@m9pB*x-@m9pC))))*atan(sqr(log(abs(@m9pC*x-@m9pB)))) y = @m9pA - tx else ;; corrected x = ty - sx*cos(sqr(log(abs(@m9pB*tx-@m9pC))))*atan(sqr(log(abs(@m9pC*tx-@m9pB)))) y = @m9pA - tx endif elseif (@method == 10) ; DeJong ;;xn+1 = sin(a yn) - cos(b xn) ;;yn+1 = sin(c xn) - cos(d yn) x = real( @m10f1(@m10pA*ty) - @m10f2(@m10pB*tx) ) y = real( @m10f3(@m10pC*tx) - @m10f4(@m10pD*ty) ) else endif tx = x ty = y sx = 1.0 ; get the sign of x if (x < 0.0) sx = -1.0 endif if (@perturb == 1) ; Functions x = x + real(@fnx(x))*@px y = y + real(@fny(x))*@py elseif (@perturb == 2) ; Hopalong x = x + (ty - sx * sqrt(abs(@p2pB * tx - @p2pC)))*@px y = y + (@p2pA - tx)*@py elseif (@perturb == 3) ; Popcorn x = x + real(tx - @p3pH * @p3fn1(ty + @p3fn2(@p3pC*ty)))*@px y = y + real(ty - @p3pH * @p3fn3(tx + @p3fn4(@p3pC*tx)))*@py elseif (@perturb == 4) ; Gingerbread x = x + (1.0 - ty + abs(tx))*@px y = y + (tx)*@py elseif (@perturb == 5) ; Three Ply x = x + real(ty - sx*abs(sin(tx)*cos(@p5pB) + @p5pC - tx*sin(@p5pA + @p5pB + @p5pC)))*@px y = y + real(@p5pA - tx)*@py elseif (@perturb == 6 ) ; Quadrup Two x = x + (tx - sx*sin(log(abs(@p6pB * ty - @p6pC))) * atan(abs(sqr(@p6pC * tx - @p6pB))))*@px y = y + (@p6pA - tx)*@py elseif (@perturb == 7 ) ; Martinesque x = x + real(ty - @p7fn(tx))*@px y = y + (@p7pA - tx)*@py elseif (@perturb == 8) ; Chip if (@version < 0.9) x = x + (ty - sx*cos(sqr(log(abs(@p8pB*x-@p8pC))))*atan(sqr(log(abs(@p8pC*x-@p8pB)))))*@px y = y + (@p8pA - tx)*@py else x = ty - sx*cos(sqr(log(abs(@m9pB*tx-@m9pC))))*atan(sqr(log(abs(@m9pC*tx-@m9pB)))) y = @m9pA - tx endif else endif z = @finalfn(x + flip(y)) bailout: iter < #maxiter default: title = "Dust2Dust" method = multipass periodicity = 0 magn = .1 maxiter = 10 float param version default = 1.0 visible = false endparam bool param fBm ;; possible future??? caption = "fBm distortion?" default = false visible = false endparam bool param progressive ;; possible future??? caption = "Progressive Params?" default = false visible = false endparam param method caption = "Attractor Method" enum = "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" \ "Ganymede" \ "Ganymede Alpha" \ "Ganymede Beta" \ "Chip" \ "DeJong" endparam float param m0pA caption = "A" default = 0.4 visible = @method==0 ; Hopalong endparam float param m0pB caption = "B" default = 1.0 visible = @method==0 ; Hopalong endparam float param m0pC caption = "C" default = 0.0 visible = @method==0 ; Hopalong endparam float param m1pH caption = "H" default = 0.05 visible = @method==1 ; Popcorn endparam float param m1pC caption = "c" default = 3.0 visible = @method==1 ; Popcorn endparam func m1fn1 caption = "Popcorn Fn 1" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn2 caption = "Popcorn Fn 2" default = tan() visible = @method==1 ; Popcorn endfunc func m1fn3 caption = "Popcorn Fn 3" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn4 caption = "Popcorn Fn 4" default = tan() visible = @method==1 ; Popcorn endfunc float param m3pA caption = "A" default = -0.2 visible = @method==3 ; Three Ply endparam float param m3pB caption = "B" default = -0.2 visible = @method==3 ; Three Ply endparam float param m3pC caption = "C" default = .42 visible = @method==3 ; Three Ply endparam float param m4pA caption = "A" default = -0.1 visible = @method==4 ; Quadrup Two endparam float param m4pB caption = "B" default = 1.6 visible = @method==4 ; Quadrup Two endparam float param m4pC caption = "C" default = -0.1 visible = @method==4 ; Quadrup Two endparam float param m5pA caption = "A" default = 3.14 visible = @method==5 ; Martin Two endparam func m5fnA caption = "Martin Function" default = sin() visible = @method==5 ; Martinesque endfunc float param m6pA ; Ganymede Standard caption = "a" default = 1.0 visible = @method==6 endparam float param m6pB ; Ganymede Standard caption = "b" default = -1.81 visible = @method==6 endparam float param m6pC ; Ganymede Standard caption = "c" default = 1.339 visible = @method==6 endparam float param m6pD ; Ganymede Standard caption = "d" default = -2.178 visible = @method==6 endparam func m6f1 ; Ganymede Standard caption = "Function 1" default = sin() visible = @method==6 endfunc func m6f2 ; Ganymede Standard caption = "Function 2" default = sin() visible = @method==6 endfunc func m6f3 ; Ganymede Standard caption = "Function 3" default = sin() visible = @method==6 endfunc func m6f4 ; Ganymede Standard caption = "Function 4" default = sin() visible = @method==6 endfunc float param m7pA ; Ganymede Alpha caption = "a" default = 1.0 visible = @method==7 endparam float param m7pB ; Ganymede Alpha caption = "b" default = -1.81 visible = @method==7 endparam float param m7pC ; Ganymede Alpha caption = "c" default = 1.339 visible = @method==7 endparam func m7f1 ; Ganymede Alpha caption = "Function 1" default = sin() visible = @method==7 endfunc func m7f2 ; Ganymede Alpha caption = "Function 2" default = sin() visible = @method==7 endfunc func m7f3 ; Ganymede Alpha caption = "Function 3" default = sin() visible = @method==7 endfunc func m7f4 ; Ganymede Alpha caption = "Function 4" default = sin() visible = @method==7 endfunc func m7f5 ; Ganymede Alpha caption = "Function 5" default = sin() visible = @method==7 endfunc func m7f6 ; Ganymede Alpha caption = "Function 6" default = sin() visible = @method==7 endfunc float param m8pA ; Ganymede Beta caption = "a" default = 1.0 visible = @method==8 endparam float param m8pB ; Ganymede Beta caption = "b" default = 2.4 visible = @method==8 endparam func m8f1 ; Ganymede Beta caption = "Function 1" default = sin() visible = @method==8 endfunc func m8f2 ; Ganymede Beta caption = "Function 2" default = sin() visible = @method==8 endfunc func m8f3 ; Ganymede Beta caption = "Function 3" default = sin() visible = @method==8 endfunc func m8f4 ; Ganymede Beta caption = "Function 4" default = sin() visible = @method==8 endfunc float param m9pA ; Chip caption = "a" default = -1.0 visible = @method==9 endparam float param m9pB ; Chip caption = "b" default = -2.0 visible = @method==9 endparam float param m9pC ; Chip caption = "c" default = 0.2 visible = @method==9 endparam float param m10pA ; DeJong caption = "a" default = 2.01 visible = @method==10 endparam float param m10pB ; DeJong caption = "b" default = -2.53 visible = @method==10 endparam float param m10pC ; DeJong caption = "c" default = 1.61 visible = @method==10 endparam float param m10pD ; DeJong caption = "d" default = -.33 visible = @method==10 endparam func m10f1 caption = "Function 1" default = sin() visible = @method==10 endfunc func m10f2 caption = "Function 2" default = cos() visible = @method==10 endfunc func m10f3 caption = "Function 3" default = sin() visible = @method==10 endfunc func m10f4 caption = "Function 4" default = cos() visible = @method==10 endfunc heading caption = "End Attractor Params" endheading func initfn caption = "Initial Function" default = ident() endfunc func finalfn caption = "Final Function" default = ident() endfunc func loopfnx caption = "Loop X function" default = ident() endfunc func loopfny caption = "Loop Y function" default = ident() endfunc heading caption = "Perturbation" endheading param perturb caption = "Perturbation Method" enum = "None" \ "Functions" \ "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" \ "Chip" default = 0 endparam float param px caption = "X perturbation" default = 0.0 visible = (@perturb != 0) endparam func fnx caption = "X perturb fn" default = ident() visible = (@perturb == 1) endfunc float param py caption = "Y perturbation" default = 0.0 visible = (@perturb != 0) endparam func fny caption = "Y perturb fn" default = ident() visible = (@perturb == 1) endfunc float param p2pA caption = "A" default = 0.4 visible = @perturb==2 ; Hopalong endparam float param p2pB caption = "B" default = 1.0 visible = @perturb==2 ; Hopalong endparam float param p2pC caption = "C" default = 0.0 visible = @perturb==2 ; Hopalong endparam float param p3pH caption = "H" default = 0.05 visible = @perturb==3 ; Popcorn endparam float param p3pC caption = "C" default = 3.00 visible = @perturb==3 ; Popcorn endparam func p3fn1 caption = "Popcorn Fn 1" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn2 caption = "Popcorn Fn 2" default = tan() visible = @perturb==3 ; Popcorn endfunc func p3fn3 caption = "Popcorn Fn 3" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn4 caption = "Popcorn Fn 4" default = tan() visible = @perturb==3 ; Popcorn endfunc float param p5pA caption = "A" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param p5pB caption = "B" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param p5pC caption = "C" default = -0.42 visible = @perturb==5 ; Three Ply endparam float param p6pA caption = "A" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p6pB caption = "B" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p6pC caption = "C" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p7pA caption = "A" default = 3.14 visible = @perturb==7 ; Quadrup Two endparam func p7fn ; Martin caption = "Martin Function" default = sin() visible = @perturb==7 endfunc float param p8pA ; Chip caption = "a" default = -1.5 visible = @perturb==8 endparam float param p8pB ; Chip caption = "b" default = -1.9 visible = @perturb==8 endparam float param p8pC ; Chip caption = "c" default = 1.0 visible = @perturb==8 endparam } sdc-slope-tenebrae { ; Inspired by Clifford Pickover function ; The Method A "Mandelbrot" is an allover, ; space filling function when the Method ; functions are trigonometric, which was ; the form of Pickover's function ; Method C has some interesting "Julias" ; even though the "Mandelbrot" appears black. ; Susan D. Chambless, June, 2004 init: ; default to Mandelbrot complex x1 = @initfn1(0) complex y1 = @initfn1(0) if (@version < 1.1) x1 = @initfn1(0) y1 = @initfn2(0) endif complex x2 = x1 complex y2 = y1 complex x3 = x1 complex y3 = y1 complex cx1 = @initfn2(real(#pixel)) complex cy1 = @initfn2(imag(#pixel)) if (@version < 1.1) cx1 = @initfn1(real(#pixel)) cy1 = @initfn2(imag(#pixel)) endif complex cx2 = cx1+@offset complex cy2 = cy1 complex cx3 = cx1 complex cy3 = cy1+@offset if (@mode == "Julia") x1 = @initfn1(real(#pixel)) y1 = @initfn1(imag(#pixel)) if (@version < 1.1) x1 = @initfn1(real(#pixel)) y1 = @initfn2(imag(#pixel)) endif x2 = x1 + @offset y2 = y1 x2 = x1 y3 = y1 + @offset cx1 = @initfn1(real(@seed)) cy1 = @initfn2(imag(@seed)) if (@version < 1.1) cx1 = @initfn2(real(@seed)) cy1 = @initfn2(imag(@seed)) endif cx2 = cx1 cy2 = cy2 cx3 = cx1 cy3 = cy2 endif complex rcx1 = @rho * cx1 complex rcy1 = @rho * cy1 complex rcx2 = @rho * cx2 complex rcy2 = @rho * cy2 complex rcx3 = @rho * cx3 complex rcy3 = @rho * cy3 ;;; slope stuff int done = 2 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float d1 = 0.0; distances float d2 = 0.0 float d3 = 0.0 float s1 = 1.0e20; smallest distances float s2 = 1.0e20 float s3 = 1.0e20 float iterexp1 = 0.0 float iterexp2 = 0.0 float iterexp3 = 0.0 loop: x1 = @loopfn1(x1) y1 = @loopfn2(y1) x2 = @loopfn1(x2) y2 = @loopfn2(y2) x3 = @loopfn1(x3) y3 = @loopfn2(y3) if (@method == "A") if (@power == "1") tx = x1 - @h*(@fn1(y1 + @fn2(@rho * y1 + cx1))) y1 = y1 + @h*(@fn3(x1 + @fn4(@rho * x1 + cy1))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@rho * y2 + cx2))) y2 = y2 + @h*(@fn3(x2 + @fn4(@rho * x2 + cy2))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@rho * y3 + cx3))) y3 = y3 + @h*(@fn3(x3 + @fn4(@rho * x3 + cy3))) x3 = tx elseif (@power == "2") tx = x1 - @h*(@fn1(y1 + @fn2(y1 + @fn2(@rho * y1 + cx1) + cx1))) y1 = y1 + @h*(@fn3(x1 + @fn4(x1 + @fn4(@rho * x1 + cy1) + cy1))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(y2 + @fn2(@rho * y2 + cx2) + cx2))) y2 = y2 + @h*(@fn3(x2 + @fn4(x2 + @fn4(@rho * x2 + cy2) + cy2))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(y3 + @fn2(@rho * y3 + cx3) + cx3))) y3 = y3 + @h*(@fn3(x3 + @fn4(x3 + @fn4(@rho * x3 + cy3) + cy3))) x3 = tx elseif (@power == "3") tx = x1 - @h*(@fn1(y1 + @fn2(@fn2(@fn2(@rho * y1 + cx1) + cx1) + cx1))) y1 = y1 + @h*(@fn3(x1 + @fn4(@fn4(@fn4(@rho * x1 + cy1) + cy1) + cy1))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@fn2(@fn2(@rho * y2 + cx2) + cx2) + cx2))) y2 = y2 + @h*(@fn3(x2 + @fn4(@fn4(@fn4(@rho * x2 + cy2) + cy2) + cy2))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@fn2(@fn2(@rho * y3 + cx3) + cx3) + cx3))) y3 = y3 + @h*(@fn3(x3 + @fn4(@fn4(@fn4(@rho * x3 + cy3) + cy3) + cy3))) x3 = tx endif elseif (@method == "B") if (@power == "1") tx = x1 - @h*(@fn1(y1 + @fn2(@rho * y1))) + cx1 y1 = y1 + @h*(@fn3(x1 + @fn4(@rho * x1))) + cy1 x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@rho * y2))) + cx2 y2 = y2 + @h*(@fn3(x2 + @fn4(@rho * x2))) + cy2 x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@rho * y3))) + cx3 y3 = y3 + @h*(@fn3(x3 + @fn4(@rho * x3))) + cy3 x3 = tx elseif (@power == "2") tx = x1 - @h*(@fn1(y1 + @fn2(@fn2(@rho * y1)))) + cx1 y1 = y1 + @h*(@fn3(x1 + @fn4(@fn4(@rho * x1)))) + cy1 x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@fn2(@rho * y2)))) + cx2 y2 = y2 + @h*(@fn3(x2 + @fn4(@fn4(@rho * x2)))) + cy2 x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@fn2(@rho * y3)))) + cx3 y3 = y3 + @h*(@fn3(x3 + @fn4(@fn4(@rho * x3)))) + cy3 x3 = tx elseif (@power == "3") tx = x1 - @h*(@fn1(y1 + @fn2(@fn2(@fn2(@rho * y1))))) + cx1 y1 = y1 + @h*(@fn3(x1 + @fn4(@fn4(@fn4(@rho * x1))))) + cy1 x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@fn2(@fn2(@rho * y2))))) + cx2 y2 = y2 + @h*(@fn3(x2 + @fn4(@fn4(@fn4(@rho * x2))))) + cy2 x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@fn2(@fn2(@rho * y3))))) + cx3 y3 = y3 + @h*(@fn3(x3 + @fn4(@fn4(@fn4(@rho * x3))))) + cy3 x3 = tx endif elseif (@method == "C") if (@power == "1") tx = x1 - @h*(@fn1(y1 + @fn2(rcx1 * y1))) y1 = y1 + @h*(@fn3(x1 + @fn4(rcy1 * x1))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(rcx2 * y2))) y2 = y2 + @h*(@fn3(x2 + @fn4(rcy2 * x2))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(rcx3 * y3))) y3 = y3 + @h*(@fn3(x3 + @fn4(rcy3 * x3))) x3 = tx elseif (@power == "2") tx = x1 - @h*(@fn1(y1 + @fn2(@fn2(rcx1 * y1)))) y1 = y1 + @h*(@fn3(x1 + @fn4(@fn4(rcy1 * x1)))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@fn2(rcx2 * y2)))) y2 = y2 + @h*(@fn3(x2 + @fn4(@fn4(rcy2 * x2)))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@fn2(rcx3 * y3)))) y3 = y3 + @h*(@fn3(x3 + @fn4(@fn4(rcy3 * x3)))) x3 = tx elseif (@power == "3") tx = x1 - @h*(@fn1(y1 + @fn2(@fn2(@fn2(rcx1 * y1))))) y1 = y1 + @h*(@fn3(x1 + @fn4(@fn4(@fn4(rcy1 * x1))))) x1 = tx tx = x2 - @h*(@fn1(y2 + @fn2(@fn2(@fn2(rcx2 * y2))))) y2 = y2 + @h*(@fn3(x2 + @fn4(@fn4(@fn4(rcy2 * x2))))) x2 = tx tx = x3 - @h*(@fn1(y3 + @fn2(@fn2(@fn2(rcx3 * y3))))) y3 = y3 + @h*(@fn3(x3 + @fn4(@fn4(@fn4(rcy3 * x3))))) x3 = tx endif endif z1 = @finfn1(x1) + flip( @finfn2(y1) ) z2 = @finfn1(x2) + flip( @finfn2(y2) ) z3 = @finfn1(x3) + flip( @finfn2(y3) ) if (@slope == true) ;;;; process slope IF (@zmode == 5) iterexp1 = iterexp1 + exp(-cabs(z1)) iterexp2 = iterexp2 + exp(-cabs(z2)) iterexp3 = iterexp3 + exp(-cabs(z3)) ENDIF done = done + 1; increment iteration counter IF (@zmode == 0) ; smallest |z| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 1) ; smallest |real(z)| d1 = abs(real(z1)); get current distances from i axis d2 = abs(real(z2)) d3 = abs(real(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 2) ; smallest |imag(z)| d1 = abs(imag(z1)); get current distances from r axis d2 = abs(imag(z2)) d3 = abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 3) ; smallest |real(z)|+|imag(z)| d1 = abs(real(z1))+abs(imag(z1)); get current distances from i axis d2 = abs(real(z2))+abs(imag(z2)) d3 = abs(real(z3))+abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 4) ; smallest |atan(z)| d1 = abs(atan2(z1)); get current angles d2 = abs(atan2(z2)) d3 = abs(atan2(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ENDIF IF (@bailout < |z1| || \ @everyiter ||\ done == #maxit + 2); done, or every iteration, or last ; determine continuous iteration (height) for each point IF (@zmode >= 0 && @zmode <= 4) ; height based on smallest |z| e1 = s1 * @zscale e2 = s2 * @zscale e3 = s3 * @zscale ELSEIF (@zmode == 5) e1 = iterexp1 * @zscale e2 = iterexp2 * @zscale e3 = iterexp3 * @zscale ENDIF ; apply transfer function ; a function is not used because these are floats ; and not all functions apply to floats IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -@offset ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z = vx + flip(vy); fudge z from vector ELSE; didn't compute z this time z = z1; use primary iteration value to keep periodicity working ENDIF else z = z1 endif IF (@bailout < |z1|) ; we're done done = 0 ENDIF bailout: (done > 0) switch: type = "sdc-slope-tenebrae" version = @version bailout = @bailout mode = @switchmode switchMode = @mode seed = #pixel rho = @rho h = @h fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 method = @method power = @power initfn1 = @initfn1 initfn2 = @initfn2 loopfn1 = @loopfn1 loopfn2 = @loopfn2 finfn1 = @finfn1 finfn2 = @finfn2 slope = @slope offset = @offset zmode = @zmode xfer = @xfer zscale = @zscale zscale2 = @zscale2 everyiter = @everyiter default: title = "Slope Tenebrae" method = multipass periodicity = 0 center = (0.0,0.0) magn = 0.1 maxiter = 100 float param version default = 1.1 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam bool param slope caption = "Apply slope?" default = true endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading param bailout caption = "Bailout" default = 4 min = 0.0 hint = "Defines how soon an orbit bails out, i.e. doesn't \ belong to the set anymore." endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param method caption = "Method" enum = "A" "B" "C" default = 0 endparam param power caption = "Power" enum = "1" "2" "3" default = 0 endparam complex param rho caption = "Frequency Modulation" default = (3.0, 0.0) endparam complex param h caption = "Step Size" default = (0.1, 0.1) endparam func initfn1 caption = "Init X Function" default = ident() endfunc func initfn2 caption = "Init Y Function" default = ident() endfunc func loopfn1 caption = "Loop X Function" default = ident() endfunc func loopfn2 caption = "Loop Y Function" default = ident() endfunc func finfn1 caption = "Final X Function" default = ident() endfunc func finfn2 caption = "Final Y Function" default = ident() endfunc heading caption = "Method Functions" endheading func fn1 caption = "Function 1" default = sin() endfunc func fn2 caption = "Function 2" default = sin() endfunc func fn3 caption = "Function 3" default = sin() endfunc func fn4 caption = "Function 4" default = sin() endfunc heading caption = "Slope Parameters" visible = @slope == true endheading float param offset caption = "Orbit Separation" default = 0.05 hint = "Defines how far apart the simultaneous orbits are. Smaller \ distances will produce more accurate results." visible = @slope == true endparam param zmode caption = "Height Value" default = 5 enum = "smallest |z|" "smallest |real(z)|" \ "smallest |imag(z)|" "smallest summ(z)" "smallest |atan(z)|" \ "smoothed iteration" hint = "Specifies what will be used to construct a height value." visible = @slope == true endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = @slope == true endparam param zscale caption = "Height Pre-Scale" default = 1.0 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = @slope == true endparam param zscale2 caption = "Height Post-Scale" default = 1.0 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = @slope == true endparam param everyiter caption = "Every Iteration" default = true hint = "If set, the surface normal will be computed at every \ iteration. If you are using a coloring algorithm which \ processes every iteration, you will need this." visible = @slope == true endparam } sdc-slope-manjul { ; Simple mandelbrot-julia switch ; Template for many of my formulae ; Jazzed up with a couple of functions init: ;default to Mandelbrot complex c1 = #pixel complex c2 = c1 + @offset complex c3 = c1 + flip(@offset) complex z1 = @z0 complex z2 = z1 complex z3 = z1 if( @mode == "Julia" ) z1 = #pixel z2 = z1 + @offset z3 = z1 + flip(@offset) c1 = @seed c2 = c1 c3 = c1 endif ;;; slope stuff int done = 2 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float d1 = 0.0; distances float d2 = 0.0 float d3 = 0.0 float s1 = 1.0e20; smallest distances float s2 = 1.0e20 float s3 = 1.0e20 float iterexp1 = 0.0 float iterexp2 = 0.0 float iterexp3 = 0.0 loop: if (@disected == false) if (@method == 0) z1 = @fn1(z1^@pow) + c1 z2 = @fn1(z2^@pow) + c2 z3 = @fn1(z3^@pow) + c3 else z1 = @fn1(z1)^@pow + c1 z2 = @fn1(z2)^@pow + c2 z3 = @fn1(z3)^@pow + c3 endif else float x1 = real(z1) float x2 = real(z2) float x3 = real(z3) float y1 = imag(z1) float y2 = imag(z2) float y3 = imag(z3) if (@method == 0) x1 = real( @fn1(x1^@pow) ) x2 = real( @fn1(x2^@pow) ) x3 = real( @fn1(x3^@pow) ) y1 = real( @fn1(y1^@pow) ) y2 = real( @fn1(y2^@pow) ) y3 = real( @fn1(y3^@pow) ) else x1 = real( @fn1(x1)^@pow ) x2 = real( @fn1(x2)^@pow ) x3 = real( @fn1(x3)^@pow ) y1 = real( @fn1(y1)^@pow ) y2 = real( @fn1(y2)^@pow ) y3 = real( @fn1(y3)^@pow ) endif z1 = x1 - flip(y1) + c1 z2 = x2 - flip(y2) + c2 z3 = x3 - flip(y3) + c3 endif if (@slope == true) ;;;; process slope IF (@zmode == 5) iterexp1 = iterexp1 + exp(-cabs(z1)) iterexp2 = iterexp2 + exp(-cabs(z2)) iterexp3 = iterexp3 + exp(-cabs(z3)) ENDIF done = done + 1; increment iteration counter IF (@zmode == 0) ; smallest |z| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 1) ; smallest |real(z)| d1 = abs(real(z1)); get current distances from i axis d2 = abs(real(z2)) d3 = abs(real(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 2) ; smallest |imag(z)| d1 = abs(imag(z1)); get current distances from r axis d2 = abs(imag(z2)) d3 = abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 3) ; smallest |real(z)|+|imag(z)| d1 = abs(real(z1))+abs(imag(z1)); get current distances from i axis d2 = abs(real(z2))+abs(imag(z2)) d3 = abs(real(z3))+abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 4) ; smallest |atan(z)| d1 = abs(atan2(z1)); get current angles d2 = abs(atan2(z2)) d3 = abs(atan2(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ENDIF IF (@bailout < |z1| || \ @everyiter ||\ done == #maxiter + 2); done, or every iteration, or last ; determine continuous iteration (height) for each point IF (@zmode >= 0 && @zmode <= 4) ; height based on smallest |z| e1 = s1 * @zscale e2 = s2 * @zscale e3 = s3 * @zscale ELSEIF (@zmode == 5) e1 = iterexp1 * @zscale e2 = iterexp2 * @zscale e3 = iterexp3 * @zscale ENDIF ; apply transfer function ; a function is not used because these are floats ; and not all functions apply to floats IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -@offset ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z = vx + flip(vy); fudge z from vector ELSE; didn't compute z this time z = z1; use primary iteration value to keep periodicity working ENDIF else z = z1 endif IF (@bailout < |z1|) ; we're done done = 0 ENDIF bailout: (done > 0) switch: type = "sdc-slope-manjul" bailout = @bailout mode = @switchmode switchMode = @mode version = @version seed = #pixel fn1 = @fn1 pow = @pow method = @method disected = @disected slope = @slope offset = @offset zmode = @zmode xfer = @xfer zscale = @zscale zscale2 = @zscale2 everyiter = @everyiter default: title = "Slope ManJul" method = multipass periodicity = 0 magn = 1 maxiter = 100 param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" visible = false endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" visible = false endparam float param version default = 1.0 visible = false endparam heading caption = "Mandlebrot Mode" visible = @mode==0 endheading heading caption = "Julia Mode" visible = @mode==1 endheading float param bailout caption = "Bailout" default = 4.0 endparam param seed caption = "Julia Seed" default = (0.0, 0.0) visible = @mode==1 endparam param z0 caption = "Initial Z" default = (0.0, 0.0) visible = @mode==0 endparam param method caption = "Method" enum = "f(z^p)" "f(z)^p" default = 0 endparam bool param disected Caption = "Disected?" default = false endparam param pow caption = "Power" default = (1.0, 0.0) endparam func fn1 caption = "Function" default = sqr() endfunc bool param slope caption = "Apply slope?" default = true endparam heading caption = "Slope Parameters" visible = @slope == true endheading float param offset caption = "Orbit Separation" default = 0.005 hint = "Defines how far apart the simultaneous orbits are. Smaller \ distances will produce more accurate results." visible = @slope == true endparam param zmode caption = "Height Value" default = 5 enum = "smallest |z|" "smallest |real(z)|" \ "smallest |imag(z)|" "smallest summ(z)" "smallest |atan(z)|" \ "smoothed iteration" hint = "Specifies what will be used to construct a height value." visible = @slope == true endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = @slope == true endparam param zscale caption = "Height Pre-Scale" default = 1.0 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = @slope == true endparam param zscale2 caption = "Height Post-Scale" default = 1.0 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = @slope == true endparam param everyiter caption = "Every Iteration" default = true hint = "If set, the surface normal will be computed at every \ iteration. If you are using a coloring algorithm which \ processes every iteration, you will need this." visible = @slope == true endparam } sdc-slope-kology-t { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads ; Greatly enhanced by Toby, August 2003 ; ; Damien's fBm added November, 2004, at the suggestion ; of Gilles Nadeau: ; This is the basic Kology type, but with a ; bit of fBm noise added at each iteration. This ; tends to distort the fractal beyond all recognition ; after just a few iterations, which may or may not ; be what you're looking for. ; ; You can also use the "Coloring Only" option to ; restrict the fBm distortion to the value passed ; to the coloring algorithm; the distortion will be ; removed before the next iteration is calculated. ; ; Toby's progressive parameter method added ; November, 2004. ; ; Thanks to Ron Barnett for help with the slope version, ; December, 2004 ; init: ;default to Mandelbrot complex c1 = #pixel complex c2 = c1 + @offset complex c3 = c1 + flip(@offset) complex z1 = ( 0.0, 0.0 ) complex z2 = z1 complex z3 = z1 if( @mode == "Julia" ) z1 = #pixel z2 = z1 + @offset z3 = z1 + flip(@offset) c1 = @startseed c2 = c1 c3 = c1 endif float x1 = real(@fn3(z1^@exx)) float x2 = real(@fn3(z2^@exx)) float x3 = real(@fn3(z3^@exx)) float y1 = imag(@fn4(z1^@exy)) float y2 = imag(@fn4(z2^@exy)) float y3 = imag(@fn4(z3^@exy)) z1 = x1 + flip(y1) z2 = x2 + flip(y2) z3 = x3 + flip(y3) int iter=0 int testiter = #maxiter - 1 int seed = random(@randomseed) float xA1 = 0.0 float xA2 = 0.0 float xA3 = 0.0 float xB1 = 0.0 float xB2 = 0.0 float xB3 = 0.0 float yA1 = 0.0 float yA2 = 0.0 float yA3 = 0.0 float yB1 = 0.0 float yB2 = 0.0 float yB3 = 0.0 float xx1 = 0.0 float xx2 = 0.0 float xx3 = 0.0 float yy1 = 0.0 float yy2 = 0.0 float yy3 = 0.0 float pAmpA1 = @ampA1 float pFreqA1 = @freqA1 float pAmpB1 = @ampB1 float pFreqB1 = @freqB1 float pAmpC1 = @ampC1 float pFreqC1 = @freqC1 float pAmpD1 = @ampD1 float pFreqD1 = @freqD1 float pAmpA2 = @ampA2 float pFreqA2 = @freqA2 float pAmpB2 = @ampB2 float pFreqB2 = @freqB2 float pAmpC2 = @ampC2 float pFreqC2 = @freqC2 float pAmpD2 = @ampD2 float pFreqD2 = @freqD2 float pAmpA3 = @ampA3 float pFreqA3 = @freqA3 float pAmpB3 = @ampB3 float pFreqB3 = @freqB3 float pAmpC3 = @ampC3 float pFreqC3 = @freqC3 float pAmpD3 = @ampD3 float pFreqD3 = @freqD3 float pAmpA4 = @ampA4 float pFreqA4 = @freqA4 float pAmpB4 = @ampB4 float pFreqB4 = @freqB4 float pAmpC4 = @ampC4 float pFreqC4 = @freqC4 float pAmpD4 = @ampD4 float pFreqD4 = @freqD4 bool cng11plus = false bool cng12plus = false bool cng13plus = false bool cng14plus = false if (@cng1 == "++++") cng11plus = true cng12plus = true cng13plus = true cng14plus = true elseif (@cng1 == "+++-") cng11plus = true cng12plus = true cng13plus = true elseif (@cng1 == "++-+") cng11plus = true cng12plus = true cng14plus = true elseif (@cng1 == "+-++") cng11plus = true cng13plus = true cng14plus = true elseif (@cng1 == "-+++") cng12plus = true cng13plus = true cng14plus = true elseif (@cng1 == "-++-") cng12plus = true cng13plus = true elseif (@cng1 == "-+-+") cng12plus = true cng14plus = true elseif (@cng1 == "--++") cng13plus = true cng14plus = true elseif (@cng1 == "+-+-") cng11plus = true cng13plus = true elseif (@cng1 == "+--+") cng11plus = true cng14plus = true elseif (@cng1 == "++--") cng11plus = true cng12plus = true elseif (@cng1 == "+---") cng11plus = true elseif (@cng1 == "-+--") cng12plus = true elseif (@cng1 == "--+-") cng13plus = true elseif (@cng1 == "---+") cng14plus = true else ;all minus endif bool cng21plus = false bool cng22plus = false bool cng23plus = false bool cng24plus = false if (@cng2 == "++++") cng21plus = true cng22plus = true cng23plus = true cng24plus = true elseif (@cng2 == "+++-") cng21plus = true cng22plus = true cng23plus = true elseif (@cng2 == "++-+") cng21plus = true cng22plus = true cng24plus = true elseif (@cng2 == "+-++") cng21plus = true cng23plus = true cng24plus = true elseif (@cng2 == "-+++") cng22plus = true cng23plus = true cng24plus = true elseif (@cng2 == "-++-") cng22plus = true cng23plus = true elseif (@cng2 == "-+-+") cng22plus = true cng24plus = true elseif (@cng2 == "--++") cng23plus = true cng24plus = true elseif (@cng2 == "+-+-") cng21plus = true cng23plus = true elseif (@cng2 == "+--+") cng21plus = true cng24plus = true elseif (@cng2 == "++--") cng21plus = true cng22plus = true elseif (@cng2 == "+---") cng21plus = true elseif (@cng2 == "-+--") cng22plus = true elseif (@cng2 == "--+-") cng23plus = true elseif (@cng2 == "---+") cng24plus = true else ;all minus endif ;;; slope stuff int done = 2 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float d1 = 0.0; distances float d2 = 0.0 float d3 = 0.0 float s1 = 1.0e20; smallest distances float s2 = 1.0e20 float s3 = 1.0e20 float iterexp1 = 0.0 float iterexp2 = 0.0 float iterexp3 = 0.0 loop: float oldx1 = real(z1) float oldx2 = real(z2) float oldx3 = real(z2) float oldy1 = imag(z1) float oldy2 = imag(z2) float oldy3 = imag(z3) iter = iter + 1 ; Determine formula to be used: bool formula1 = false if ( @seq == 1 ) ; First formula formula1 = true elseif ( @seq == 2 ) ; Second formula formula1 = false elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true else formula1 = false endif if (@invertMod == true) formula1 = !formula1 endif elseif ( @seq == 0 ); Modulation if (iter % @modBy < @modCmp) formula1 = true else formula1 = false endif if (@invertMod == true) formula1 = !formula1 endif endif if @style1 == true aa1 = oldx1 aa2 = oldx2 aa3 = oldx3 else aa1 = oldy1 aa2 = oldy2 aa3 = oldy3 endif if @style2 == true bb1 = oldx1 bb2 = oldx2 bb3 = oldx3 else bb1 = oldy1 bb2 = oldy2 bb3 = oldy3 endif if @style3 == true cc1 = oldx1 cc2 = oldx2 cc3 = oldx3 else cc1 = oldy1 cc2 = oldy2 cc3 = oldy3 endif if @style4 == true dd1 = oldx1 dd2 = oldx2 dd3 = oldx3 else dd1 = oldy1 dd2 = oldy2 dd3 = oldy3 endif if @style5 == true ee1 = oldy1 ee2 = oldy2 ee3 = oldy3 else ee1 = oldx1 ee2 = oldx2 ee3 = oldx3 endif if @style6 == true ff1 = oldy1 ff2 = oldy2 ff3 = oldy3 else ff1 = oldx1 ff2 = oldx2 ff3 = oldx3 endif if @style7 == true gg1 = oldy1 gg2 = oldy2 gg3 = oldy3 else gg1 = oldx1 gg2 = oldx2 gg3 = oldx3 endif if @style8 == true hh1 = oldy1 hh2 = oldy2 hh3 = oldy3 else hh1 = oldx1 hh2 = oldx2 hh3 = oldx3 endif if (formula1 == true) if (cng11plus == true) xA1 = pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@exp1 + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) xA2 = pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@exp1 + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) xA3 = pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@exp1 + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) else ; it is minus xA1 = pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@exp1 - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) xA2 = pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@exp1 - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) xA3 = pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@exp1 - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@exp2 )))) endif if (cng12plus == true) xB1 = pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@exp3 + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@exp4 )))) xB2 = pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@exp3 + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@exp4 )))) xB3 = pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@exp3 + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@exp4 )))) else ; it is minus xB1 = pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@exp3 - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@exp4 )))) xB2 = pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@exp3 - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@exp4 )))) xB3 = pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@exp3 - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@exp4 )))) endif if (cng13plus == true) yA1 = pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@exp5 + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@exp6 )))) yA2 = pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@exp5 + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@exp6 )))) yA3 = pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@exp5 + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@exp6 )))) else ; it is minus yA1 = pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@exp5 - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@exp6 )))) yA2 = pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@exp5 - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@exp6 )))) yA3 = pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@exp5 - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@exp6 )))) endif if (cng14plus == true) yB1 = pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@exp7 + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@exp8 )))) yB2 = pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@exp7 + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@exp8 )))) yB3 = pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@exp7 + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@exp8 )))) else ; it is minus yB1 = pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@exp7 - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@exp8 )))) yB2 = pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@exp7 - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@exp8 )))) yB3 = pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@exp7 - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@exp8 )))) endif if @op11 == "1+2" ; + xx1 = xA1 + xB1 xx2 = xA2 + xB2 xx3 = xA3 + xB3 elseif @op11 == "1-2" ; - xx1 = xA1 - xB1 xx2 = xA2 - xB2 xx3 = xA3 - xB3 elseif @op11 == "2-1" ; - xx1 = xB1 - xA1 xx2 = xB2 - xA2 xx3 = xB3 - xA3 elseif @op11 == "1*2" ; * xx1 = xA1 * xB1 xx2 = xA2 * xB2 xx3 = xA3 * xB3 elseif @op11 == "1/2" ; / xx1 = xA1 / xB1 xx2 = xA2 / xB2 xx3 = xA3 / xB3 elseif @op11 == "2/1" ; / xx1 = xB1 / xA1 xx2 = xB2 / xA2 xx3 = xB3 / xA3 elseif @op11 == "1^2" ; ^ xx1 = xA1 ^ xB1 xx2 = xA2 ^ xB2 xx3 = xA3 ^ xB3 elseif @op11 == "2^1" ; ^ xx1 = xB1 ^ xA1 xx2 = xB2 ^ xA2 xx3 = xB3 ^ xA3 endif if @op12 == "1+2" ; + yy1 = yA1 + yB1 yy2 = yA2 + yB2 yy3 = yA3 + yB3 elseif @op12 == "1-2" ; - yy1 = yA1 - yB1 yy2 = yA2 - yB2 yy3 = yA3 - yB3 elseif @op12 == "2-1" ; - yy1 = yB1 - yA1 yy2 = yB2 - yA2 yy3 = yB3 - yA3 elseif @op12 == "1*2" ; * yy1 = yA1 * yB1 yy2 = yA2 * yB2 yy2 = yA3 * yB3 elseif @op12 == "1/2" ; / yy1 = yA1 / yB1 yy2 = yA2 / yB2 yy3 = yA3 / yB3 elseif @op12 == "2/1" ; / yy1 = yB1 / yA1 yy2 = yB2 / yA2 yy3 = yB3 / yA3 elseif @op12 == "1^2" ; ^ yy1 = yA1 ^ yB1 yy2 = yA2 ^ yB2 yy3 = yA3 ^ yB2 elseif @op12 == "2^1" ; ^ yy1 = yB1 ^ yA1 yy1 = yB2 ^ yA2 yy1 = yB3 ^ yA3 endif else ; formula 2 if (cng21plus == true) xA1 = pAmpA2 * real(@fcnA2(pFreqA2 * aa1^@exp1 + \ pAmpB2 * real(@fcnB2(pFreqB2 * bb1^@exp2 )))) xA2 = pAmpA2 * real(@fcnA2(pFreqA2 * aa2^@exp1 + \ pAmpB2 * real(@fcnB2(pFreqB2 * bb2^@exp2 )))) xA3 = pAmpA2 * real(@fcnA2(pFreqA2 * aa3^@exp1 + \ pAmpB2 * real(@fcnB2(pFreqB2 * bb3^@exp2 )))) else xA1 = pAmpA2 * real(@fcnA2(pFreqA2 * aa1^@exp1 - \ pAmpB2 * real(@fcnB2(pFreqB2 * bb1^@exp2 )))) xA2 = pAmpA2 * real(@fcnA2(pFreqA2 * aa2^@exp1 - \ pAmpB2 * real(@fcnB2(pFreqB2 * bb2^@exp2 )))) xA3 = pAmpA2 * real(@fcnA2(pFreqA2 * aa3^@exp1 - \ pAmpB2 * real(@fcnB2(pFreqB2 * bb3^@exp2 )))) endif if (cng22plus == true) xB1 = pAmpC2 * real(@fcnC2(pFreqC2 * cc1^@exp3 + \ pAmpD2 * real(@fcnD2(pFreqD2 * dd1^@exp4 )))) xB2 = pAmpC2 * real(@fcnC2(pFreqC2 * cc2^@exp3 + \ pAmpD2 * real(@fcnD2(pFreqD2 * dd2^@exp4 )))) xB3 = pAmpC2 * real(@fcnC2(pFreqC2 * cc3^@exp3 + \ pAmpD2 * real(@fcnD2(pFreqD2 * dd3^@exp4 )))) else xB1 = pAmpC2 * real(@fcnC2(pFreqC2 * cc1^@exp3 - \ pAmpD2 * real(@fcnD2(pFreqD2 * dd1^@exp4 )))) xB2 = pAmpC2 * real(@fcnC2(pFreqC2 * cc2^@exp3 - \ pAmpD2 * real(@fcnD2(pFreqD2 * dd2^@exp4 )))) xB3 = pAmpC2 * real(@fcnC2(pFreqC2 * cc3^@exp3 - \ pAmpD2 * real(@fcnD2(pFreqD2 * dd3^@exp4 )))) endif if (cng23plus == true) yA1 = pAmpA4 * real(@fcnA4(pFreqA4 * ee1^@exp5 + \ pAmpB4 * real(@fcnB4(pFreqB4 * ff1^@exp6 )))) yA2 = pAmpA4 * real(@fcnA4(pFreqA4 * ee2^@exp5 + \ pAmpB4 * real(@fcnB4(pFreqB4 * ff2^@exp6 )))) yA3 = pAmpA4 * real(@fcnA4(pFreqA4 * ee3^@exp5 + \ pAmpB4 * real(@fcnB4(pFreqB4 * ff3^@exp6 )))) else yA1 = pAmpA4 * real(@fcnA4(pFreqA4 * ee1^@exp5 - \ pAmpB4 * real(@fcnB4(pFreqB4 * ff1^@exp6 )))) yA2 = pAmpA4 * real(@fcnA4(pFreqA4 * ee2^@exp5 - \ pAmpB4 * real(@fcnB4(pFreqB4 * ff2^@exp6 )))) yA3 = pAmpA4 * real(@fcnA4(pFreqA4 * ee3^@exp5 - \ pAmpB4 * real(@fcnB4(pFreqB4 * ff3^@exp6 )))) endif if (cng24plus == true) yB1 = pAmpC4 * real(@fcnC4(pFreqC4 * gg1^@exp7 + \ pAmpD4 * real(@fcnD4(pFreqD4 * hh1^@exp8 )))) yB2 = pAmpC4 * real(@fcnC4(pFreqC4 * gg2^@exp7 + \ pAmpD4 * real(@fcnD4(pFreqD4 * hh2^@exp8 )))) yB3 = pAmpC4 * real(@fcnC4(pFreqC4 * gg3^@exp7 + \ pAmpD4 * real(@fcnD4(pFreqD4 * hh3^@exp8 )))) else yB1 = pAmpC4 * real(@fcnC4(pFreqC4 * gg1^@exp7 - \ pAmpD4 * real(@fcnD4(pFreqD4 * hh1^@exp8 )))) yB2 = pAmpC4 * real(@fcnC4(pFreqC4 * gg2^@exp7 - \ pAmpD4 * real(@fcnD4(pFreqD4 * hh2^@exp8 )))) yB3 = pAmpC4 * real(@fcnC4(pFreqC4 * gg3^@exp7 - \ pAmpD4 * real(@fcnD4(pFreqD4 * hh3^@exp8 )))) endif if @op21 == "1+2" ; + xx1 = xA1 + xB1 xx2 = xA2 + xB2 xx3 = xA3 + xB3 elseif @op21 == "1-2" ; - xx1 = xA1 - xB1 xx2 = xA2 - xB2 xx3 = xA3 - xB3 elseif @op21 == "2-1" ; - xx1 = xB1 - xA1 xx2 = xB2 - xA2 xx3 = xB3 - xA3 elseif @op21 == "1*2" ; * xx1 = xA1 * xB1 xx2 = xA2 * xB2 xx3 = xA3 * xB3 elseif @op21 == "1/2" ; / xx1 = xA1 / xB1 xx2 = xA2 / xB2 xx3 = xA3 / xB3 elseif @op21 == "2/1" ; / xx1 = xB1 / xA1 xx2 = xB2 / xA2 xx3 = xB3 / xA3 elseif @op21 == "1^2" ; ^ xx1 = xA1 ^ xB1 xx2 = xA2 ^ xB2 xx3 = xA3 ^ xB3 elseif @op21 == "2^1" ; ^ xx1 = xB1 ^ xA1 xx2 = xB2 ^ xA2 xx3 = xB3 ^ xA3 endif if @op22 == "1+2" ; + yy1 = yA1 + yB1 yy2 = yA2 + yB2 yy3 = yA3 + yB3 elseif @op22 == "1-2" ; - yy1 = yA1 - yB1 yy2 = yA2 - yB2 yy3 = yA3 - yB3 elseif @op22 == "2-1" ; - yy1 = yB1 - yA1 yy2 = yB2 - yA2 yy3 = yB3 - yA3 elseif @op22 == "1*2" ; * yy1 = yA1 * yB1 yy2 = yA2 * yB2 yy2 = yA3 * yB3 elseif @op22 == "1/2" ; / yy1 = yA1 / yB1 yy2 = yA2 / yB2 yy3 = yA3 / yB3 elseif @op22 == "2/1" ; / yy1 = yB1 / yA1 yy2 = yB2 / yA2 yy3 = yB3 / yA3 elseif @op22 == "1^2" ; ^ yy1 = yA1 ^ yB1 yy2 = yA2 ^ yB2 yy3 = yA3 ^ yB2 elseif @op22 == "2^1" ; ^ yy1 = yB1 ^ yA1 yy1 = yB2 ^ yA2 yy1 = yB3 ^ yA3 endif endif x1 = oldx1 + @multiplier * xx1 x2 = oldx2 + @multiplier * xx2 x3 = oldx3 + @multiplier * xx3 y1 = oldy1 - @multiplier * yy1 y2 = oldy2 - @multiplier * yy2 y3 = oldy3 - @multiplier * yy3 if (@op1 =="+") z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y3^@ey1*@my1-@py1) elseif (@op1 =="-") z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) z3 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) elseif (@op1 =="*") z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) elseif (@op1 =="/") z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) elseif (@op1 =="^") z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) else endif if (@op2 =="+") z1 = z1 + (c1-@pc1) z2 = z2 + (c2-@pc1) z3 = z3 + (c3-@pc1) elseif (@op1 =="-") z1 = z1 - (c1-@pc1) z2 = z2 - (c2-@pc1) z3 = z3 - (c3-@pc1) elseif (@op1 =="*") z1 = z1 * (c1-@pc1) z2 = z2 * (c2-@pc1) z3 = z3 * (c3-@pc1) elseif (@op1 =="/") z1 = z1 / (c1-@pc1) z2 = z2 / (c2-@pc1) z3 = z3 / (c3-@pc1) elseif (@op1 =="^") z1 = z1 ^ (c1-@pc1) z2 = z2 ^ (c2-@pc1) z3 = z3 ^ (c3-@pc1) else endif if (@slope == true) ;;;; process slope IF (@zmode == 5) iterexp1 = iterexp1 + exp(-cabs(z1)) iterexp2 = iterexp2 + exp(-cabs(z2)) iterexp3 = iterexp3 + exp(-cabs(z3)) ENDIF done = done + 1; increment iteration counter IF (@zmode == 0) ; smallest |z| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 1) ; smallest |real(z)| d1 = abs(real(z1)); get current distances from i axis d2 = abs(real(z2)) d3 = abs(real(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 2) ; smallest |imag(z)| d1 = abs(imag(z1)); get current distances from r axis d2 = abs(imag(z2)) d3 = abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 3) ; smallest |real(z)|+|imag(z)| d1 = abs(real(z1))+abs(imag(z1)); get current distances from i axis d2 = abs(real(z2))+abs(imag(z2)) d3 = abs(real(z3))+abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 4) ; smallest |atan(z)| d1 = abs(atan2(z1)); get current angles d2 = abs(atan2(z2)) d3 = abs(atan2(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ENDIF IF (@bailout < |z1| || \ @everyiter ||\ done == testiter + 2); done, or every iteration, or last ; determine continuous iteration (height) for each point IF (@zmode >= 0 && @zmode <= 4) ; height based on smallest |z| e1 = s1 * @zscale e2 = s2 * @zscale e3 = s3 * @zscale ELSEIF (@zmode == 5) e1 = iterexp1 * @zscale e2 = iterexp2 * @zscale e3 = iterexp3 * @zscale ENDIF ; apply transfer function ; a function is not used because these are floats ; and not all functions apply to floats IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -@offset ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z = vx + flip(vy); fudge z from vector ELSE; didn't compute z this time z = z1; use primary iteration value to keep periodicity working ENDIF else z = z1 endif IF (@bailout < |z1|) ; we're done done = 0 ENDIF if (@progressive == true) pAmpA1 = pAmpA1 + @dAmpA1 pAmpB1 = pAmpB1 + @dAmpB1 pAmpC1 = pAmpC1 + @dAmpC1 pAmpD1 = pAmpD1 + @dAmpD1 pAmpA2 = pAmpA2 + @dAmpA2 pAmpB2 = pAmpB2 + @dAmpB2 pAmpC2 = pAmpC2 + @dAmpC2 pAmpD2 = pAmpD2 + @dAmpD2 pAmpA3 = pAmpA3 + @dAmpA3 pAmpB3 = pAmpB3 + @dAmpB3 pAmpC3 = pAmpC3 + @dAmpC3 pAmpD3 = pAmpD3 + @dAmpD3 pAmpA4 = pAmpA4 + @dAmpA4 pAmpB4 = pAmpB4 + @dAmpB4 pAmpC4 = pAmpC4 + @dAmpC4 pAmpD4 = pAmpD4 + @dAmpD4 pFreqA1 = pFreqA1 + @dFreqA1 pFreqB1 = pFreqB1 + @dFreqB1 pFreqC1 = pFreqC1 + @dFreqC1 pFreqD1 = pFreqD1 + @dFreqD1 pFreqA2 = pFreqA2 + @dFreqA2 pFreqB2 = pFreqB2 + @dFreqB2 pFreqC2 = pFreqC2 + @dFreqC2 pFreqD2 = pFreqD2 + @dFreqD2 pFreqA3 = pFreqA3 + @dFreqA3 pFreqB3 = pFreqB3 + @dFreqB3 pFreqC3 = pFreqC3 + @dFreqC3 pFreqD3 = pFreqD3 + @dFreqD3 pFreqA4 = pFreqA4 + @dFreqA4 pFreqB4 = pFreqB4 + @dFreqB4 pFreqC4 = pFreqC4 + @dFreqC4 pFreqD4 = pFreqD4 + @dFreqD4 endif bailout: (done > 0) switch: type = "sdc-slope-kology-t" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp mode = @switchmode switchMode = mode startseed = #pixel randomseed = @randomseed prob1 = @prob1 invertMod = @invertMod doprogressive = @doprogressive fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 fcnA3 = @fcnA3 ampA3 = @ampA3 freqA3 = @freqA3 fcnB3 = @fcnB3 ampB3 = @ampB3 freqB3 = @freqB3 fcnC3 = @fcnC3 ampC3 = @ampC3 freqC3 = @freqC3 fcnD3 = @fcnD3 ampD3 = @ampD3 freqD3 = @freqD3 fcnA4 = @fcnA4 ampA4 = @ampA4 freqA4 = @freqA4 fcnB4 = @fcnB4 ampB4 = @ampB4 freqB4 = @freqB4 fcnC4 = @fcnC4 ampC4 = @ampC4 freqC4 = @freqC4 fcnD4 = @fcnD4 ampD4 = @ampD4 freqD4 = @freqD4 dAmpA1 = @dAmpA1 dAmpB1 = @dAmpB1 dAmpC1 = @dAmpC1 dAmpD1 = @dAmpD1 dAmpA2 = @dAmpA2 dAmpB2 = @dAmpB2 dAmpC2 = @dAmpC2 dAmpD2 = @dAmpD2 dAmpA3 = @dAmpA3 dAmpB3 = @dAmpB3 dAmpC3 = @dAmpC3 dAmpD3 = @dAmpD3 dAmpA4 = @dAmpA4 dAmpB4 = @dAmpB4 dAmpC4 = @dAmpC4 dAmpD4 = @dAmpD4 dFreqA1 = @dFreqA1 dFreqB1 = @dFreqB1 dFreqC1 = @dFreqC1 dFreqD1 = @dFreqD1 dFreqA2 = @dFreqA2 dFreqB2 = @dFreqB2 dFreqC2 = @dFreqC2 dFreqD2 = @dFreqD2 dFreqA3 = @dFreqA3 dFreqB3 = @dFreqB3 dFreqC3 = @dFreqC3 dFreqD3 = @dFreqD3 dFreqA4 = @dFreqA4 dFreqB4 = @dFreqB4 dFreqC4 = @dFreqC4 dFreqD4 = @dFreqD4 style1 = @style1 style2 = @style2 style3 = @style3 style4 = @style4 style5 = @style5 style6 = @style6 style7 = @style7 style8 = @style8 op1 = @op1 op2 = @op2 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 cng1 = @cng1 cng2 = @cng2 exp1 = @exp1 exp2 = @exp2 exp3 = @exp3 exp4 = @exp4 exp5 = @exp5 exp6 = @exp6 exp7 = @exp7 exp8 = @exp8 exx = @exx px = @px exy = @exy py = @py ex1 = @ex1 ey1 = @ey1 mx1 = @mx1 my1 = @my1 px1 = @px1 py1 = @py1 pc1 = @pc1 slope = @slope offset = @offset zmode = @zmode xfer = @xfer zscale = @zscale zscale2 = @zscale2 everyiter = @everyiter default: title = "Slope KologyT" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.1 visible = false endparam param mode caption = "Current Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iterations are counted in cycles of this size." visible = @seq==0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Determines how many times Formula 1 is used before using \ Formula 2 in each cycle." visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 hint = "Influences the order in which the two formulas are used." endparam float param prob1 caption = "Prob for Formula 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 hint = "Determines how often Formula 1 is used. Probability for Formula 2 is (1.0 - Probability for Formula 1)" endparam bool param invertMod caption = "Invert Sequence?" hint = "Inverse the order of formulas used" visible = @seq==0 || @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam bool param slope caption = "Apply slope?" default = true endparam bool param progressive caption = "Progressive Params?" default = false endparam heading caption = "Part Combine Operators" endheading param op11 caption = "Fcn 1, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 2 endparam param op12 caption = "Fcn 1, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 2 endparam param op21 caption = "Fcn 2, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 1 endparam param op22 caption = "Fcn 2, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 1 endparam heading caption = "Functions" endheading bool param showfn1 caption = "Show Function 1" default = true visible= @seq != 2 endparam bool param showfn2 caption = "Show Function 2" default = true visible = @seq != 1 endparam bool param showfn3 caption = "Show Function 3" default = true visible = @seq != 2 endparam bool param showfn4 caption = "Show Function 4" default = true visible = @seq != 1 endparam heading caption = "Function 1" visible = @showfn1 && @seq != 2 endheading func fcnA1 default = sinh() caption = "Function A1" visible = @showfn1 && @seq != 2 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" visible = @showfn1 && @seq != 2 endparam float param dAmpA1 default = 0.0 caption = "Delta Amplitude A1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqA1 default = 1.0 caption = "Frequency A1" visible = @showfn1 && @seq != 2 endparam float param dFreqA1 default = 0.0 caption = "Delta Frequency A1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnB1 default = sin() caption = "Function B1" visible = @showfn1 && @seq != 2 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" visible = @showfn1 && @seq != 2 endparam float param dAmpB1 default = 0.0 caption = "Delta Amplitude B1" visible = @progressive && @showfn1 && @seq != 2 endparam float param freqB1 default = 1.0 caption = "Frequency B1" visible = @showfn1 && @seq != 2 endparam float param dFreqB1 default = 0.0 caption = "Delta Frequency B1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnC1 default = sin() caption = "Function C1" visible = @showfn1 && @seq != 2 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" visible = @showfn1 && @seq != 2 endparam float param dAmpC1 default = 0.0 caption = "Delta Amplitude C1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqC1 default = 1.0 caption = "Frequency C1" visible = @showfn1 && @seq != 2 endparam float param dFreqC1 default = 0.0 caption = "Delta Frequency C1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnD1 default = cos() caption = "Function D1" visible = @showfn1 && @seq != 2 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" visible = @showfn1 && @seq != 2 endparam float param dAmpD1 default = 0.0 caption = "Delta Amplitude D1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqD1 default = 1.0 caption = "Frequency D1" visible = @showfn1 && @seq != 2 endparam float param dFreqD1 default = 0.0 caption = "Delta Frequency D1" visible = @showfn1 && @seq != 2 && @progressive endparam heading caption = "Function2" visible = @showfn2 && @seq != 1 endheading func fcnA2 default = sinh() caption = "Function A2" visible = @showfn2 && @seq != 1 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" visible = @showfn2 && @seq != 1 endparam float param dAmpA2 default = 0.0 caption = "Delta Amplitude A2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqA2 default = 1.0 caption = "Frequency A2" visible = @showfn2 && @seq != 1 endparam float param dFreqA2 default = 0.0 caption = "Delta Frequency A2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnB2 default = cos() caption = "Function B2" visible = @showfn2 && @seq != 1 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" visible = @showfn2 && @seq != 1 endparam float param dAmpB2 default = 0.0 caption = "Delta Amplitude B2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqB2 default = 1.0 caption = "Frequency B2" visible = @showfn2 && @seq != 1 endparam float param dFreqB2 default = 0.0 caption = "Delta Frequency B2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnC2 default = cos() caption = "Function C2" visible = @showfn2 && @seq != 1 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" visible = @showfn2 && @seq != 1 endparam float param dAmpC2 default = 0.0 caption = "Delta Amplitude C2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqC2 default = 1.0 caption = "Frequency C2" visible = @showfn2 && @seq != 1 endparam float param dFreqC2 default = 0.0 caption = "Delta Frequency C2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnD2 default = sin() caption = "Function D2" visible = @showfn2 && @seq != 1 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" visible = @showfn2 && @seq != 1 endparam float param dAmpD2 default = 0.0 caption = "Delta Amplitude D2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqD2 default = 1.0 caption = "Frequency D2" visible = @showfn2 && @seq != 1 endparam float param dFreqD2 default = 0.0 caption = "Delta Frequency D2" visible = @showfn2 && @seq != 1 && @progressive endparam heading caption = "Function 3" visible = @showfn3 && @seq != 2 endheading func fcnA3 default = sinh() caption = "Function A3" visible = @showfn3 && @seq != 2 endfunc float param ampA3 default = 1.0 caption = "Amplitude A3" visible = @showfn3 && @seq != 2 endparam float param dAmpA3 default = 0.0 caption = "Delta Amplitude A3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqA3 default = 1.0 caption = "Frequency A3" visible = @showfn3 && @seq != 2 endparam float param dFreqA3 default = 0.0 caption = "Delta Frequency A3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnB3 default = sin() caption = "Function B3" visible = @showfn3 && @seq != 2 endfunc float param ampB3 default = 1.0 caption = "Amplitude B3" visible = @showfn3 && @seq != 2 endparam float param dAmpB3 default = 0.0 caption = "Delta Amplitude B3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqB3 default = 1.0 caption = "Frequency B3" visible = @showfn3 && @seq != 2 endparam float param dFreqB3 default = 0.0 caption = "Delta Frequency B3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnC3 default = sin() caption = "Function C3" visible = @showfn3 && @seq != 2 endfunc float param ampC3 default = 1.0 caption = "Amplitude C3" visible = @showfn3 && @seq != 2 endparam float param dAmpC3 default = 0.0 caption = "Delta Amplitude C3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqC3 default = 1.0 caption = "Frequency C3" visible = @showfn3 && @seq != 2 endparam float param dFreqC3 default = 0.0 caption = "Delta Frequency C3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnD3 default = cos() caption = "Function D3" visible = @showfn3 && @seq != 2 endfunc float param ampD3 default = 1.0 caption = "Amplitude D3" visible = @showfn3 && @seq != 2 endparam float param dAmpD3 default = 0.0 caption = "Delta Amplitude D3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqD3 default = 1.0 caption = "Frequency D3" visible = @showfn3 && @seq != 2 endparam float param dFreqD3 default = 0.0 caption = "Delta Frequency D3" visible = @showfn3 && @seq != 2 && @progressive endparam heading caption = "Function4" visible = @showfn4 && @seq != 1 endheading func fcnA4 default = sinh() caption = "Function A4" visible = @showfn4 && @seq != 1 endfunc float param ampA4 default = 1.0 caption = "Amplitude A4" visible = @showfn4 && @seq != 1 endparam float param dAmpA4 default = 0.0 caption = "Delta Amplitude A4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqA4 default = 1.0 caption = "Frequency A4" visible = @showfn4 && @seq != 1 endparam float param dFreqA4 default = 0.0 caption = "Delta Frequency A4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnB4 default = cos() caption = "Function B4" visible = @showfn4 && @seq != 1 endfunc float param ampB4 default = 1.0 caption = "Amplitude B4" visible = @showfn4 && @seq != 1 endparam float param dAmpB4 default = 0.0 caption = "Delta Amplitude B4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqB4 default = 1.0 caption = "Frequency B4" visible = @showfn4 && @seq != 1 endparam float param dFreqB4 default = 0.0 caption = "Delta Frequency B4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnC4 default = cos() caption = "Function C4" visible = @showfn4 && @seq != 1 endfunc float param ampC4 default = 1.0 caption = "Amplitude C4" visible = @showfn4 && @seq != 1 endparam float param dAmpC4 default = 0.0 caption = "Delta Amplitude C4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqC4 default = 1.0 caption = "Frequency C4" visible = @showfn4 && @seq != 1 endparam float param dFreqC4 default = 0.0 caption = "Delta Frequency C4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnD4 default = sin() caption = "Function D4" visible = @showfn4 && @seq != 1 endfunc float param ampD4 default = 1.0 caption = "Amplitude D4" visible = @showfn4 && @seq != 1 endparam float param dAmpD4 default = 0.0 caption = "Delta Amplitude D4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqD4 default = 1.0 caption = "Frequency D4" visible = @showfn4 && @seq != 1 endparam float param dFreqD4 default = 0.0 caption = "Delta Frequency D4" visible = @showfn4 && @seq != 1 && @progressive endparam heading caption = "Toby's Enhancements" endheading bool param opvar caption = "Operator Params" default = false hint = "Turn on/off Operator parameters" endparam bool param expvar caption = "Exponent Params" default = false hint = "Turn on/off Exponent parameters" endparam bool param shapevar caption = "Shape Params" default = false hint = "Turn on/off Shape parameters" endparam bool param stylevar caption = "Style Params" default = false hint = "Turn on/off Style parameters" endparam bool param globfcnvar caption = "Global Functions" default = false hint = "Turn on/off Global Function parameters" endparam heading caption = "Operator Parameters" visible = @opvar endheading param cng1 caption = "OpChange 1" enum = "++++""+++-""++-+""+-++""-+++""++--""+--+"\ "--++""+-+-""-+-+""-++-""+---""-+--""--+-""---+"\ "----" default = 0 visible = @opvar && ( @seq != 2 ) endparam param cng2 caption = "OpChange 2" enum = "++++""+++-""++-+""+-++""-+++""++--""+--+"\ "--++""+-+-""-+-+""-++-""+---""-+--""--+-""---+"\ "----" default = 0 visible = @opvar && ( @seq != 1 ) endparam param op1 caption = "Operator 1" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param op2 caption = "Operator 2" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam heading caption = "Exponent Parameters" visible = @expvar endheading complex param exp1 caption = "Exponent 1" default = (1.0,0.0) visible = @expvar endparam complex param exp2 caption = "Exponent 2" default = (1.0,0.0) visible = @expvar endparam complex param exp3 caption = "Exponent 3" default = (1.0,0.0) visible = @expvar endparam complex param exp4 caption = "Exponent 4" default = (1.0,0.0) visible = @expvar endparam complex param exp5 caption = "Exponent 5" default = (1.0,0.0) visible = @expvar endparam complex param exp6 caption = "Exponent 6" default = (1.0,0.0) visible = @expvar endparam complex param exp7 caption = "Exponent 7" default = (1.0,0.0) visible = @expvar endparam complex param exp8 caption = "Exponent 8" default = (1.0,0.0) visible = @expvar endparam float param exx caption = "X Exponent" default = 1.0 visible = @expvar endparam float param exy caption = "Y Exponent" default = 1.0 visible = @expvar endparam heading caption = "Shape Parameters" visible = @shapevar endheading complex param ex1 caption = "X Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param mx1 caption = "X Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param px1 caption = "X Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param ey1 caption = "Y Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param my1 caption = "Y Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param py1 caption = "Y Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param pc1 caption = "C Shape" default = (0.0,0.0) visible = @shapevar endparam heading caption = "Style Parameters" visible = @stylevar endheading param style1 caption = "Variable 1" default = false visible = @stylevar endparam param style2 caption = "Variable 2" default = false visible = @stylevar endparam param style3 caption = "Variable 3" default = false visible = @stylevar endparam param style4 caption = "Variable 4" default = false visible = @stylevar endparam param style5 caption = "Variable 5" default = false visible = @stylevar endparam param style6 caption = "Variable 6" default = false visible = @stylevar endparam param style7 caption = "Variable 7" default = false visible = @stylevar endparam param style8 caption = "Variable 8" default = false visible = @stylevar endparam heading caption = "Global Functions" visible = @globfcnvar endheading func fn1 caption = "Global Function 1" default = ident () visible = @globfcnvar endfunc func fn2 caption = "Global Function 2" default = flip () visible = @globfcnvar endfunc func fn3 caption = "Wild Function 1" default = ident () visible = @globfcnvar endfunc func fn4 caption = "Wild Function 2" default = ident () visible = @globfcnvar endfunc heading caption = "Slope Parameters" visible = @slope == true endheading float param offset caption = "Orbit Separation" default = 0.005 hint = "Defines how far apart the simultaneous orbits are. Smaller \ distances will produce more accurate results." visible = @slope == true endparam param zmode caption = "Height Value" default = 5 enum = "smallest |z|" "smallest |real(z)|" \ "smallest |imag(z)|" "smallest summ(z)" "smallest |atan(z)|" \ "smoothed iteration" hint = "Specifies what will be used to construct a height value." visible = @slope == true endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = @slope == true endparam param zscale caption = "Height Pre-Scale" default = 1.0 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = @slope == true endparam param zscale2 caption = "Height Post-Scale" default = 1.0 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = @slope == true endparam param everyiter caption = "Every Iteration" default = true hint = "If set, the surface normal will be computed at every \ iteration. If you are using a coloring algorithm which \ processes every iteration, you will need this." visible = @slope == true endparam } sdc-slope-embrangle-t { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads ; Greatly enhanced by Toby, August 2003 ; ; Damien's fBm added November, 2004, at the suggestion ; of Gilles Nadeau: ; This is the basic Embrangle type, but with a ; bit of fBm noise added at each iteration. This ; tends to distort the fractal beyond all recognition ; after just a few iterations, which may or may not ; be what you're looking for. ; ; You can also use the "Coloring Only" option to ; restrict the fBm distortion to the value passed ; to the coloring algorithm; the distortion will be ; removed before the next iteration is calculated. ; ; Toby's progressive parameter method added ; November, 2004. ; ; Thanks to Ron Barnett for help with the slope version, ; December, 2004 ; init: ;default to Mandelbrot complex c1 = #pixel complex c2 = c1 + @offset complex c3 = c1 + flip(@offset) complex z1 = ( 0.0, 0.0 ) complex z2 = z1 complex z3 = z1 if( @mode == "Julia" ) z1 = #pixel z2 = z1 + @offset z3 = z1 + flip(@offset) c1 = @startseed c2 = c1 c3 = c1 endif float x1 = real(@fn3(z1^@exx)) float x2 = real(@fn3(z2^@exx)) float x3 = real(@fn3(z3^@exx)) float y1 = imag(@fn4(z1^@exy)) float y2 = imag(@fn4(z2^@exy)) float y3 = imag(@fn4(z3^@exy)) z1 = x1 + flip(y1) z2 = x2 + flip(y2) z3 = x3 + flip(y3) int iter=0 int testiter = #maxiter - 1 int seed = random(@randomseed) float pAmpA1 = @ampA1 float pFreqA1 = @freqA1 float pAmpB1 = @ampB1 float pFreqB1 = @freqB1 float pAmpC1 = @ampC1 float pFreqC1 = @freqC1 float pAmpD1 = @ampD1 float pFreqD1 = @freqD1 float pAmpA2 = @ampA2 float pFreqA2 = @freqA2 float pAmpB2 = @ampB2 float pFreqB2 = @freqB2 float pAmpC2 = @ampC2 float pFreqC2 = @freqC2 float pAmpD2 = @ampD2 float pFreqD2 = @freqD2 float pAmpA3 = @ampA3 float pFreqA3 = @freqA3 float pAmpB3 = @ampB3 float pFreqB3 = @freqB3 float pAmpC3 = @ampC3 float pFreqC3 = @freqC3 float pAmpD3 = @ampD3 float pFreqD3 = @freqD3 float pAmpA4 = @ampA4 float pFreqA4 = @freqA4 float pAmpB4 = @ampB4 float pFreqB4 = @freqB4 float pAmpC4 = @ampC4 float pFreqC4 = @freqC4 float pAmpD4 = @ampD4 float pFreqD4 = @freqD4 ;;; slope stuff int done = 2 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float d1 = 0.0; distances float d2 = 0.0 float d3 = 0.0 float s1 = 1.0e20; smallest distances float s2 = 1.0e20 float s3 = 1.0e20 float iterexp1 = 0.0 float iterexp2 = 0.0 float iterexp3 = 0.0 loop: ;;; Embrangle float oldx1 = real(z1) float oldx2 = real(z2) float oldx3 = real(z3) float oldy1 = imag(z1) float oldy2 = imag(z2) float oldy3 = imag(z3) bool formula1 = false iter = iter + 1 ; Determine formula to be used: if (@version > 1.1) if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( @seq==0 && iter%@modBy < @modCmp ); Modulation formula1 = true elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true endif else formula1 = false endif else ; if @seq==0 && iter%@modBy >= @modCmp falls into random if ( @seq == 1 ) ; First Formula formula1 = true elseif ( @seq == 2 ) ; Second Formula formula1 = false elseif ( @seq==0 && iter%@modBy < @modCmp ); Modulation formula1 = true else seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true endif endif endif ;;; Toby's enhancements if @style1 == true aa1 = oldx1 aa2 = oldx2 aa3 = oldx3 else aa1 = oldy1 aa2 = oldy2 aa3 = oldy3 endif if @style2 == true bb1 = oldx1 bb2 = oldx2 bb3 = oldx3 else bb1 = oldy1 bb2 = oldy2 bb3 = oldy3 endif if @style3 == true cc1 = oldx1 cc2 = oldx2 cc3 = oldx3 else cc1 = oldy1 cc2 = oldy2 cc3 = oldy3 endif if @style4 == true dd1 = oldx1 dd2 = oldx2 dd3 = oldx3 else dd1 = oldy1 dd2 = oldy2 dd3 = oldy3 endif if @style5 == true ee1 = oldy1 ee2 = oldy2 ee3 = oldy3 else ee1 = oldx1 ee2 = oldx2 ee3 = oldx3 endif if @style6 == true ff1 = oldy1 ff2 = oldy2 ff3 = oldy3 else ff1 = oldx1 ff2 = oldx2 ff3 = oldx3 endif if @style7 == true gg1 = oldy1 gg2 = oldy2 gg3 = oldy3 else gg1 = oldx1 gg2 = oldx2 gg3 = oldx3 endif if @style8 == true hh1 = oldy1 hh2 = oldy2 hh3 = oldy3 else hh1 = oldx1 hh2 = oldx2 hh3 = oldx3 endif if @style9 == true ii1 = oldx1 ii2 = oldx2 ii3 = oldx3 else ii1 = oldy1 ii2 = oldy2 ii3 = oldy3 endif if @style10 == true jj1 = oldx1 jj2 = oldx2 jj3 = oldx3 else jj1 = oldy1 jj2 = oldy2 jj3 = oldy3 endif if @style11 == true kk1 = oldx1 kk2 = oldx2 kk3 = oldx3 else kk1 = oldy1 kk2 = oldy2 kk3 = oldy3 endif if @style12 == true ll1 = oldx1 ll2 = oldx2 ll3 = oldx3 else ll1 = oldy1 ll2 = oldy2 ll3 = oldy3 endif if @style13 == true mm1 = oldy1 mm2 = oldy2 mm3 = oldy3 else mm1 = oldx1 mm2 = oldx2 mm3 = oldx3 endif if @style14 == true nn1 = oldy1 nn2 = oldy2 nn3 = oldy3 else nn1 = oldx1 nn2 = oldx2 nn3 = oldx3 endif if @style15 == true oo1 = oldy1 oo2 = oldy2 oo3 = oldy3 else oo1 = oldx1 oo2 = oldx2 oo3 = oldx3 endif if @style16 == true pp1 = oldy1 pp2 = oldy2 pp3 = oldy3 else pp1 = oldx1 pp2 = oldx2 pp3 = oldx3 endif if (@op1 =="+++") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="++-") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="+-+") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="-++") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="+--") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i + \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="--+") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k + \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="-+-") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b + \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j + \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif elseif (@op1 =="---") if (formula1 == true) x1 = oldx1 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa1^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb1^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc1^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd1^@d )))))))) x2 = oldx2 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa2^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb2^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc2^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd2^@d )))))))) x3 = oldx3 + @multiplier * \ pAmpA1 * real(@fcnA1(pFreqA1 * aa3^@a - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb3^@b - \ pAmpC1 * real(@fcnC1(pFreqC1 * cc3^@c - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd3^@d )))))))) else ; formula 2 x1 = oldx1 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii1^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj1^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk1^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll1^@l )))))))) ;llONE x2 = oldx2 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii2^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj2^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk2^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll2^@l )))))))) x3 = oldx3 + @multiplier * \ pAmpA2 * real(@fcnA2(pFreqA2 * ii3^@i - \ pAmpB2 * real(@fcnB2(pFreqB2 * jj3^@j - \ pAmpC2 * real(@fcnC2(pFreqC2 * kk3^@k - \ pAmpD2 * real(@fcnD2(pFreqD2 * ll3^@l )))))))) endif endif if (@op2 =="+++") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="++-") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="+-+") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="-++") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="+--") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m + \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="--+") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o + \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="-+-") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f + \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n + \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif elseif (@op2 =="---") if (formula1 == true) y1 = oldy1 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee1^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff1^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg1^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh1^@h )))))))) y2 = oldy2 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee2^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff2^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg2^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh2^@h )))))))) y3 = oldy3 - @multiplier * \ pAmpA3 * real(@fcnA3(pFreqA3 * ee3^@q - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff3^@f - \ pAmpC3 * real(@fcnC3(pFreqC3 * gg3^@g - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh3^@h )))))))) else y1 = oldy1 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm1^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn1^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo1^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp1^@p )))))))) y2 = oldy2 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm2^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn2^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo2^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp2^@p )))))))) y3 = oldy3 - @multiplier * \ pAmpA4 * real(@fcnA4(pFreqA4 * mm3^@m - \ pAmpB4 * real(@fcnB4(pFreqB4 * nn3^@n - \ pAmpC4 * real(@fcnC4(pFreqC4 * oo3^@o - \ pAmpD4 * real(@fcnD4(pFreqD4 * pp3^@p )))))))) endif endif if @op4 =="+" if @op3 == "+" z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) + (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) + (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y3^@ey1*@my1-@py1) + (c3-@pc1) elseif @op3 == "-" z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) - (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) - (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y3^@ey1*@my1-@py1) - (c3-@pc1) elseif @op3 == "*" z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) * (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) * (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y3^@ey1*@my1-@py1) * (c3-@pc1) elseif @op3 == "/" z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) / (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) / (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) / (c3-@pc1) elseif @op3 == "^" z1 = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) ^ (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) + @fn2(y2^@ey1*@my1-@py1) ^ (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) + @fn2(y3^@ey1*@my1-@py1) ^ (c3-@pc1) endif elseif @op4 =="-" if @op3 == "+" z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) + (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) + (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) + (c3-@pc1) elseif @op3 == "-" z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) - (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) - (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) - (c3-@pc1) elseif @op3 == "*" z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) * (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) * (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) * (c3-@pc1) elseif @op3 == "/" z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) / (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) / (c2-@pc1) z2 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) / (c3-@pc1) elseif @op3 == "^" z1 = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) ^ (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) - @fn2(y2^@ey1*@my1-@py1) ^ (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) - @fn2(y3^@ey1*@my1-@py1) ^ (c3-@pc1) endif elseif @op4 =="*" if @op3 == "+" z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) + (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) + (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) + (c3-@pc1) elseif @op3 == "-" z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) - (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) - (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) - (c3-@pc1) elseif @op3 == "*" z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) * (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) * (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) * (c3-@pc1) elseif @op3 == "/" z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) / (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) / (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) / (c3-@pc1) elseif @op3 == "^" z1 = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) ^ (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) * @fn2(y2^@ey1*@my1-@py1) ^ (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) * @fn2(y3^@ey1*@my1-@py1) ^ (c3-@pc1) endif elseif @op4 =="/" if @op3 == "+" z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) + (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) + (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) + (c3-@pc1) elseif @op3 == "-" z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) - (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) - (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) - (c3-@pc1) elseif @op3 == "*" z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) * (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) * (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) * (c3-@pc1) elseif @op3 == "/" z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) / (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) / (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) / (c3-@pc1) elseif @op3 == "^" z1 = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) ^ (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) / @fn2(y2^@ey1*@my1-@py1) ^ (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) / @fn2(y3^@ey1*@my1-@py1) ^ (c3-@pc1) endif elseif @op4 =="^" if @op3 == "+" z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) + (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) + (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) + (c3-@pc1) elseif @op3 == "-" z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) - (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) - (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) - (c3-@pc1) elseif @op3 == "*" z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) * (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) * (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) * (c3-@pc1) elseif @op3 == "/" z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) / (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) / (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) / (c3-@pc1) elseif @op3 == "^" z1 = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) ^ (c1-@pc1) z2 = @fn1(x2^@ex1*@mx1-@px1) ^ @fn2(y2^@ey1*@my1-@py1) ^ (c2-@pc1) z3 = @fn1(x3^@ex1*@mx1-@px1) ^ @fn2(y3^@ey1*@my1-@py1) ^ (c3-@pc1) endif endif if (@slope == true) ;;;; process slope IF (@zmode == 5) iterexp1 = iterexp1 + exp(-cabs(z1)) iterexp2 = iterexp2 + exp(-cabs(z2)) iterexp3 = iterexp3 + exp(-cabs(z3)) ENDIF done = done + 1; increment iteration counter IF (@zmode == 0) ; smallest |z| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 1) ; smallest |real(z)| d1 = abs(real(z1)); get current distances from i axis d2 = abs(real(z2)) d3 = abs(real(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 2) ; smallest |imag(z)| d1 = abs(imag(z1)); get current distances from r axis d2 = abs(imag(z2)) d3 = abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 3) ; smallest |real(z)|+|imag(z)| d1 = abs(real(z1))+abs(imag(z1)); get current distances from i axis d2 = abs(real(z2))+abs(imag(z2)) d3 = abs(real(z3))+abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 4) ; smallest |atan(z)| d1 = abs(atan2(z1)); get current angles d2 = abs(atan2(z2)) d3 = abs(atan2(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ENDIF IF (@bailout < |z1| || \ @everyiter ||\ done == testiter + 2); done, or every iteration, or last ; determine continuous iteration (height) for each point IF (@zmode >= 0 && @zmode <= 4) ; height based on smallest |z| e1 = s1 * @zscale e2 = s2 * @zscale e3 = s3 * @zscale ELSEIF (@zmode == 5) e1 = iterexp1 * @zscale e2 = iterexp2 * @zscale e3 = iterexp3 * @zscale ENDIF ; apply transfer function ; a function is not used because these are floats ; and not all functions apply to floats IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -@offset ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z = vx + flip(vy); fudge z from vector ELSE; didn't compute z this time z = z1; use primary iteration value to keep periodicity working ENDIF else z = z1 endif IF (@bailout < |z1|) ; we're done done = 0 ENDIF if (@progressive == true) pAmpA1 = pAmpA1 + @dAmpA1 pAmpB1 = pAmpB1 + @dAmpB1 pAmpC1 = pAmpC1 + @dAmpC1 pAmpD1 = pAmpD1 + @dAmpD1 pAmpA2 = pAmpA2 + @dAmpA2 pAmpB2 = pAmpB2 + @dAmpB2 pAmpC2 = pAmpC2 + @dAmpC2 pAmpD2 = pAmpD2 + @dAmpD2 pAmpA3 = pAmpA3 + @dAmpA3 pAmpB3 = pAmpB3 + @dAmpB3 pAmpC3 = pAmpC3 + @dAmpC3 pAmpD3 = pAmpD3 + @dAmpD3 pAmpA4 = pAmpA4 + @dAmpA4 pAmpB4 = pAmpB4 + @dAmpB4 pAmpC4 = pAmpC4 + @dAmpC4 pAmpD4 = pAmpD4 + @dAmpD4 pFreqA1 = pFreqA1 + @dFreqA1 pFreqB1 = pFreqB1 + @dFreqB1 pFreqC1 = pFreqC1 + @dFreqC1 pFreqD1 = pFreqD1 + @dFreqD1 pFreqA2 = pFreqA2 + @dFreqA2 pFreqB2 = pFreqB2 + @dFreqB2 pFreqC2 = pFreqC2 + @dFreqC2 pFreqD2 = pFreqD2 + @dFreqD2 pFreqA3 = pFreqA3 + @dFreqA3 pFreqB3 = pFreqB3 + @dFreqB3 pFreqC3 = pFreqC3 + @dFreqC3 pFreqD3 = pFreqD3 + @dFreqD3 pFreqA4 = pFreqA4 + @dFreqA4 pFreqB4 = pFreqB4 + @dFreqB4 pFreqC4 = pFreqC4 + @dFreqC4 pFreqD4 = pFreqD4 + @dFreqD4 endif bailout: (done > 0) switch: type = "sdc-slope-embrangle-t" version = @version bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp randomseed = @randomseed prob1 = @prob1 doprogressive = @doprogressive showfn1 = @showfn1 showfn2 = @showfn2 showfn3 = @showfn3 showfn4 = @showfn4 fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 fcnA3 = @fcnA3 ampA3 = @ampA3 freqA3 = @freqA3 fcnB3 = @fcnB3 ampB3 = @ampB3 freqB3 = @freqB3 fcnC3 = @fcnC3 ampC3 = @ampC3 freqC3 = @freqC3 fcnD3 = @fcnD3 ampD3 = @ampD3 freqD3 = @freqD3 fcnA4 = @fcnA4 ampA4 = @ampA4 freqA4 = @freqA4 fcnB4 = @fcnB4 ampB4 = @ampB4 freqB4 = @freqB4 fcnC4 = @fcnC4 ampC4 = @ampC4 freqC4 = @freqC4 fcnD4 = @fcnD4 ampD4 = @ampD4 freqD4 = @freqD4 dAmpA1 = @dAmpA1 dAmpB1 = @dAmpB1 dAmpC1 = @dAmpC1 dAmpD1 = @dAmpD1 dAmpA2 = @dAmpA2 dAmpB2 = @dAmpB2 dAmpC2 = @dAmpC2 dAmpD2 = @dAmpD2 dAmpA3 = @dAmpA3 dAmpB3 = @dAmpB3 dAmpC3 = @dAmpC3 dAmpD3 = @dAmpD3 dAmpA4 = @dAmpA4 dAmpB4 = @dAmpB4 dAmpC4 = @dAmpC4 dAmpD4 = @dAmpD4 dFreqA1 = @dFreqA1 dFreqB1 = @dFreqB1 dFreqC1 = @dFreqC1 dFreqD1 = @dFreqD1 dFreqA2 = @dFreqA2 dFreqB2 = @dFreqB2 dFreqC2 = @dFreqC2 dFreqD2 = @dFreqD2 dFreqA3 = @dFreqA3 dFreqB3 = @dFreqB3 dFreqC3 = @dFreqC3 dFreqD3 = @dFreqD3 dFreqA4 = @dFreqA4 dFreqB4 = @dFreqB4 dFreqC4 = @dFreqC4 dFreqD4 = @dFreqD4 mode = @switchmode switchMode = mode startseed = #pixel op1 = @op1 op2 = @op2 op3 = @op3 op4 = @op4 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 style1 = @style1 style2 = @style2 style3 = @style3 style4 = @style4 style5 = @style5 style6 = @style6 style7 = @style7 style8 = @style8 style9 = @style9 style10 = @style10 style11 = @style11 style12 = @style12 style13 = @style13 style14 = @style14 style15 = @style15 style16 = @style16 a = @a b = @b c = @c d = @d q = @q f = @f g = @g h = @h i = @i j = @j k = @k l = @l m = @m n = @n o = @o p = @p exx = @exx px = @px exy = @exy py = @py ex1 = @ex1 ey1 = @ey1 mx1 = @mx1 my1 = @my1 px1 = @px1 py1 = @py1 pc1 = @pc1 slope = @slope offset = @offset zmode = @zmode xfer = @xfer zscale = @zscale zscale2 = @zscale2 everyiter = @everyiter default: title = "Slope EmbrangleT" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.2 visible = false endparam param mode caption = "Current Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @seq==0 endparam int param modCmp caption = "Mod Compare" default = 5 hint = "Modulated Iteration < this -> formula 1" visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 endparam float param prob1 caption = "Prob for Func 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam bool param slope caption = "Apply slope?" default = true endparam bool param progressive caption = "Progressive Params?" default = false endparam heading caption = "Functions" endheading bool param showfn1 caption = "Show Function 1" default = true visible= @seq != 2 endparam bool param showfn2 caption = "Show Function 2" default = true visible = @seq != 1 endparam bool param showfn3 caption = "Show Function 3" default = true visible = @seq != 2 endparam bool param showfn4 caption = "Show Function 4" default = true visible = @seq != 1 endparam ;========================================== Function 1 heading caption = "Function 1" visible = @showfn1 && @seq != 2 endheading func fcnA1 default = sinh() caption = "Function A1" visible = @showfn1 && @seq != 2 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" visible = @showfn1 && @seq != 2 endparam float param dAmpA1 default = 0.0 caption = "Delta Amplitude A1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqA1 default = 1.0 caption = "Frequency A1" visible = @showfn1 && @seq != 2 endparam float param dFreqA1 default = 0.0 caption = "Delta Frequency A1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnB1 default = sin() caption = "Function B1" visible = @showfn1 && @seq != 2 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" visible = @showfn1 && @seq != 2 endparam float param dAmpB1 default = 0.0 caption = "Delta Amplitude B1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqB1 default = 1.0 caption = "Frequency B1" visible = @showfn1 && @seq != 2 endparam float param dFreqB1 default = 0.0 caption = "Delta Frequency B1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnC1 default = sin() caption = "Function C1" visible = @showfn1 && @seq != 2 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" visible = @showfn1 && @seq != 2 endparam float param dAmpC1 default = 0.0 caption = "Delta Amplitude C1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqC1 default = 1.0 caption = "Frequency C1" visible = @showfn1 && @seq != 2 endparam float param dFreqC1 default = 0.0 caption = "Delta Frequency C1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnD1 default = cos() caption = "Function D1" visible = @showfn1 && @seq != 2 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" visible = @showfn1 && @seq != 2 endparam float param dAmpD1 default = 0.0 caption = "Delta Amplitude D1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqD1 default = 1.0 caption = "Frequency D1" visible = @showfn1 && @seq != 2 endparam float param dFreqD1 default = 0.0 caption = "Delta Frequency D1" visible = @showfn1 && @seq != 2 && @progressive endparam ;========================================== Function 2 heading caption = "Function 2" visible = @showfn2 && @seq != 1 endheading func fcnA2 default = sinh() caption = "Function A2" visible = @showfn2 && @seq != 1 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" visible = @showfn2 && @seq != 1 endparam float param dAmpA2 default = 0.0 caption = "Delta Amplitude A2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqA2 default = 1.0 caption = "Frequency A2" visible = @showfn2 && @seq != 1 endparam float param dFreqA2 default = 0.0 caption = "Delta Frequency A2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnB2 default = cos() caption = "Function B2" visible = @showfn2 && @seq != 1 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" visible = @showfn2 && @seq != 1 endparam float param dAmpB2 default = 0.0 caption = "Delta Amplitude B2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqB2 default = 1.0 caption = "Frequency B2" visible = @showfn2 && @seq != 1 endparam float param dFreqB2 default = 0.0 caption = "Delta Frequency B2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnC2 default = cos() caption = "Function C2" visible = @showfn2 && @seq != 1 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" visible = @showfn2 && @seq != 1 endparam float param dAmpC2 default = 0.0 caption = "Delta Amplitude C2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqC2 default = 1.0 caption = "Frequency C2" visible = @showfn2 && @seq != 1 endparam float param dFreqC2 default = 0.0 caption = "Delta Frequency C2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnD2 default = sin() caption = "Function D2" visible = @showfn2 && @seq != 1 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" visible = @showfn2 && @seq != 1 endparam float param dAmpD2 default = 0.0 caption = "Delta Amplitude D2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqD2 default = 1.0 caption = "Frequency D2" visible = @showfn2 && @seq != 1 endparam float param dFreqD2 default = 0.0 caption = "Delta Frequency D2" visible = @showfn2 && @seq != 1 && @progressive endparam ;========================================== Function 3 heading caption = "Function 3" visible = @showfn3 && @seq != 2 endheading func fcnA3 default = sinh() caption = "Function A3" visible = @showfn3 && @seq != 2 endfunc float param ampA3 default = 1.0 caption = "Amplitude A3" visible = @showfn3 && @seq != 2 endparam float param dAmpA3 default = 0.0 caption = "Delta Amplitude A3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqA3 default = 1.0 caption = "Frequency A3" visible = @showfn3 && @seq != 2 endparam float param dFreqA3 default = 0.0 caption = "Delta Frequency A3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnB3 default = sin() caption = "Function B3" visible = @showfn3 && @seq != 2 endfunc float param ampB3 default = 1.0 caption = "Amplitude B3" visible = @showfn3 && @seq != 2 endparam float param dAmpB3 default = 0.0 caption = "Delta Amplitude B3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqB3 default = 1.0 caption = "Frequency B3" visible = @showfn3 && @seq != 2 endparam float param dFreqB3 default = 0.0 caption = "Delta Frequency B3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnC3 default = sin() caption = "Function C3" visible = @showfn3 && @seq != 2 endfunc float param ampC3 default = 1.0 caption = "Amplitude C3" visible = @showfn3 && @seq != 2 endparam float param dAmpC3 default = 0.0 caption = "Delta Amplitude C3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqC3 default = 1.0 caption = "Frequency C3" visible = @showfn3 && @seq != 2 endparam float param dFreqC3 default = 0.0 caption = "Delta Frequency C3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnD3 default = cos() caption = "Function D3" visible = @showfn3 && @seq != 2 endfunc float param ampD3 default = 1.0 caption = "Amplitude D3" visible = @showfn3 && @seq != 2 endparam float param dAmpD3 default = 0.0 caption = "Delta Amplitude D3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqD3 default = 1.0 caption = "Frequency D3" visible = @showfn3 && @seq != 2 endparam float param dFreqD3 default = 0.0 caption = "Delta Frequency D3" visible = @showfn3 && @seq != 2 && @progressive endparam ;========================================== Function 4 heading caption = "Function 4" visible = @showfn4 && @seq != 1 endheading func fcnA4 default = sinh() caption = "Function A4" visible = @showfn4 && @seq != 1 endfunc float param ampA4 default = 1.0 caption = "Amplitude A4" visible = @showfn4 && @seq != 1 endparam float param dAmpA4 default = 0.0 caption = "Delta Amplitude A4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqA4 default = 1.0 caption = "Frequency A4" visible = @showfn4 && @seq != 1 endparam float param dFreqA4 default = 0.0 caption = "Delta Frequency A4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnB4 default = cos() caption = "Function B4" visible = @showfn4 && @seq != 1 endfunc float param ampB4 default = 1.0 caption = "Amplitude B4" visible = @showfn4 && @seq != 1 endparam float param dAmpB4 default = 0.0 caption = "Delta Amplitude B4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqB4 default = 1.0 caption = "Frequency B4" visible = @showfn4 && @seq != 1 endparam float param dFreqB4 default = 0.0 caption = "Delta Frequency B4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnC4 default = cos() caption = "Function C4" visible = @showfn4 && @seq != 1 endfunc float param ampC4 default = 1.0 caption = "Amplitude C4" visible = @showfn4 && @seq != 1 endparam float param dAmpC4 default = 0.0 caption = "Delta Amplitude C4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqC4 default = 1.0 caption = "Frequency C4" visible = @showfn4 && @seq != 1 endparam float param dFreqC4 default = 0.0 caption = "Delta Frequency C4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnD4 default = sin() caption = "Function D4" visible = @showfn4 && @seq != 1 endfunc float param ampD4 default = 1.0 caption = "Amplitude D4" visible = @showfn4 && @seq != 1 endparam float param dAmpD4 default = 0.0 caption = "Delta Amplitude D4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqD4 default = 1.0 caption = "Frequency D4" visible = @showfn4 && @seq != 1 endparam float param dFreqD4 default = 0.0 caption = "Delta Frequency D4" visible = @showfn4 && @seq != 1 && @progressive endparam heading caption = "Enhancement Params" endheading bool param opvar caption = "Operator Params" default = false endparam bool param expvar caption = "Exponent Params" default = false endparam bool param shapevar caption = "Shape Params" default = false endparam bool param stylevar caption = "Style Params" default = false endparam bool param globfcnvar caption = "Global Functions" default = false endparam heading caption = "Operator Params" visible = @opvar endheading param op1 caption = "Operator 1" enum = "+++""++-""+-+""-++""+--""--+""-+-""---" default = 0 visible = @opvar endparam param op2 caption = "Operator 2" enum = "+++""++-""+-+""-++""+--""--+""-+-""---" default = 0 visible = @opvar endparam param op3 caption = "Global Operator 1" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param op4 caption = "Global Operator 2" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam heading caption = "Exponent Parameters" visible = @expvar endheading float param exx caption = "X Exponent" default = 1.0 visible = @expvar endparam float param exy caption = "Y Exponent" default = 1.0 visible = @expvar endparam complex param a caption = "Exponent 1" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param b caption = "Exponent 2" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param c caption = "Exponent 3" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param d caption = "Exponent 4" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param q caption = "Exponent 5" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param f caption = "Exponent 6" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param g caption = "Exponent 7" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param h caption = "Exponent 8" default = (1.0,0.0) visible = @expvar && @seq != 2 endparam complex param i caption = "Exponent 9" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param j caption = "Exponent 10" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param k caption = "Exponent 11" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param l caption = "Exponent 12" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param m caption = "Exponent 13" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param n caption = "Exponent 14" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param o caption = "Exponent 15" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam complex param p caption = "Exponent 16" default = (1.0,0.0) visible = @expvar && @seq != 1 endparam heading caption = "Shape Parameters" visible = @shapevar endheading complex param ex1 caption = "X Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param mx1 caption = "X Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param px1 caption = "X Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param ey1 caption = "Y Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param my1 caption = "Y Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param py1 caption = "Y Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param pc1 caption = "C Shape" default = (0.0,0.0) visible = @shapevar endparam heading caption = "Style Parameters" visible = @stylevar endheading param style1 caption = "Variable 1" default = false visible = @stylevar && @seq != 2 endparam param style2 caption = "Variable 2" default = false visible = @stylevar && @seq != 2 endparam param style3 caption = "Variable 3" default = false visible = @stylevar && @seq != 2 endparam param style4 caption = "Variable 4" default = false visible = @stylevar && @seq != 2 endparam param style5 caption = "Variable 5" default = false visible = @stylevar && @seq != 2 endparam param style6 caption = "Variable 6" default = false visible = @stylevar && @seq != 2 endparam param style7 caption = "Variable 7" default = false visible = @stylevar && @seq != 2 endparam param style8 caption = "Variable 8" default = false visible = @stylevar && @seq != 2 endparam param style9 caption = "Variable 9" default = false visible = @stylevar && @seq != 1 endparam param style10 caption = "Variable 10" default = false visible = @stylevar && @seq != 1 endparam param style11 caption = "Variable 11" default = false visible = @stylevar && @seq != 1 endparam param style12 caption = "Variable 12" default = false visible = @stylevar && @seq != 1 endparam param style13 caption = "Variable 13" default = false visible = @stylevar && @seq != 1 endparam param style14 caption = "Variable 14" default = false visible = @stylevar && @seq != 1 endparam param style15 caption = "Variable 15" default = false visible = @stylevar && @seq != 1 endparam param style16 caption = "Variable 16" default = false visible = @stylevar && @seq != 1 endparam heading caption = "Global Functions" visible = @globfcnvar endheading func fn1 caption = "Global Function 1" default = ident () visible = @globfcnvar endfunc func fn2 caption = "Global Function 2" default = flip () visible = @globfcnvar endfunc func fn3 caption = "Wild Function 1" default = ident () visible = @globfcnvar endfunc func fn4 caption = "Wild Function 2" default = ident () visible = @globfcnvar endfunc heading caption = "Slope Parameters" visible = @slope == true endheading float param offset caption = "Orbit Separation" default = 0.005 hint = "Defines how far apart the simultaneous orbits are. Smaller \ distances will produce more accurate results." visible = @slope == true endparam param zmode caption = "Height Value" default = 5 enum = "smallest |z|" "smallest |real(z)|" \ "smallest |imag(z)|" "smallest summ(z)" "smallest |atan(z)|" \ "smoothed iteration" hint = "Specifies what will be used to construct a height value." visible = @slope == true endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = @slope == true endparam param zscale caption = "Height Pre-Scale" default = 1.0 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = @slope == true endparam param zscale2 caption = "Height Post-Scale" default = 1.0 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = @slope == true endparam param everyiter caption = "Every Iteration" default = true hint = "If set, the surface normal will be computed at every \ iteration. If you are using a coloring algorithm which \ processes every iteration, you will need this." visible = @slope == true endparam } sdc-kology-t { ; adapted from Davka's 3 function TDDS2 ; I have been mostly interested in the Julia form ; Try sam-ThinOrbitTraps or ldm-DooDads ; Greatly enhanced by Toby, August 2003 ; ; Damien's fBm added November, 2004, at the suggestion ; of Gilles Nadeau: ; This is the basic Kology type, but with a ; bit of fBm noise added at each iteration. This ; tends to distort the fractal beyond all recognition ; after just a few iterations, which may or may not ; be what you're looking for. ; ; You can also use the "Coloring Only" option to ; restrict the fBm distortion to the value passed ; to the coloring algorithm; the distortion will be ; removed before the next iteration is calculated. ; ; Toby's progressive parameter method added ; November, 2004. init: ;default to Julia complex z = #pixel complex c = @startseed if(@mode == "Julia" ) c = #pixel z = ( 0.0, 0.0 ) endif float x1 = real(@fn3(z^@exx)) float y1 = imag(@fn4(z^@exy)) z = x1 + flip(y1) float xx1 = 0.0 float yy1 = 0.0 int seed = random(@randomseed) float pAmpA1 = @ampA1 float pFreqA1 = @freqA1 float pAmpB1 = @ampB1 float pFreqB1 = @freqB1 float pAmpC1 = @ampC1 float pFreqC1 = @freqC1 float pAmpD1 = @ampD1 float pFreqD1 = @freqD1 float pAmpA2 = @ampA2 float pFreqA2 = @freqA2 float pAmpB2 = @ampB2 float pFreqB2 = @freqB2 float pAmpC2 = @ampC2 float pFreqC2 = @freqC2 float pAmpD2 = @ampD2 float pFreqD2 = @freqD2 float pAmpA3 = @ampA3 float pFreqA3 = @freqA3 float pAmpB3 = @ampB3 float pFreqB3 = @freqB3 float pAmpC3 = @ampC3 float pFreqC3 = @freqC3 float pAmpD3 = @ampD3 float pFreqD3 = @freqD3 float pAmpA4 = @ampA4 float pFreqA4 = @freqA4 float pAmpB4 = @ampB4 float pFreqB4 = @freqB4 float pAmpC4 = @ampC4 float pFreqC4 = @freqC4 float pAmpD4 = @ampD4 float pFreqD4 = @freqD4 complex oz = z bool cng11plus = false bool cng12plus = false bool cng13plus = false bool cng14plus = false if (@cng1 == "++++") cng11plus = true cng12plus = true cng13plus = true cng14plus = true elseif (@cng1 == "+++-") cng11plus = true cng12plus = true cng13plus = true elseif (@cng1 == "++-+") cng11plus = true cng12plus = true cng14plus = true elseif (@cng1 == "+-++") cng11plus = true cng13plus = true cng14plus = true elseif (@cng1 == "-+++") cng12plus = true cng13plus = true cng14plus = true elseif (@cng1 == "-++-") cng12plus = true cng13plus = true elseif (@cng1 == "-+-+") cng12plus = true cng14plus = true elseif (@cng1 == "--++") cng13plus = true cng14plus = true elseif (@cng1 == "+-+-") cng11plus = true cng13plus = true elseif (@cng1 == "+--+") cng11plus = true cng14plus = true elseif (@cng1 == "++--") cng11plus = true cng12plus = true elseif (@cng1 == "+---") cng11plus = true elseif (@cng1 == "-+--") cng12plus = true elseif (@cng1 == "--+-") cng13plus = true elseif (@cng1 == "---+") cng14plus = true else ;all minus endif bool cng21plus = false bool cng22plus = false bool cng23plus = false bool cng24plus = false if (@cng2 == "++++") cng21plus = true cng22plus = true cng23plus = true cng24plus = true elseif (@cng2 == "+++-") cng21plus = true cng22plus = true cng23plus = true elseif (@cng2 == "++-+") cng21plus = true cng22plus = true cng24plus = true elseif (@cng2 == "+-++") cng21plus = true cng23plus = true cng24plus = true elseif (@cng2 == "-+++") cng22plus = true cng23plus = true cng24plus = true elseif (@cng2 == "-++-") cng22plus = true cng23plus = true elseif (@cng2 == "-+-+") cng22plus = true cng24plus = true elseif (@cng2 == "--++") cng23plus = true cng24plus = true elseif (@cng2 == "+-+-") cng21plus = true cng23plus = true elseif (@cng2 == "+--+") cng21plus = true cng24plus = true elseif (@cng2 == "++--") cng21plus = true cng22plus = true elseif (@cng2 == "+---") cng21plus = true elseif (@cng2 == "-+--") cng22plus = true elseif (@cng2 == "--+-") cng23plus = true elseif (@cng2 == "---+") cng24plus = true else ;all minus endif ;;; fBm stuff complex dr = @distcenter if (@centermove) dr = #center endif complex r = (0,1) ^ (@angle / 90.0) complex r2 = (0,1) ^ (@anglestep / 90.0) complex r3 = (0,1) ^ (@distangle / 90.0) float fiter = @noisestart bool noise = false int iter = 0 loop: if (@dofBm == true) if (@noiseskip != 0); we are skipping some iterations fiter = fiter - 1; one less to go before we add noise while (fiter < 0.0); iterations all used up if (noise); we are currently adding noise noise = false; so stop fiter = fiter + @noiseskip; skip this many iterations else; we aren't currently adding noise noise = true; so start fiter = fiter + @noiseiter; do this many iterations endif endwhile endif if (@coloronly); only using fBm on coloring z = oz; restore z from un-fBm'ed copy endif endif ;; fBm stuff float oldx = real(z) float oldy = imag(z) bool formula1 = false iter = iter + 1 ; Determine formula to be used: if ( @seq == 1 ) ; First formula formula1 = true elseif ( @seq == 2 ) ; Second formula formula1 = false elseif ( @seq==3 ) seed = random(seed) if ( abs(seed)/#randomrange < @prob1 ) formula1 = true else formula1 = false endif if (@invertMod == true) formula1 = !formula1 endif elseif ( @seq == 0 ); Modulation if (iter % @modBy < @modCmp) formula1 = true else formula1 = false endif if (@invertMod == true) formula1 = !formula1 endif endif if @style1 == true aa = oldx else aa = oldy endif if @style2 == true bb = oldx else bb = oldy endif if @style3 == true cc = oldx else cc = oldy endif if @style4 == true dd = oldx else dd = oldy endif if @style5 == true ee = oldy else ee = oldx endif if @style6 == true ff = oldy else ff = oldx endif if @style7 == true gg = oldy else gg = oldx endif if @style8 == true hh = oldy else hh = oldx endif float xA = 0.0 float xB = 0.0 float yA = 0.0 float yB = 0.0 if (formula1 == true) if (cng11plus == true) xA = pAmpA1 * real(@fcnA1(pFreqA1 * aa^@exp1 + \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@exp2 )))) else ; it is minus xA = pAmpA1 * real(@fcnA1(pFreqA1 * aa^@exp1 - \ pAmpB1 * real(@fcnB1(pFreqB1 * bb^@exp2 )))) endif if (cng12plus == true) xB = pAmpC1 * real(@fcnC1(pFreqC1 * cc^@exp3 + \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@exp4 )))) else ; it is minus xB = pAmpC1 * real(@fcnC1(pFreqC1 * cc^@exp3 - \ pAmpD1 * real(@fcnD1(pFreqD1 * dd^@exp4 )))) endif if (cng13plus == true) yA = pAmpA3 * real(@fcnA3(pFreqA3 * ee^@exp5 + \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@exp6 )))) else ; it is minus yA = pAmpA3 * real(@fcnA3(pFreqA3 * ee^@exp5 - \ pAmpB3 * real(@fcnB3(pFreqB3 * ff^@exp6 )))) endif if (cng14plus == true) yB = pAmpC3 * real(@fcnC3(pFreqC3 * gg^@exp7 + \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@exp8 )))) else ; it is minus yB = pAmpC3 * real(@fcnC3(pFreqC3 * gg^@exp7 - \ pAmpD3 * real(@fcnD3(pFreqD3 * hh^@exp8 )))) endif else ; formula 2 if (cng21plus == true) xA = pAmpA2 * real(@fcnA2(pFreqA2 * aa^@exp1 + \ pAmpB2 * real(@fcnB2(pFreqB2 * bb^@exp2 )))) else xA = pAmpA2 * real(@fcnA2(pFreqA2 * aa^@exp1 - \ pAmpB2 * real(@fcnB2(pFreqB2 * bb^@exp2 )))) endif if (cng22plus == true) xB = pAmpC2 * real(@fcnC2(pFreqC2 * cc^@exp3 + \ pAmpD2 * real(@fcnD2(pFreqD2 * dd^@exp4 )))) else xB = pAmpC2 * real(@fcnC2(pFreqC2 * cc^@exp3 - \ pAmpD2 * real(@fcnD2(pFreqD2 * dd^@exp4 )))) endif if (cng23plus == true) yA = pAmpA4 * real(@fcnA4(pFreqA4 * ee^@exp5 + \ pAmpB4 * real(@fcnB4(pFreqB4 * ff^@exp6 )))) else yA = pAmpA4 * real(@fcnA4(pFreqA4 * ee^@exp5 - \ pAmpB4 * real(@fcnB4(pFreqB4 * ff^@exp6 )))) endif if (cng24plus == true) yB = pAmpC4 * real(@fcnC4(pFreqC4 * gg^@exp7 + \ pAmpD4 * real(@fcnD4(pFreqD4 * hh^@exp8 )))) else yB = pAmpC4 * real(@fcnC4(pFreqC4 * gg^@exp7 - \ pAmpD4 * real(@fcnD4(pFreqD4 * hh^@exp8 )))) endif endif if @op11 == "1+2" ; + xx1 = xA + xB elseif @op11 == "1-2" ; - xx1 = xA - xB elseif @op11 == "2-1" ; - xx1 = xB - xA elseif @op11 == "1*2" ; * xx1 = xA * xB elseif @op11 == "1/2" ; / xx1 = xA / xB elseif @op11 == "2/1" ; / xx1 = xB / xA elseif @op11 == "1^2" ; ^ xx1 = xA ^ xB elseif @op11 == "2^1" ; ^ xx1 = xB ^ xA endif if @op12 == "1+2" ; + yy1 = yA + yB elseif @op12 == "1-2" ; - yy1 = yA - yB elseif @op12 == "2-1" ; - yy1 = yB - yA elseif @op12 == "1*2" ; * yy1 = yA * yB elseif @op12 == "1/2" ; / yy1 = yA / yB elseif @op12 == "2/1" ; / yy1 = yB / yA elseif @op12 == "1^2" ; ^ yy1 = yA ^ yB elseif @op12 == "2^1" ; ^ yy1 = yB ^ yA endif x1 = oldx + @multiplier * xx1 y1 = oldy - @multiplier * yy1 if (@op2 =="+") z = @fn1(x1^@ex1*@mx1-@px1) + @fn2(y1^@ey1*@my1-@py1) elseif (@op2 =="-") z = @fn1(x1^@ex1*@mx1-@px1) - @fn2(y1^@ey1*@my1-@py1) elseif (@op2 =="*") z = @fn1(x1^@ex1*@mx1-@px1) * @fn2(y1^@ey1*@my1-@py1) elseif (@op2 =="/") z = @fn1(x1^@ex1*@mx1-@px1) / @fn2(y1^@ey1*@my1-@py1) elseif (@op2 =="^") z = @fn1(x1^@ex1*@mx1-@px1) ^ @fn2(y1^@ey1*@my1-@py1) else endif if (@op1 =="+") z = z + (c-@pc1) elseif (@op1 =="-") z = z - (c-@pc1) elseif (@op1 =="*") z = z * (c-@pc1) elseif (@op1 =="/") z = z / (c-@pc1) elseif (@op1 =="^") z = z ^ (c-@pc1) else ;;; endif z = z if (@dofBm==true) if (@coloronly); only using fBm on coloring oz = z endif if (@noiseskip == 0.0 || noise); adding noise this iteration complex p = z * @scale * r + @offset float sum = 0.0 float freq = 1.0 complex v = (0,0) int i = @octaves while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = floor(real(p)) % 256 float by0 = floor(imag(p)) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(p) - floor(real(p)) float ry0 = imag(p) - floor(imag(p)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 ; create a "random" index for each corner ; (this is where Intel's version differs from Perlin's; ; I used Intel's version because it doesn't require a ; pre-computed random table, which is difficult to manage ; in UF.) float b00 = (bx0^@npower % 65536 + by0)^@npower % 65536 float b10 = (bx1^@npower % 65536 + by0)^@npower % 65536 float b01 = (bx0^@npower % 65536 + by1)^@npower % 65536 float b11 = (bx1^@npower % 65536 + by1)^@npower % 65536 ; produce a "random" vector for each corner float g_b00_0 = (b00)^@npower*0.25 % 512 - 256 float g_b10_0 = (b10)^@npower*0.25 % 512 - 256 float g_b01_0 = (b01)^@npower*0.25 % 512 - 256 float g_b11_0 = (b11)^@npower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@npower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@npower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@npower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@npower*0.25 % 512 - 256 ; normalize each vector float d = 0.0; d = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * d g_b00_1 = g_b00_1 * d d = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * d g_b10_1 = g_b10_1 * d d = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * d g_b01_1 = g_b01_1 * d d = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * d g_b11_1 = g_b11_1 * d ; produce colors for each corner float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 ; interpolate between corners using ; bilinear filtering float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) sum = sum + (a + sy*(b-a))*freq freq = freq * @step p = p * r2 / @step i = i - 1 endwhile if (@dstyle == 0); radial distortion v = (z-dr)/cabs(z-dr) * r3; use vector based on angle to distortion center elseif (@dstyle == 1); linear distortion v = r3; just use rotation vector endif z = z + v * sum*0.5*@distortion endif if (@coloronly == false); not just using fBm on coloring oz = z; value for bailout is fBm'ed z endif else oz = z endif ;; dofBm if (@progressive == true) pAmpA1 = pAmpA1 + @dAmpA1 pAmpB1 = pAmpB1 + @dAmpB1 pAmpC1 = pAmpC1 + @dAmpC1 pAmpD1 = pAmpD1 + @dAmpD1 pAmpA2 = pAmpA2 + @dAmpA2 pAmpB2 = pAmpB2 + @dAmpB2 pAmpC2 = pAmpC2 + @dAmpC2 pAmpD2 = pAmpD2 + @dAmpD2 pAmpA3 = pAmpA3 + @dAmpA3 pAmpB3 = pAmpB3 + @dAmpB3 pAmpC3 = pAmpC3 + @dAmpC3 pAmpD3 = pAmpD3 + @dAmpD3 pAmpA4 = pAmpA4 + @dAmpA4 pAmpB4 = pAmpB4 + @dAmpB4 pAmpC4 = pAmpC4 + @dAmpC4 pAmpD4 = pAmpD4 + @dAmpD4 pFreqA1 = pFreqA1 + @dFreqA1 pFreqB1 = pFreqB1 + @dFreqB1 pFreqC1 = pFreqC1 + @dFreqC1 pFreqD1 = pFreqD1 + @dFreqD1 pFreqA2 = pFreqA2 + @dFreqA2 pFreqB2 = pFreqB2 + @dFreqB2 pFreqC2 = pFreqC2 + @dFreqC2 pFreqD2 = pFreqD2 + @dFreqD2 pFreqA3 = pFreqA3 + @dFreqA3 pFreqB3 = pFreqB3 + @dFreqB3 pFreqC3 = pFreqC3 + @dFreqC3 pFreqD3 = pFreqD3 + @dFreqD3 pFreqA4 = pFreqA4 + @dFreqA4 pFreqB4 = pFreqB4 + @dFreqB4 pFreqC4 = pFreqC4 + @dFreqC4 pFreqD4 = pFreqD4 + @dFreqD4 endif bailout: |oz| < @bailout switch: type = "sdc-kology-t" version = @version mode = @switchmode switchMode = mode startseed = #pixel bailout = @bailout multiplier = @multiplier seq = @seq modBy = @modBy modCmp = @modCmp randomseed = @randomseed prob1 = @prob1 invertMod = @invertMod dofBm = @dofBm doprogressive = @doprogressive fcnA1 = @fcnA1 ampA1 = @ampA1 freqA1 = @freqA1 fcnB1 = @fcnB1 ampB1 = @ampB1 freqB1 = @freqB1 fcnC1 = @fcnC1 ampC1 = @ampC1 freqC1 = @freqC1 fcnD1 = @fcnD1 ampD1 = @ampD1 freqD1 = @freqD1 fcnA2 = @fcnA2 ampA2 = @ampA2 freqA2 = @freqA2 fcnB2 = @fcnB2 ampB2 = @ampB2 freqB2 = @freqB2 fcnC2 = @fcnC2 ampC2 = @ampC2 freqC2 = @freqC2 fcnD2 = @fcnD2 ampD2 = @ampD2 freqD2 = @freqD2 fcnA3 = @fcnA3 ampA3 = @ampA3 freqA3 = @freqA3 fcnB3 = @fcnB3 ampB3 = @ampB3 freqB3 = @freqB3 fcnC3 = @fcnC3 ampC3 = @ampC3 freqC3 = @freqC3 fcnD3 = @fcnD3 ampD3 = @ampD3 freqD3 = @freqD3 fcnA4 = @fcnA4 ampA4 = @ampA4 freqA4 = @freqA4 fcnB4 = @fcnB4 ampB4 = @ampB4 freqB4 = @freqB4 fcnC4 = @fcnC4 ampC4 = @ampC4 freqC4 = @freqC4 fcnD4 = @fcnD4 ampD4 = @ampD4 freqD4 = @freqD4 dAmpA1 = @dAmpA1 dAmpB1 = @dAmpB1 dAmpC1 = @dAmpC1 dAmpD1 = @dAmpD1 dAmpA2 = @dAmpA2 dAmpB2 = @dAmpB2 dAmpC2 = @dAmpC2 dAmpD2 = @dAmpD2 dAmpA3 = @dAmpA3 dAmpB3 = @dAmpB3 dAmpC3 = @dAmpC3 dAmpD3 = @dAmpD3 dAmpA4 = @dAmpA4 dAmpB4 = @dAmpB4 dAmpC4 = @dAmpC4 dAmpD4 = @dAmpD4 dFreqA1 = @dFreqA1 dFreqB1 = @dFreqB1 dFreqC1 = @dFreqC1 dFreqD1 = @dFreqD1 dFreqA2 = @dFreqA2 dFreqB2 = @dFreqB2 dFreqC2 = @dFreqC2 dFreqD2 = @dFreqD2 dFreqA3 = @dFreqA3 dFreqB3 = @dFreqB3 dFreqC3 = @dFreqC3 dFreqD3 = @dFreqD3 dFreqA4 = @dFreqA4 dFreqB4 = @dFreqB4 dFreqC4 = @dFreqC4 dFreqD4 = @dFreqD4 style1 = @style1 style2 = @style2 style3 = @style3 style4 = @style4 style5 = @style5 style6 = @style6 style7 = @style7 style8 = @style8 op1 = @op1 op2 = @op2 fn1 = @fn1 fn2 = @fn2 fn3 = @fn3 fn4 = @fn4 cng1 = @cng1 cng2 = @cng2 exp1 = @exp1 exp2 = @exp2 exp3 = @exp3 exp4 = @exp4 exp5 = @exp5 exp6 = @exp6 exp7 = @exp7 exp8 = @exp8 exx = @exx px = @px exy = @exy py = @py ex1 = @ex1 ey1 = @ey1 mx1 = @mx1 my1 = @my1 px1 = @px1 py1 = @py1 pc1 = @pc1 distortion = @distortion dstyle = @dstyle distangle = @distangle distcenter = @distcenter centermove = @centermove offset = @offset scale = @scale angle = @angle step = @step anglestep = @anglestep octaves = @octaves npower = @npower default: title = "KologyT" method = multipass periodicity = 0 magn = 0.3 maxiter = 100 float param version default = 1.0 visible = false endparam param mode caption = "Current Mode" default = 0 enum = "Mandelbrot" "Julia" hint = "Shows current mode" endparam param switchMode caption = "Switch Mode" default = 1 enum = "Mandelbrot" "Julia" hint = "Shows mode to switch to" endparam float param bailout default = 100.0 caption = "Bailout" endparam float param multiplier default = .1 caption = "Multiplier" endparam int param seq enum = "Modulation" "First Formula" "Second Formula" "Random" default = 0 caption = "Formula Sequence" endparam int param modBy default = 10 caption = "Mod By" hint = "Iteration Modulated by This" visible = @seq==0 endparam int param modCmp default = 5 caption = "Mod Compare" hint = "Modulated Iteration < this -> formula 1" visible = @seq==0 endparam int param randomseed caption = "Random Seed" default = 123456 visible = @seq==3 endparam float param prob1 caption = "Prob for Func 1" default = 0.5 min = 0.0 max = 1.0 visible = @seq==3 endparam bool param invertMod caption = "Invert Sequence?" hint = "Inverse the order of formulas used" visible = @seq==0 || @seq==3 endparam complex param startSeed caption = "Start/Seed" default = (0,0) hint = "Perturbation for the Mandelbrot, seed for the Julia." endparam bool param dofBm caption = "fBm distortion?" default = false endparam bool param progressive caption = "Progressive Params?" default = false endparam heading caption = "Part Combine Operators" endheading param op11 caption = "Fcn 1, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 2 endparam param op12 caption = "Fcn 1, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 2 endparam param op21 caption = "Fcn 2, Op 1" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 1 endparam param op22 caption = "Fcn 2, Op 2" default = 0 enum = "1+2""1-2""2-1""1*2""1/2""2/1""1^2""2^1" visible = @seq != 1 endparam heading caption = "Functions" endheading bool param showfn1 caption = "Show Function 1" default = true visible= @seq != 2 endparam bool param showfn2 caption = "Show Function 2" default = true visible = @seq != 1 endparam bool param showfn3 caption = "Show Function 3" default = true visible = @seq != 2 endparam bool param showfn4 caption = "Show Function 4" default = true visible = @seq != 1 endparam heading caption = "Function 1" visible = @showfn1 && @seq != 2 endheading func fcnA1 default = sinh() caption = "Function A1" visible = @showfn1 && @seq != 2 endfunc float param ampA1 default = 1.0 caption = "Amplitude A1" visible = @showfn1 && @seq != 2 endparam float param dAmpA1 default = 0.0 caption = "Delta Amplitude A1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqA1 default = 1.0 caption = "Frequency A1" visible = @showfn1 && @seq != 2 endparam float param dFreqA1 default = 0.0 caption = "Delta Frequency A1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnB1 default = sin() caption = "Function B1" visible = @showfn1 && @seq != 2 endfunc float param ampB1 default = 1.0 caption = "Amplitude B1" visible = @showfn1 && @seq != 2 endparam float param dAmpB1 default = 0.0 caption = "Delta Amplitude B1" visible = @progressive && @showfn1 && @seq != 2 endparam float param freqB1 default = 1.0 caption = "Frequency B1" visible = @showfn1 && @seq != 2 endparam float param dFreqB1 default = 0.0 caption = "Delta Frequency B1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnC1 default = sin() caption = "Function C1" visible = @showfn1 && @seq != 2 endfunc float param ampC1 default = 1.0 caption = "Amplitude C1" visible = @showfn1 && @seq != 2 endparam float param dAmpC1 default = 0.0 caption = "Delta Amplitude C1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqC1 default = 1.0 caption = "Frequency C1" visible = @showfn1 && @seq != 2 endparam float param dFreqC1 default = 0.0 caption = "Delta Frequency C1" visible = @showfn1 && @seq != 2 && @progressive endparam func fcnD1 default = cos() caption = "Function D1" visible = @showfn1 && @seq != 2 endfunc float param ampD1 default = 1.0 caption = "Amplitude D1" visible = @showfn1 && @seq != 2 endparam float param dAmpD1 default = 0.0 caption = "Delta Amplitude D1" visible = @showfn1 && @seq != 2 && @progressive endparam float param freqD1 default = 1.0 caption = "Frequency D1" visible = @showfn1 && @seq != 2 endparam float param dFreqD1 default = 0.0 caption = "Delta Frequency D1" visible = @showfn1 && @seq != 2 && @progressive endparam heading caption = "Function2" visible = @showfn2 && @seq != 1 endheading func fcnA2 default = sinh() caption = "Function A2" visible = @showfn2 && @seq != 1 endfunc float param ampA2 default = 1.0 caption = "Amplitude A2" visible = @showfn2 && @seq != 1 endparam float param dAmpA2 default = 0.0 caption = "Delta Amplitude A2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqA2 default = 1.0 caption = "Frequency A2" visible = @showfn2 && @seq != 1 endparam float param dFreqA2 default = 0.0 caption = "Delta Frequency A2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnB2 default = cos() caption = "Function B2" visible = @showfn2 && @seq != 1 endfunc float param ampB2 default = 1.0 caption = "Amplitude B2" visible = @showfn2 && @seq != 1 endparam float param dAmpB2 default = 0.0 caption = "Delta Amplitude B2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqB2 default = 1.0 caption = "Frequency B2" visible = @showfn2 && @seq != 1 endparam float param dFreqB2 default = 0.0 caption = "Delta Frequency B2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnC2 default = cos() caption = "Function C2" visible = @showfn2 && @seq != 1 endfunc float param ampC2 default = 1.0 caption = "Amplitude C2" visible = @showfn2 && @seq != 1 endparam float param dAmpC2 default = 0.0 caption = "Delta Amplitude C2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqC2 default = 1.0 caption = "Frequency C2" visible = @showfn2 && @seq != 1 endparam float param dFreqC2 default = 0.0 caption = "Delta Frequency C2" visible = @showfn2 && @seq != 1 && @progressive endparam func fcnD2 default = sin() caption = "Function D2" visible = @showfn2 && @seq != 1 endfunc float param ampD2 default = 1.0 caption = "Amplitude D2" visible = @showfn2 && @seq != 1 endparam float param dAmpD2 default = 0.0 caption = "Delta Amplitude D2" visible = @showfn2 && @seq != 1 && @progressive endparam float param freqD2 default = 1.0 caption = "Frequency D2" visible = @showfn2 && @seq != 1 endparam float param dFreqD2 default = 0.0 caption = "Delta Frequency D2" visible = @showfn2 && @seq != 1 && @progressive endparam heading caption = "Function 3" visible = @showfn3 && @seq != 2 endheading func fcnA3 default = sinh() caption = "Function A3" visible = @showfn3 && @seq != 2 endfunc float param ampA3 default = 1.0 caption = "Amplitude A3" visible = @showfn3 && @seq != 2 endparam float param dAmpA3 default = 0.0 caption = "Delta Amplitude A3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqA3 default = 1.0 caption = "Frequency A3" visible = @showfn3 && @seq != 2 endparam float param dFreqA3 default = 0.0 caption = "Delta Frequency A3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnB3 default = sin() caption = "Function B3" visible = @showfn3 && @seq != 2 endfunc float param ampB3 default = 1.0 caption = "Amplitude B3" visible = @showfn3 && @seq != 2 endparam float param dAmpB3 default = 0.0 caption = "Delta Amplitude B3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqB3 default = 1.0 caption = "Frequency B3" visible = @showfn3 && @seq != 2 endparam float param dFreqB3 default = 0.0 caption = "Delta Frequency B3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnC3 default = sin() caption = "Function C3" visible = @showfn3 && @seq != 2 endfunc float param ampC3 default = 1.0 caption = "Amplitude C3" visible = @showfn3 && @seq != 2 endparam float param dAmpC3 default = 0.0 caption = "Delta Amplitude C3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqC3 default = 1.0 caption = "Frequency C3" visible = @showfn3 && @seq != 2 endparam float param dFreqC3 default = 0.0 caption = "Delta Frequency C3" visible = @showfn3 && @seq != 2 && @progressive endparam func fcnD3 default = cos() caption = "Function D3" visible = @showfn3 && @seq != 2 endfunc float param ampD3 default = 1.0 caption = "Amplitude D3" visible = @showfn3 && @seq != 2 endparam float param dAmpD3 default = 0.0 caption = "Delta Amplitude D3" visible = @showfn3 && @seq != 2 && @progressive endparam float param freqD3 default = 1.0 caption = "Frequency D3" visible = @showfn3 && @seq != 2 endparam float param dFreqD3 default = 0.0 caption = "Delta Frequency D3" visible = @showfn3 && @seq != 2 && @progressive endparam heading caption = "Function4" visible = @showfn4 && @seq != 1 endheading func fcnA4 default = sinh() caption = "Function A4" visible = @showfn4 && @seq != 1 endfunc float param ampA4 default = 1.0 caption = "Amplitude A4" visible = @showfn4 && @seq != 1 endparam float param dAmpA4 default = 0.0 caption = "Delta Amplitude A4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqA4 default = 1.0 caption = "Frequency A4" visible = @showfn4 && @seq != 1 endparam float param dFreqA4 default = 0.0 caption = "Delta Frequency A4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnB4 default = cos() caption = "Function B4" visible = @showfn4 && @seq != 1 endfunc float param ampB4 default = 1.0 caption = "Amplitude B4" visible = @showfn4 && @seq != 1 endparam float param dAmpB4 default = 0.0 caption = "Delta Amplitude B4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqB4 default = 1.0 caption = "Frequency B4" visible = @showfn4 && @seq != 1 endparam float param dFreqB4 default = 0.0 caption = "Delta Frequency B4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnC4 default = cos() caption = "Function C4" visible = @showfn4 && @seq != 1 endfunc float param ampC4 default = 1.0 caption = "Amplitude C4" visible = @showfn4 && @seq != 1 endparam float param dAmpC4 default = 0.0 caption = "Delta Amplitude C4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqC4 default = 1.0 caption = "Frequency C4" visible = @showfn4 && @seq != 1 endparam float param dFreqC4 default = 0.0 caption = "Delta Frequency C4" visible = @showfn4 && @seq != 1 && @progressive endparam func fcnD4 default = sin() caption = "Function D4" visible = @showfn4 && @seq != 1 endfunc float param ampD4 default = 1.0 caption = "Amplitude D4" visible = @showfn4 && @seq != 1 endparam float param dAmpD4 default = 0.0 caption = "Delta Amplitude D4" visible = @showfn4 && @seq != 1 && @progressive endparam float param freqD4 default = 1.0 caption = "Frequency D4" visible = @showfn4 && @seq != 1 endparam float param dFreqD4 default = 0.0 caption = "Delta Frequency D4" visible = @showfn4 && @seq != 1 && @progressive endparam heading caption = "Toby's Enhancements" endheading bool param opvar caption = "Operator Params" default = false hint = "Turn on/off Operator parameters" endparam bool param expvar caption = "Exponent Params" default = false hint = "Turn on/off Exponent parameters" endparam bool param shapevar caption = "Shape Params" default = false hint = "Turn on/off Shape parameters" endparam bool param stylevar caption = "Style Params" default = false hint = "Turn on/off Style parameters" endparam bool param globfcnvar caption = "Global Functions" default = false hint = "Turn on/off Global Function parameters" endparam bool param fbmvar caption = "fBm Params" default = false visible = @dofBm==true endparam heading caption = "Operator Parameters" visible = @opvar endheading param cng1 caption = "OpChange 1" enum = "++++""+++-""++-+""+-++""-+++""++--""+--+"\ "--++""+-+-""-+-+""-++-""+---""-+--""--+-""---+"\ "----" default = 0 visible = @opvar && ( @seq != 2 ) endparam param cng2 caption = "OpChange 2" enum = "++++""+++-""++-+""+-++""-+++""++--""+--+"\ "--++""+-+-""-+-+""-++-""+---""-+--""--+-""---+"\ "----" default = 0 visible = @opvar && ( @seq != 1 ) endparam param op1 caption = "Operator 1" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam param op2 caption = "Operator 2" enum = "+""-""*""/""^" default = 0 visible = @opvar endparam heading caption = "Exponent Parameters" visible = @expvar endheading complex param exp1 caption = "Exponent 1" default = (1.0,0.0) visible = @expvar endparam complex param exp2 caption = "Exponent 2" default = (1.0,0.0) visible = @expvar endparam complex param exp3 caption = "Exponent 3" default = (1.0,0.0) visible = @expvar endparam complex param exp4 caption = "Exponent 4" default = (1.0,0.0) visible = @expvar endparam complex param exp5 caption = "Exponent 5" default = (1.0,0.0) visible = @expvar endparam complex param exp6 caption = "Exponent 6" default = (1.0,0.0) visible = @expvar endparam complex param exp7 caption = "Exponent 7" default = (1.0,0.0) visible = @expvar endparam complex param exp8 caption = "Exponent 8" default = (1.0,0.0) visible = @expvar endparam float param exx caption = "X Exponent" default = 1.0 visible = @expvar endparam float param exy caption = "Y Exponent" default = 1.0 visible = @expvar endparam heading caption = "Shape Parameters" visible = @shapevar endheading complex param ex1 caption = "X Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param mx1 caption = "X Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param px1 caption = "X Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param ey1 caption = "Y Shape 1" default = (1.0,0.0) visible = @shapevar endparam complex param my1 caption = "Y Shape 2" default = (1.0,0.0) visible = @shapevar endparam complex param py1 caption = "Y Shape 3" default = (0.0,0.0) visible = @shapevar endparam complex param pc1 caption = "C Shape" default = (0.0,0.0) visible = @shapevar endparam heading caption = "Style Parameters" visible = @stylevar endheading param style1 caption = "Variable 1" default = false visible = @stylevar endparam param style2 caption = "Variable 2" default = false visible = @stylevar endparam param style3 caption = "Variable 3" default = false visible = @stylevar endparam param style4 caption = "Variable 4" default = false visible = @stylevar endparam param style5 caption = "Variable 5" default = false visible = @stylevar endparam param style6 caption = "Variable 6" default = false visible = @stylevar endparam param style7 caption = "Variable 7" default = false visible = @stylevar endparam param style8 caption = "Variable 8" default = false visible = @stylevar endparam heading caption = "Global Functions" visible = @globfcnvar endheading func fn1 caption = "Global Function 1" default = ident () visible = @globfcnvar endfunc func fn2 caption = "Global Function 2" default = flip () visible = @globfcnvar endfunc func fn3 caption = "Wild Function 1" default = ident () visible = @globfcnvar endfunc func fn4 caption = "Wild Function 2" default = ident () visible = @globfcnvar endfunc heading caption = "fBm Parameters" visible = @dofBm==true && @fBmvar==true endheading param distortion caption = "Distortion Strength" default = 1.0 hint = "This is the amount the noise distorts the image." visible = @dofBm==true && @fBmvar==true endparam param dstyle caption = "Distortion Style" default = 0 enum = "radial" "linear" hint = "This selects whether the distortion will be focused \ around a single point, or directed along a line." visible = @dofBm==true && @fBmvar==true endparam param distangle caption = "Distortion Angle" default = 0.0 hint = "This is the angle to rotate the distortion." visible = @dofBm==true && @fBmvar==true endparam param distcenter caption = "Distortion Center" default = (0,0) hint = "Sets the center of distortion. If Use Screen \ Center is set, this item is ignored." visible = @dofBm==true && @fBmvar==true endparam param centermove caption = "Use Screen Center" default = FALSE hint = "If set, distortion will be around the center of \ the window, regardless of the Distortion Center \ setting." visible = @dofBm==true && @fBmvar==true endparam param offset caption = "Noise Offset" default = (0,0) hint = "This is the offset of the pattern. You can use this to shift \ the pattern around on the complex plane." visible = @dofBm==true && @fBmvar==true endparam param scale caption = "Noise Scale" default = 1.0 hint = "This is the overall scale of the noise." visible = @dofBm==true && @fBmvar==true endparam param angle caption = "Noise Rotation" default = 0.0 hint = "This is the angle, in degrees, of the noise." visible = @dofBm==true && @fBmvar==true endparam param step caption = "Noise Scale Step" default = 0.5 hint = "This is the step in scale between noise iterations." visible = @dofBm==true && @fBmvar==true endparam param anglestep caption = "Noise Rotation Step" default = 37.0 hint = "This is the angle, in degrees, to rotate between noise \ iterations." visible = @dofBm==true && @fBmvar==true endparam param octaves caption = "Noise Octaves" default = 7 min = 1 hint = "This is the number of iterations of the noise formula." visible = @dofBm==true && @fBmvar==true endparam param npower caption = "Noise Exponent" default = 2.0 hint = "This is the exponent used to scramble numbers." visible = @dofBm==true && @fBmvar==true endparam param noisestart caption = "Start Iteration" default = 0.0 hint = "This is the iteration at which to start adding noise." visible = @dofBm==true && @fBmvar==true endparam param noiseiter caption = "Noise Iterations" default = 10000.0 hint = "This is the number of iterations to add noise to." visible = @dofBm==true && @fBmvar==true endparam param noiseskip caption = "Skip Iterations" default = 0.0 hint = "This is the number of iterations to skip adding noise \ before starting again." visible = @dofBm==true && @fBmvar==true endparam param coloronly caption = "Coloring Only" default = false hint = "If set, noise will only apply to pixel values passed \ to the coloring algorithm; it will not be included in \ the fractal calculation between iterations." visible = @dofBm==true && @fBmvar==true endparam } sdc-slopedust2dust { ; formulae from Middlekoop's ; Dust program... ; Actually, this is a transmogrification of a number ; of Strange Attractor formulae into escape-time ; formula. ; ; A Little Help: ; * Use Lighting in dmj.ucl or one of the 3D Texturizer Formulas ; in reb.ucl when Apply Slope is set. Generally, unset the ; Apply Slope parameter for other formulas. ; * Inside/Outside - Outside is identical to Inside with ; one less iteration. ; ; Thanks to Ron Barnett for help with the slope version ; December, 2004 global: int maxIter = #maxiter if (@outside == true) maxIter = #maxiter - 1 endif init: complex z = (0.0, 0.0) complex c = #pixel int iter = 0 complex p = @initfn(c) float x1 = real(p) float y1 = imag(p) float x2 = x1 + @offset ;; offset horizontally float y2 = y1 float x3 = x1 ;; offset horizontally float y3 = y1 + @offset ;;; slope stuff int done = 2 float e1 = 0.0; potentials float e2 = 0.0 float e3 = 0.0 float vx = 0.0; normal vector float vy = 0.0 float vz = 0.0 float vd = 0.0 float d1 = 0.0; distances float d2 = 0.0 float d3 = 0.0 float s1 = 1.0e20; smallest distances float s2 = 1.0e20 float s3 = 1.0e20 float iterexp1 = 0.0 float iterexp2 = 0.0 float iterexp3 = 0.0 loop: iter = iter + 1 x1 = real(@loopfnx(x1)) y1 = real(@loopfny(y1)) x2 = real(@loopfnx(x2)) y2 = real(@loopfny(y2)) x3 = real(@loopfnx(x3)) y3 = real(@loopfny(y3)) float sx1 = 1.0 if (x1 < 0.0) sx1 = -1.0 endif float sx2 = 1.0 if (x2 < 0.0) sx2 = -1.0 endif float sx3 = 1.0 if (x3 < 0.0) sx3 = -1.0 endif float tx1 = x1 float ty1 = y1 float tx2 = x2 float ty2 = y2 float tx3 = x3 float ty3 = y3 if (@method == 0) ; Hopalong x1 = y1 - sx1 * sqrt(abs(@m0pB * x1 - @m0pC)) y1 = @m0pA - tx1 x2 = y2 - sx2 * sqrt(abs(@m0pB * x2 - @m0pC)) y2 = @m0pA - tx2 x3 = y3 - sx3 * sqrt(abs(@m0pB * x3 - @m0pC)) y3 = @m0pA - tx3 elseif (@method == 1) ; Popcorn x1 = tx1 - @m1pH * real(@m1fn1(ty1 + @m1fn2(@m1pC*ty1))) y1 = ty1 - @m1pH * real(@m1fn3(tx1 + @m1fn4(@m1pC*tx1))) x2 = tx2 - @m1pH * real(@m1fn1(ty2 + @m1fn2(@m1pC*ty2))) y2 = ty2 - @m1pH * real(@m1fn3(tx2 + @m1fn4(@m1pC*tx2))) x3 = tx3 - @m1pH * real(@m1fn1(ty3 + @m1fn2(@m1pC*ty3))) y3 = ty3 - @m1pH * real(@m1fn3(tx3 + @m1fn4(@m1pC*tx3))) elseif (@method == 2) ; Gingerbread x1 = 1.0 - ty1 + abs(tx1) y1 = tx1 x2 = 1.0 - ty2 + abs(tx2) y2 = tx2 x3 = 1.0 - ty3 + abs(tx3) y3 = tx3 elseif (@method == 3) ; Three Ply x1 = ty1 - sx1*abs(sin(tx1)*cos(@m3pB) + @m3pC - tx1*sin(@m3pA + @m3pB + @m3pC)) y1 = @m3pA - tx1 x2 = ty2 - sx2*abs(sin(tx2)*cos(@m3pB) + @m3pC - tx2*sin(@m3pA + @m3pB + @m3pC)) y2 = @m3pA - tx2 x3 = ty3 - sx3*abs(sin(tx3)*cos(@m3pB) + @m3pC - tx3*sin(@m3pA + @m3pB + @m3pC)) y3 = @m3pA - tx3 elseif (@method == 4) ; Quadrup Two x1 = tx1 - sx1*sin(log(abs(@m4pB * ty1 - @m4pC))) * atan(abs(sqr(@m4pC * tx1 - @m4pB))) y1 = @m4pA - tx1 x2 = tx2 - sx2*sin(log(abs(@m4pB * ty2 - @m4pC))) * atan(abs(sqr(@m4pC * tx2 - @m4pB))) y2 = @m4pA - tx2 x3 = tx3 - sx3*sin(log(abs(@m4pB * ty3 - @m4pC))) * atan(abs(sqr(@m4pC * tx3 - @m4pB))) y3 = @m4pA - tx3 elseif (@method == 5) ; Martin x1 = ty1 - real(@m5fnA(tx1)) y1 = @m5pA - tx1 x2 = ty2 - real(@m5fnA(tx2)) y2 = @m5pA - tx2 x3 = ty3 - real(@m5fnA(tx3)) y3 = @m5pA - tx3 elseif (@method == 6) ; Ganymede Standard x1 = real(@m6f1(@m6pB*ty1) + @m6pC*@m6f2(@m6pB*tx1)) y1 = real(@m6f3(@m6pA*tx1) + @m6pD*@m6f4(@m6pA*ty1)) x2 = real(@m6f1(@m6pB*ty2) + @m6pC*@m6f2(@m6pB*tx2)) y2 = real(@m6f3(@m6pA*tx2) + @m6pD*@m6f4(@m6pA*ty2)) x3 = real(@m6f1(@m6pB*ty3) + @m6pC*@m6f2(@m6pB*tx3)) y3 = real(@m6f3(@m6pA*tx3) + @m6pD*@m6f4(@m6pA*ty3)) elseif (@method == 7) ; Ganymede Alpha x1 = real(@m7f1(@m7pB*ty1) + @m7f1(@m7pB*tx1)^2 + @m7f1(@m7pB*tx1)^3) y1 = real(@m7f1(@m7pA*tx1) + @m7f1(@m7pA*ty1)^2 + @m7f1(@m7pC*ty1)^3) x2 = real(@m7f1(@m7pB*ty2) + @m7f1(@m7pB*tx2)^2 + @m7f1(@m7pB*tx2)^3) y2 = real(@m7f1(@m7pA*tx2) + @m7f1(@m7pA*ty2)^2 + @m7f1(@m7pC*ty2)^3) x3 = real(@m7f1(@m7pB*ty3) + @m7f1(@m7pB*tx3)^2 + @m7f1(@m7pB*tx3)^3) y3 = real(@m7f1(@m7pA*tx3) + @m7f1(@m7pA*ty3)^2 + @m7f1(@m7pC*ty3)^3) elseif (@method == 8) ; Ganymede Beta x1 = real(@m8f1(@m8pB*ty1) + @m8f2(@m8pB*tx1)) y1 = real(@m8f3(@m8pA*tx1) + @m8f4(@m8pA*ty1)) x2 = real(@m8f1(@m8pB*ty2) + @m8f2(@m8pB*tx2)) y2 = real(@m8f3(@m8pA*tx2) + @m8f4(@m8pA*ty2)) x3 = real(@m8f1(@m8pB*ty3) + @m8f2(@m8pB*tx3)) y3 = real(@m8f3(@m8pA*tx3) + @m8f4(@m8pA*ty3)) elseif (@method == 9) ; Chip x1 = ty1 - sx1*cos(sqr(log(abs(@m9pB*tx1-@m9pC))))*atan(sqr(log(abs(@m9pC*tx1-@m9pB)))) y1 = @m9pA - tx1 x2 = ty2 - sx2*cos(sqr(log(abs(@m9pB*tx2-@m9pC))))*atan(sqr(log(abs(@m9pC*tx2-@m9pB)))) y2 = @m9pA - tx2 x3 = ty3 - sx3*cos(sqr(log(abs(@m9pB*tx3-@m9pC))))*atan(sqr(log(abs(@m9pC*tx3-@m9pB)))) y3 = @m9pA - tx3 elseif (@method == 10) ; DeJong ;;xn+1 = sin(a yn) - cos(b xn) ;;yn+1 = sin(c xn) - cos(d yn) x1 = real( @m10f1(@m10pA*ty1) - @m10f2(@m10pB*tx1) ) y1 = real( @m10f3(@m10pC*tx1) - @m10f4(@m10pD*ty1) ) x2 = real( @m10f1(@m10pA*ty2) - @m10f2(@m10pB*tx2) ) y2 = real( @m10f3(@m10pC*tx2) - @m10f4(@m10pD*ty2) ) x3 = real( @m10f1(@m10pA*ty3) - @m10f2(@m10pB*tx3) ) y3 = real( @m10f3(@m10pC*tx3) - @m10f4(@m10pD*ty3) ) else endif tx1 = x1 ty1 = y1 tx2 = x2 ty2 = y2 tx3 = x3 ty3 = y3 sx1 = 1.0 ; get the sign of x if (x1 < 0.0) sx1 = -1.0 endif sx2 = 1.0 if (x2 < 0.0) sx2 = -1.0 endif sx3 = 1.0 if (x3 < 0.0) sx3 = -1.0 endif if (@perturb == 1) ; Functions x1 = x1 + real(@fnx(x1))*@px y1 = y1 + real(@fny(y1))*@py x2 = x2 + real(@fnx(x2))*@px y2 = y2 + real(@fny(y2))*@py x3 = x3 + real(@fnx(x3))*@px y3 = y3 + real(@fny(y3))*@py elseif (@perturb == 2) ; Hopalong x1 = x1 + (ty1 - sx1 * sqrt(abs(@p2pB * tx1 - @p2pC)))*@px y1 = y1 + (@p2pA - tx1)*@py x2 = x2 + (ty2 - sx2 * sqrt(abs(@p2pB * tx2 - @p2pC)))*@px y2 = y2 + (@p2pA - tx2)*@py x3 = x3 + (ty3 - sx3 * sqrt(abs(@p2pB * tx3 - @p2pC)))*@px y3 = y3 + (@p2pA - tx3)*@py elseif (@perturb == 3) ; Popcorn x1 = x1 + real(tx1 - @p3pH * @p3fn1(ty1 + @p3fn2(@p3pC*ty1)))*@px y1 = y1 + real(ty1 - @p3pH * @p3fn3(tx1 + @p3fn4(@p3pC*tx1)))*@py x2 = x2 + real(tx2 - @p3pH * @p3fn1(ty2 + @p3fn2(@p3pC*ty2)))*@px y2 = y2 + real(ty2 - @p3pH * @p3fn3(tx2 + @p3fn4(@p3pC*tx2)))*@py x3 = x3 + real(tx3 - @p3pH * @p3fn1(ty3 + @p3fn2(@p3pC*ty3)))*@px y3 = y3 + real(ty3 - @p3pH * @p3fn3(tx3 + @p3fn4(@p3pC*tx3)))*@py elseif (@perturb == 4) ; Gingerbread x1 = x1 + (1.0 - ty1 + abs(tx1))*@px y1 = y1 + (tx1)*@py x2 = x2 + (1.0 - ty2 + abs(tx2))*@px y2 = y2 + (tx2)*@py x3 = x3 + (1.0 - ty3 + abs(tx3))*@px y3 = y3 + (tx3)*@py elseif (@perturb == 5) ; Three Ply x1 = x1 + real(ty1 - sx1*abs(sin(tx1)*cos(@p5pB) + @p5pC - tx1*sin(@p5pA + @p5pB + @p5pC)))*@px y1 = y1 + real(@p5pA - tx1)*@py x2 = x2 + real(ty2 - sx2*abs(sin(tx2)*cos(@p5pB) + @p5pC - tx2*sin(@p5pA + @p5pB + @p5pC)))*@px y2 = y2 + real(@p5pA - tx2)*@py x3 = x3 + real(ty3 - sx3*abs(sin(tx3)*cos(@p5pB) + @p5pC - tx3*sin(@p5pA + @p5pB + @p5pC)))*@px y3 = y3 + real(@p5pA - tx3)*@py elseif (@perturb == 6 ) ; Quadrup Two x1 = x1 + (tx1 - sx1*sin(log(abs(@p6pB * ty1 - @p6pC))) * atan(abs(sqr(@p6pC * tx1 - @p6pB))))*@px y1 = y1 + (@p6pA - tx1)*@py x2 = x2 + (tx2 - sx2*sin(log(abs(@p6pB * ty2 - @p6pC))) * atan(abs(sqr(@p6pC * tx2 - @p6pB))))*@px y2 = y2 + (@p6pA - tx2)*@py x3 = x3 + (tx3 - sx3*sin(log(abs(@p6pB * ty3 - @p6pC))) * atan(abs(sqr(@p6pC * tx3 - @p6pB))))*@px y3 = y3 + (@p6pA - tx3)*@py elseif (@perturb == 7 ) ; Martinesque x1 = x1 + real(ty1 - @p7fn(tx1))*@px y1 = y1 + (@p7pA - tx1)*@py x2 = x2 + real(ty2 - @p7fn(tx2))*@px y2 = y2 + (@p7pA - tx2)*@py x3 = x3 + real(ty3 - @p7fn(tx3))*@px y3 = y3 + (@p7pA - tx3)*@py elseif (@perturb == 8) ; Chip x1 = x1 + (ty1 - sx1*cos(sqr(log(abs(@p8pB*tx1-@p8pC))))*atan(sqr(log(abs(@p8pC*tx1-@p8pB)))))*@px y1 = y1 + (@p8pA - tx1)*@py x2 = x2 + (ty2 - sx2*cos(sqr(log(abs(@p8pB*tx2-@p8pC))))*atan(sqr(log(abs(@p8pC*tx2-@p8pB)))))*@px y2 = y2 + (@p8pA - tx2)*@py x3 = x3 + (ty3 - sx3*cos(sqr(log(abs(@p8pB*tx3-@p8pC))))*atan(sqr(log(abs(@p8pC*tx3-@p8pB)))))*@px y3 = y3 + (@p8pA - tx3)*@py else endif z1 = @finalfn(x1 + flip(y1)) z2 = @finalfn(x2 + flip(y2)) z3 = @finalfn(x3 + flip(y3)) if (@slope == true) ;;;; process slope IF (@zmode == 5) if (@accident == true) iterexp1 = iterexp1 + exp(-cabs(z)) else iterexp1 = iterexp1 + exp(-cabs(z1)) endif iterexp2 = iterexp2 + exp(-cabs(z2)) iterexp3 = iterexp3 + exp(-cabs(z3)) ENDIF done = done + 1; increment iteration counter IF (@zmode == 0) ; smallest |z| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 1) ; smallest |real(z)| d1 = |z1|; get current distances from origin d2 = |z2| d3 = |z3| IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 2) ; smallest |imag(z)| d1 = abs(imag(z1)); get current distances from r axis d2 = abs(imag(z2)) d3 = abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 3) ; smallest |real(z)|+|imag(z)| d1 = abs(real(z1))+abs(imag(z1)); get current distances from i axis d2 = abs(real(z2))+abs(imag(z2)) d3 = abs(real(z3))+abs(imag(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ELSEIF (@zmode == 4) ; smallest |atan(z)| d1 = abs(atan2(z1)); get current angles d2 = abs(atan2(z2)) d3 = abs(atan2(z3)) IF (d1 < s1); update smallest distances s1 = d1 ENDIF IF (d2 < s2) s2 = d2 ENDIF IF (d3 < s3) s3 = d3 ENDIF ENDIF IF (maxIter < iter || \ @everyiter ||\ done == maxIter + 2); done, or every iteration, or last ; determine continuous iteration (height) for each point IF (@zmode >= 0 && @zmode <= 4) ; height based on smallest |z| e1 = s1 * @zscale e2 = s2 * @zscale e3 = s3 * @zscale ELSEIF (@zmode == 5) e1 = iterexp1 * @zscale e2 = iterexp2 * @zscale e3 = iterexp3 * @zscale ENDIF ; apply transfer function ; a function is not used because these are floats ; and not all functions apply to floats IF (@xfer == 1); log e1 = log(e1) e2 = log(e2) e3 = log(e3) ELSEIF (@xfer == 2); sqrt e1 = sqrt(e1) e2 = sqrt(e2) e3 = sqrt(e3) ELSEIF (@xfer == 3); cuberoot e1 = (e1)^(1/3) e2 = (e2)^(1/3) e3 = (e3)^(1/3) ELSEIF (@xfer == 4); exp e1 = exp(e1) e2 = exp(e2) e3 = exp(e3) ELSEIF (@xfer == 5); sqr e1 = sqr(e1) e2 = sqr(e2) e3 = sqr(e3) ELSEIF (@xfer == 6); cube e1 = (e1)^3 e2 = (e2)^3 e3 = (e3)^3 ELSEIF (@xfer == 7); sin e1 = sin(e1) e2 = sin(e2) e3 = sin(e3) ELSEIF (@xfer == 8); cos e1 = cos(e1) e2 = cos(e2) e3 = cos(e3) ELSEIF (@xfer == 9); tan e1 = tan(e1) e2 = tan(e2) e3 = tan(e3) ENDIF ; apply post-scale e1 = e1 * @zscale2 e2 = e2 * @zscale2 e3 = e3 * @zscale2 vx = e2-e1 vy = e3-e1 vz = -@offset ; normalize vector vd = 1/sqrt(sqr(vx)+sqr(vy)+sqr(vz)) vx = vx*vd vy = vy*vd vz = vz*vd z = vx + flip(vy); fudge z from vector ELSE; didn't compute z this time z = z1; use primary iteration value to keep periodicity working ENDIF else z = z1 endif IF (iter > maxIter) done = 0 ENDIF bailout: (done > 0) default: title = "Slope Dust2Dust" method = multipass periodicity = 0 magn = 1 maxiter = 10 float param version default = 1.3 visible = false endparam bool param slope caption = "Apply slope?" default = true hint = "Use Lighting in dmj.ucl or one of the 3D Texturizer \ formulas in reb.ucl with the slope applied. \ Unset for a non-slope version registered with the\ slope version. Generally, unset 'Apply Slope? \ for other formulas." endparam bool param outside caption = "Outside?" default = false endparam bool param fBm ;; possible future??? caption = "fBm distortion?" default = false visible = false endparam bool param progressive ;; possible future??? caption = "Progressive Params?" default = false visible = false endparam param method caption = "Attractor Method" enum = "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" \ "Ganymede" \ "Ganymede Alpha" \ "Ganymede Beta" \ "Chip" \ "DeJong" endparam float param m0pA caption = "A" default = 0.4 visible = @method==0 ; Hopalong endparam float param m0pB caption = "B" default = 1.0 visible = @method==0 ; Hopalong endparam float param m0pC caption = "C" default = 0.0 visible = @method==0 ; Hopalong endparam float param m1pH caption = "H" default = 0.05 visible = @method==1 ; Popcorn endparam float param m1pC caption = "c" default = 3.0 visible = @method==1 ; Popcorn endparam func m1fn1 caption = "Popcorn Fn 1" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn2 caption = "Popcorn Fn 2" default = tan() visible = @method==1 ; Popcorn endfunc func m1fn3 caption = "Popcorn Fn 3" default = sin() visible = @method==1 ; Popcorn endfunc func m1fn4 caption = "Popcorn Fn 4" default = tan() visible = @method==1 ; Popcorn endfunc float param m3pA caption = "A" default = -0.2 visible = @method==3 ; Three Ply endparam float param m3pB caption = "B" default = -0.2 visible = @method==3 ; Three Ply endparam float param m3pC caption = "C" default = .42 visible = @method==3 ; Three Ply endparam float param m4pA caption = "A" default = -0.1 visible = @method==4 ; Quadrup Two endparam float param m4pB caption = "B" default = 1.6 visible = @method==4 ; Quadrup Two endparam float param m4pC caption = "C" default = -0.1 visible = @method==4 ; Quadrup Two endparam float param m5pA caption = "A" default = 3.14 visible = @method==5 ; Martin Two endparam func m5fnA caption = "Martin Function" default = sin() visible = @method==5 ; Martinesque endfunc float param m6pA ; Ganymede Standard caption = "a" default = 1.0 visible = @method==6 endparam float param m6pB ; Ganymede Standard caption = "b" default = -1.81 visible = @method==6 endparam float param m6pC ; Ganymede Standard caption = "c" default = 1.339 visible = @method==6 endparam float param m6pD ; Ganymede Standard caption = "d" default = -2.178 visible = @method==6 endparam func m6f1 ; Ganymede Standard caption = "Function 1" default = sin() visible = @method==6 endfunc func m6f2 ; Ganymede Standard caption = "Function 2" default = sin() visible = @method==6 endfunc func m6f3 ; Ganymede Standard caption = "Function 3" default = sin() visible = @method==6 endfunc func m6f4 ; Ganymede Standard caption = "Function 4" default = sin() visible = @method==6 endfunc float param m7pA ; Ganymede Alpha caption = "a" default = 1.0 visible = @method==7 endparam float param m7pB ; Ganymede Alpha caption = "b" default = -1.81 visible = @method==7 endparam float param m7pC ; Ganymede Alpha caption = "c" default = 1.339 visible = @method==7 endparam func m7f1 ; Ganymede Alpha caption = "Function 1" default = sin() visible = @method==7 endfunc func m7f2 ; Ganymede Alpha caption = "Function 2" default = sin() visible = @method==7 endfunc func m7f3 ; Ganymede Alpha caption = "Function 3" default = sin() visible = @method==7 endfunc func m7f4 ; Ganymede Alpha caption = "Function 4" default = sin() visible = @method==7 endfunc func m7f5 ; Ganymede Alpha caption = "Function 5" default = sin() visible = @method==7 endfunc func m7f6 ; Ganymede Alpha caption = "Function 6" default = sin() visible = @method==7 endfunc float param m8pA ; Ganymede Beta caption = "a" default = 1.0 visible = @method==8 endparam float param m8pB ; Ganymede Beta caption = "b" default = 2.4 visible = @method==8 endparam func m8f1 ; Ganymede Beta caption = "Function 1" default = sin() visible = @method==8 endfunc func m8f2 ; Ganymede Beta caption = "Function 2" default = sin() visible = @method==8 endfunc func m8f3 ; Ganymede Beta caption = "Function 3" default = sin() visible = @method==8 endfunc func m8f4 ; Ganymede Beta caption = "Function 4" default = sin() visible = @method==8 endfunc float param m9pA ; Chip caption = "a" default = -1.0 visible = @method==9 endparam float param m9pB ; Chip caption = "b" default = -2.0 visible = @method==9 endparam float param m9pC ; Chip caption = "c" default = 0.2 visible = @method==9 endparam float param m10pA ; DeJong caption = "a" default = 2.01 visible = @method==10 endparam float param m10pB ; DeJong caption = "b" default = -2.53 visible = @method==10 endparam float param m10pC ; DeJong caption = "c" default = 1.61 visible = @method==10 endparam float param m10pD ; DeJong caption = "d" default = -.33 visible = @method==10 endparam func m10f1 caption = "Function 1" default = sin() visible = @method==10 endfunc func m10f2 caption = "Function 2" default = cos() visible = @method==10 endfunc func m10f3 caption = "Function 3" default = sin() visible = @method==10 endfunc func m10f4 caption = "Function 4" default = cos() visible = @method==10 endfunc heading caption = "End Attractor Params" endheading func initfn caption = "Initial Function" default = ident() endfunc func finalfn caption = "Final Function" default = ident() endfunc func loopfnx caption = "Loop X function" default = ident() endfunc func loopfny caption = "Loop Y function" default = ident() endfunc heading caption = "Perturbation" endheading param perturb caption = "Perturbation Method" enum = "None" \ "Functions" \ "Hopalong" \ "Popcorn" \ "Gingerbread" \ "Three Ply" \ "Quadrup Two" \ "Martinesque" \ "Chip" default = 0 endparam float param px caption = "X perturbation" default = 0.0 visible = (@perturb != 0) endparam func fnx caption = "X perturb fn" default = ident() visible = (@perturb == 1) endfunc float param py caption = "Y perturbation" default = 0.0 visible = (@perturb != 0) endparam func fny caption = "Y perturb fn" default = ident() visible = (@perturb == 1) endfunc float param p2pA caption = "A" default = 0.4 visible = @perturb==2 ; Hopalong endparam float param p2pB caption = "B" default = 1.0 visible = @perturb==2 ; Hopalong endparam float param p2pC caption = "C" default = 0.0 visible = @perturb==2 ; Hopalong endparam float param p3pH caption = "H" default = 0.05 visible = @perturb==3 ; Popcorn endparam float param p3pC caption = "C" default = 3.00 visible = @perturb==3 ; Popcorn endparam func p3fn1 caption = "Popcorn Fn 1" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn2 caption = "Popcorn Fn 2" default = tan() visible = @perturb==3 ; Popcorn endfunc func p3fn3 caption = "Popcorn Fn 3" default = sin() visible = @perturb==3 ; Popcorn endfunc func p3fn4 caption = "Popcorn Fn 4" default = tan() visible = @perturb==3 ; Popcorn endfunc float param p5pA caption = "A" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param p5pB caption = "B" default = -0.2 visible = @perturb==5 ; Three Ply endparam float param p5pC caption = "C" default = -0.42 visible = @perturb==5 ; Three Ply endparam float param p6pA caption = "A" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p6pB caption = "B" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p6pC caption = "C" default = 1.0 visible = @perturb==6 ; Quadrup Two endparam float param p7pA caption = "A" default = 3.14 visible = @perturb==7 ; Quadrup Two endparam func p7fn ; Martin caption = "Martin Function" default = sin() visible = @perturb==7 endfunc float param p8pA ; Chip caption = "a" default = -1.5 visible = @perturb==8 endparam float param p8pB ; Chip caption = "b" default = -1.9 visible = @perturb==8 endparam float param p8pC ; Chip caption = "c" default = 1.0 visible = @perturb==8 endparam heading caption = "Slope Parameters" visible = @slope==true endheading float param offset caption = "Orbit Separation" default = 0.01 hint = "Defines how far apart the simultaneous orbits are. Smaller \ distances will produce more accurate results." visible = @slope==true endparam param zmode caption = "Height Value" default = 5 enum = "smallest |z|" "smallest |real(z)|" \ "smallest |imag(z)|" "smallest summ(z)" "smallest |atan(z)|" \ "smoothed iteration" hint = "Specifies what will be used to construct a height value." visible = @slope==true endparam param xfer caption = "Height Transfer" default = 0 enum = "linear" "log" "sqrt" "cuberoot" "exp" "sqr" "cube" "sin" "cos" "tan" hint = "This function will be applied to the height value \ before a slope is calculated." visible = @slope==true endparam param zscale caption = "Height Pre-Scale" default = 100.0 hint = "Specifies the ratio between height and distance. Higher \ values will exaggerate differences between high and low. \ In general, you will want to use smaller numbers here." visible = @slope==true endparam param zscale2 caption = "Height Post-Scale" default = 100.0 hint = "Specifies the ratio between height and distance; like \ Height Pre-Scale, except that this value is applied after \ the transfer function." visible = @slope==true endparam param everyiter caption = "Every Iteration" default = true hint = "If set, the surface normal will be computed at every \ iteration. If you are using a coloring algorithm which \ processes every iteration, you will need this." visible = @slope==true endparam bool param accident caption = "Accident" default = false visible = @slope==true endparam }