class OM_MunsterJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return exp(@mp1*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz)+@c endfunc default: title="Munster J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1.25,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MunsterM(common.ulb:DivergentFormula) { complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) return @mp1*pz^2*(pz-@pf(fPixel))/(1-@pf(fPixel)*pz)+@mp2 endfunc default: title="Munster M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=(-2.75,0) endparam param @mp2 caption="Munster Parameter 2" default=(0.5,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_WhittakerErratum1(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) return @fn2(pz-0.5*@p1*(pz^@p3-@p4)*(2-@p2*(pz^@p3-@p4))) endfunc default: title="Whittaker Erratum 1" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Whittaker Parameter 1" default=(-0.11,0) endparam param p2 caption="Whittaker Parameter 1" default=(1,0) endparam param p3 caption="Exponent" default=(4,0) endparam param p4 caption="Constant" default=(1,0) endparam func sf caption="Start function" default=ident() endfunc func fn2 caption="Whittaker Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_WhittakerErratum2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return fn2(pz-0.5*@p1*((pz-@p3)*(pz-@p4))*(2-@p2*((pz-@p3)*(pz-@p4)))) endfunc default: title="Whittaker Erratum 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="WE Parameter 1" default=(1,0) endparam param p2 caption="WE Parameter 2" default=(1.6,0) endparam param p3 caption="WE Parameter 3" default=(1,0) endparam param p4 caption="WE Parameter 4" default=(1,0) endparam func sf caption="Start function" default=ident() endfunc func fn2 caption="WE Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_IFB3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) if real(fn3(pz))<@p4 pz=pz*conj(@p1)+@p2 elseif @p5<=real(fn3(pz)) pz=pz*flip(@p1)+@p3 endif return pz endfunc default: title="IFB 3" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(0.9,-0.9) endparam param p2 caption="IFB Parameter a2" default=(1,0.5) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB11(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(4*pz+(1.5,-2.5)) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) float b=imag(fn3(pz)) if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sin(@p1)+@p2 endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*acosh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*tanh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*cos(@p1)+@p11 endif return pz endfunc default: title="IFB 11" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(1,-0.75) endparam param p2 caption="IFB Parameter a2" default=(-0.37,2.68) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p9 caption="IFB Parameter a4" default=(1,0) endparam param p11 caption="IFB Parameter a5" default=(1,0) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB17(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) if a<@p4 pz=pz*@p1+@p2 endif if @p5<=a pz=pz*@p1+@p3 endif if a<@p8 pz=pz*flip(@p1)+@p9 endif if @p10<=a pz=pz*acos(@p1)+@p11 endif return pz endfunc default: title="IFB 17" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(1.3,0) endparam param p2 caption="IFB Parameter a2" default=(1,0.5) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p9 caption="IFB Parameter a4" default=(1,0) endparam param p11 caption="IFB Parameter a5" default=(1,0) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(2*pz+(1,1)) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) if a<@p4 pz=pz*flip(@p1)+@p2 endif if @p5<=a pz=pz*conj(@p1)+@p3 endif if a<@p8 pz=pz*exp(@p1)+@p9 endif if @p10<=a pz=pz*recip(@p1)+@p11 endif return pz endfunc default: title="IFB 7" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(0.16,-1.41) endparam param p2 caption="IFB Parameter a2" default=(-1.9,0.96) endparam param p3 caption="IFB Parameter a3" default=(-1.96,0.31) endparam param p9 caption="IFB Parameter a4" default=(1.58,1.37) endparam param p11 caption="IFB Parameter a5" default=(2.41,2.83) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Metabrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(0.375*pz) endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @pow==0 return ((((pz^2+@c)*(pz^2+@c)+(@c^2+pz))*((pz^2+@c)*(pz^2+@c)+(@c^2+pz))+((@c^2+pz)*(@c^2+pz)+(pz^2+@c)))\ *(((pz^2+@c)*(pz^2+@c)+(@c^2+pz))*((pz^2+@c)*(pz^2+@c)+(@c^2+pz))+((@c^2+pz)*(@c^2+pz)+(pz^2+@c)))\ +(((@c^2+pz)*(@c^2+pz)+(pz^2+@c))*((@c^2+pz)*(@c^2+pz)+(pz^2+@c))+((pz^2+@c)*(pz^2+@c)+(@c^2+pz)))) elseif @pow==1 return ((((pz^3+@c)*(pz^3+@c)+(@c^3+pz))*((pz^3+@c)*(pz^3+@c)+(@c^3+pz))+((@c^3+pz)*(@c^3+pz)+(pz^3+@c)))\ *(((pz^3+@c)*(pz^3+@c)+(@c^3+pz))*((pz^3+@c)*(pz^3+@c)+(@c^3+pz))+((@c^3+pz)*(@c^3+pz)+(pz^3+@c)))\ +(((@c^3+pz)*(@c^3+pz)+(pz^3+@c))*((@c^3+pz)*(@c^3+pz)+(pz^3+@c))+((pz^3+@c)*(pz^3+@c)+(@c^3+pz)))) else return ((((pz^4+@c)*(pz^4+@c)+(@c^4+pz))*((pz^4+@c)*(pz^4+@c)+(@c^4+pz))+((@c^4+pz)*(@c^4+pz)+(pz^4+@c)))\ *(((pz^4+@c)*(pz^4+@c)+(@c^4+pz))*((pz^4+@c)*(pz^4+@c)+(@c^4+pz))+((@c^4+pz)*(@c^4+pz)+(pz^4+@c)))\ +(((@c^4+pz)*(@c^4+pz)+(pz^4+@c))*((@c^4+pz)*(@c^4+pz)+(pz^4+@c))+((pz^4+@c)*(pz^4+@c)+(@c^4+pz)))) endif endfunc default: title="Metabrot" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param c caption="Seed" default=(-0.1,0) endparam param pow caption="Exponent" enum="2""3""4" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Schröder(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@sp1*(pz^@pow-@sp2)*(@pow*pz^(@pow-1))/((@pow*pz^(@pow-1))^2-(pz^@pow-@sp2)*((@pow-1)*@pow*pz^(@pow-2)))+@c endfunc default: title="Schröder" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Whittaker1(common.ulb:ConvergentFormula) { ;Whittaker's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@wp1*(((pz^@pow-@wp2)/(@pow*pz^(@pow-1)))/2)*(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1))))+@c endfunc default: title="Whittaker 1" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Whittaker Parameter 1" default=(1,0) endparam param wp2 caption="Whittaker Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Whittaker2(common.ulb:ConvergentFormula) { ;2nd Whittaker's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@wp1*(((pz^@pow-@wp2)/(@pow*pz^(@pow-1)))/4)*(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))\ /sqr(@pow*pz^(@pow-1)))+((4+2*((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1))))\ /(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1)))*\ (2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1)))))))+@c endfunc default: title="Whittaker 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Whittaker Parameter 1" default=(1,0) endparam param wp2 caption="Whittaker Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Munster6J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 if @v==0 return exp(1i*@mp1)*pz^2*(@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2)+@c else return exp(2/(1i*(@mp1+0.318)))*pz^2*((@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2))^0.5+@c endif endfunc default: title="Munster 6 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster6M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 if @v==0 return exp(1i*@mp1)*pz^2*(@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2)+@pf(fPixel) else return exp(2/(1i*(@mp1+0.318)))*pz^2*((@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2))^0.5+@pf(fPixel) endif endfunc default: title="Munster 6 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster7J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz-0.9) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^3*((1-conj(@mp2)*pz)/(pz-@mp2))*((1-conj(@mp3)*pz)/(pz-@mp3))+@c endfunc default: title="Munster 7 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(-0.67,0) endparam param mp3 caption="Munster Parameter 3" default=(-0.5,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster7M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^3*((1-conj(@mp2)*pz)/(pz-@mp2))*((1-conj(@mp3)*pz)/(pz-@mp3))+@pf(fPixel) endfunc default: title="Munster 7 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(0.75,0) endparam param mp3 caption="Munster Parameter 3" default=(-0.5,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Schröder2(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for various expressions of z public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 f=(pz^2+pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==1 f=tan(pz)^@pow-@sp2 f1=@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==2 f=pz^@pow+tan(pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*pz^(@pow-2)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==3 f=sin(pz)^@pow-@sp2 f1=@pow*cos(pz)*sin(pz)^(@pow-1) f2=@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1) elseif @v==4 f=(pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1)\ +@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==5 f=pz^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)\ +2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==7 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==8 f=(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)\ +@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==9 f=pz^@pow+(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*\ (pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==10 f=(pz^3-pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)\ *(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==11 f=pz^@pow+(pz^3-pz^2+pz)^@pow+tan(pz)^@pow+sin(pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))\ *tan(pz)^@pow+@pow*cos(pz)*sin(pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)\ *(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))\ ^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1)+@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==12 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==13 f=-pz^@pow+pz^(@pow-1)-pz^(@pow-2)+pz^(@pow-3)-@sp2 f1=-@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3)+(@pow-3)*pz^(@pow-4) f2=-(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-4)*(@pow-3)*pz^(@pow-5) elseif @v==14 f=(pz+1/pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2) else f=(pz+1/pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) endif return pz-@sp1*f*f1/(f1^2-f*f2)+@c endfunc default: title="Schröder 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="(z^2+z)^p=c""tan(z)^p=c""z^p+tan(z)^p=c""sin(z)^p=c""(z^2+z)^p+tan(z)^p=c""z^p+(z^2+z)^p=c"\ "z^p+z^(p-1)+z^(p-2)=c""z^p+z^(p-1)+z^(p-2)+(z^2+z)^p=c""(z^3-z^2+z)^p=c""z^p+(z^3-z^2+z)^p=c"\ "(z^3-z^2+z)^p+tan(z)^p=c""z^p+(z^3-z^2+z)^p+tan(z)^p+sin(z)^p+(z^2+z)^p=c""z^p-z^(p-1)-z^(p-2)=c"\ "-z^p+z^(p-1)-z^(p-2)+z^(p-3)=c""(z+1/z)^p=c""(z+1/z)^p+(z^2+z)^p=c" endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Schrödernova2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 f=(pz^2+pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==1 f=tan(pz)^@pow-@sp2 f1=@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==2 f=pz^@pow+tan(pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*pz^(@pow-2)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==3 f=sin(pz)^@pow-@sp2 f1=@pow*cos(pz)*sin(pz)^(@pow-1) f2=@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1) elseif @v==4 f=(pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1)\ +@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==5 f=pz^@pow+(pz^2+pz)^@pow-(@sp2-1.85) f1=@pow*pz^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)\ +2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==7 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==8 f=(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)\ +@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==9 f=pz^@pow+(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*\ (pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==10 f=(pz^3-pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)\ *(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==11 f=pz^@pow+(pz^3-pz^2+pz)^@pow+tan(pz)^@pow+sin(pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))\ *tan(pz)^@pow+@pow*cos(pz)*sin(pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)\ *(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))\ ^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1)+@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==12 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==13 f=-pz^@pow+pz^(@pow-1)-pz^(@pow-2)+pz^(@pow-3)-(@sp2-0.35) f1=-@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3)+(@pow-3)*pz^(@pow-4) f2=-(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-4)*(@pow-3)*pz^(@pow-5) elseif @v==14 f=(pz+1/pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2) else f=(pz+1/pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) endif return pz-@sp1*f*f1/(f1^2-f*f2)+@pf(fPixel) endfunc default: title="Schrödernova 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="(z^2+z)^p=c""tan(z)^p=c""z^p+tan(z)^p=c""sin(z)^p=c""(z^2+z)^p+tan(z)^p=c""z^p+(z^2+z)^p=c"\ "z^p+z^(p-1)+z^(p-2)=c""z^p+z^(p-1)+z^(p-2)+(z^2+z)^p=c""(z^3-z^2+z)^p=c""z^p+(z^3-z^2+z)^p=c"\ "(z^3-z^2+z)^p+tan(z)^p=c""z^p+(z^3-z^2+z)^p+tan(z)^p+sin(z)^p+(z^2+z)^p=c""z^p-z^(p-1)-z^(p-2)=c"\ "-z^p+z^(p-1)-z^(p-2)+z^(p-3)=c""(z+1/z)^p=c""(z+1/z)^p+(z^2+z)^p=c" endparam param sp1 caption="Schrödernova Parameter 1" default=(0.7,0) endparam param sp2 caption="Schrödernova Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Munster15J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz-0.35i) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(-@mp2-1i*pz-1i*pz^3)/(@mp2+pz^2+1i*pz^3)+@c endfunc default: title="Munster 15 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=3.185 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster15M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(-@mp2-1i*pz-1i*pz^3)/(@mp2+pz^2+1i*pz^3)+@pf(fPixel) endfunc default: title="Munster 15 M" int param version caption="Version" default=100 visible=@version<100 endparam param mp1 caption="Munster Parameter 1" default=1.57 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB61(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return fn4(2*pz) endfunc complex func Iterate(complex pz) pz=@p3*conj(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="2" if real(fn3(log(pz)))>@p6+0.74737 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="3" if real(fn3(sinh(pz)))>@p6-0.33 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="4" if real(fn3(pz))+imag(fn3(pz))>@p6-0.763 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="5" if real(fn3(conj(pz)))+imag(fn3(conj(pz)))>@p6-2.09 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="6" if real(fn3(cabs(pz)))+imag(fn3(cabs(pz)))>@p6+5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="7" if real(fn3(abs(pz)))+imag(fn3(abs(pz)))>@p6+5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="8" if real(fn3(sqrt(pz)))+imag(fn3(sqrt(pz)))>@p6+0.24 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="9" if real(fn3(cotanh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.24 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="10" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6-0.95 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="11" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.91 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="12" if real(fn3(acosh(pz)))+imag(fn3(acosh(pz)))>@p6+3.446 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="13" if real(fn3(asinh(pz)))+imag(fn3(asinh(pz)))>@p6-1 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="14" if real(fn3(sin(pz)))+imag(fn3(sin(pz)))>@p6-0.27 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="15" if real(fn3(trunc(pz)))+imag(fn3(trunc(pz)))>@p6-0.5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="16" if real(fn3(pz))+imag(fn3(recip(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="17" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="18" if real(fn3(pz))+imag(fn3(log(pz)))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="19" if real(fn3(log(pz)))+imag(fn3(flip(pz)))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="20" if real(fn3(log(pz)))+imag(fn3(atanh(pz)))>@p6+1 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="21" if real(fn3(log(pz)))+imag(fn3(atan(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="22" if real(fn3(log(pz)))+imag(fn3(tan(pz)))>@p6+1.23 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif endif return pz endfunc default: title="IFB 61" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param p5 caption="IFB Parameter 1" default=(0.982098,0.798412) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(0.87501,-0.559167) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MandelbrotExpPixtet(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sf1(sqr(@sf2(pz))) endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*flip(conj(pz))+@pzp2 pz=pz^2+@pf2(@pf1(exp(fPixel))^@pf1(exp(fPixel)))+@mp pz=pz+@arp/@arf(pz) return pz endfunc default: title="Mandelbrot Exp Pixtet" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp caption="Mandelbrot Parameter" default=(0,0) endparam func sf1 caption="Start Function 1" default=ident() endfunc func sf2 caption="Start Function 2" default=ident() endfunc func pf1 caption="Pixel Function 1" default=ident() endfunc func pf2 caption="Pixel Function 2" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam func arf caption="Add Recip Function" default=ident() visible=@arp!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IFB66(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return fn4(2*pz) endfunc complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6+2.824 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="2" if real(fn3(abs(pz)))>@p6+1 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="3" if real(fn3(exp(pz)))>@p6+4.197 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="4" if real(fn3(sqrt(pz)))>@p6 +1.55 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="5" if real(fn3(cotanh(pz)))>@p6-0.02 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="6" if real(fn3(atan(pz)))>@p6+0.955 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="7" if real(fn3(tanh(pz)))>@p6+0.925 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="8" if real(fn3(asinh(pz)))>@p6+1.672 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="9" if real(fn3(asin(pz)))>@p6+1.153 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="10" if real(fn3(sinh(pz)))>@p6+1.85 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="11" if real(fn3(sin(pz)))>@p6+0.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="12" if real(fn3(recip(pz)))>@p6+0.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="13" if real(fn3(pz))+imag(fn3(trunc(pz)))>@p6+0.126 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="14" if real(fn3(pz))+imag(fn3(recip(pz)))>@p6+0.367 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="15" if real(fn3(pz))+imag(fn3(conj(pz)))>@p6+2.402 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="16" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+3.405 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="17" if real(fn3(pz))+imag(fn3(log(pz)))>@p6+2.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="18" if real(fn3(pz))+imag(fn3(sqrt(pz)))>@p6+1 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="19" if real(fn3(pz))+imag(fn3(cotanh(pz)))>@p6-0.827 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="20" if real(fn3(pz))+imag(fn3(cotan(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="21" if real(fn3(pz))+imag(fn3(atanh(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="22" if real(fn3(pz))+imag(fn3(tan(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="23" if real(fn3(pz))+imag(fn3(acosh(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="24" if real(fn3(pz))+imag(fn3(acos(pz)))>@p6+1.19 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="25" if real(fn3(pz))+imag(fn3(cos(pz)))>@p6+0.3 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="26" if real(fn3(pz))+imag(fn3(asinh(pz)))>@p6+2.729 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="27" if real(fn3(exp(pz)))+imag(fn3(exp(pz)))>@p6+5.595 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="28" if real(fn3(exp(pz)))+imag(fn3(log(pz)))>@p6+3 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="29" if real(fn3(exp(pz)))+imag(fn3(cotan(pz)))>@p6+0.9 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="30" if real(fn3(exp(pz)))+imag(fn3(atan(pz)))>@p6+3.537 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="31" if real(fn3(exp(pz)))+imag(fn3(cos(pz)))>@p6+4 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="32" if real(fn3(exp(pz)))+imag(fn3(trunc(pz)))>@p6+0.595 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="33" if real(fn3(log(pz)))+imag(fn3(flip(pz)))>@p6 -0.118 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="34" if real(fn3(sqrt(pz)))+imag(fn3(flip(pz)))>@p6+1.283 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="35" if real(fn3(sqrt(pz)))+imag(fn3(cotanh(pz)))>@p6+1.325 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="36" if real(fn3(sqrt(pz)))+imag(fn3(tanh(pz)))>@p6+1.283 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="37" if real(fn3(sqrt(pz)))+imag(fn3(recip(pz)))>@p6+1.657 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="38" if real(fn3(sqr(pz)))+imag(fn3(flip(pz)))>@p6+0.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="39" if real(fn3(cotanh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="40" if real(fn3(cotanh(pz)))+imag(fn3(atan(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="41" if real(fn3(cotanh(pz)))+imag(fn3(cos(pz)))>@p6+0.733 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="42" if real(fn3(cotanh(pz)))+imag(fn3(recip(pz)))>@p6+0.546 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="43" if real(fn3(cotan(pz)))+imag(fn3(flip(pz)))>@p6+1.376 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="44" if real(fn3(atanh(pz)))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="45" if real(fn3(atanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.244 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="46" if real(fn3(atanh(pz)))+imag(fn3(trunc(pz)))>@p6+0.182 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="47" if real(fn3(atanh(pz)))+imag(fn3(recip(pz)))>@p6-0.13 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="48" if real(fn3(atan(pz)))+imag(fn3(flip(pz)))>@p6+1.645 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="49" if real(fn3(atan(pz)))+imag(fn3(conj(pz)))>@p6+0.16 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="50" if real(fn3(atan(pz)))+imag(fn3(cabs(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="51" if real(fn3(atan(pz)))+imag(fn3(abs(pz)))>@p6+1.167 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="52" if real(fn3(atan(pz)))+imag(fn3(sqrt(pz)))>@p6+0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="53" if real(fn3(atan(pz)))+imag(fn3(cotanh(pz)))>@p6+0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="54" if real(fn3(atan(pz)))+imag(fn3(cotan(pz)))>@p6+0.171 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="55" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6+0.171 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="56" if real(fn3(atan(pz)))+imag(fn3(tanh(pz)))>@p6+0.358 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="57" if real(fn3(atan(pz)))+imag(fn3(cos(pz)))>@p6+0.176 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="58" if real(fn3(atan(pz)))+imag(fn3(asinh(pz)))>@p6+0.176 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="59" if real(fn3(atan(pz)))+imag(fn3(sin(pz)))>@p6+0.726 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="60" if real(fn3(atan(pz)))+imag(fn3(trunc(pz)))>@p6-0.021 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="61" if real(fn3(atan(pz)))+imag(fn3(recip(pz)))>@p6+0.747 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="62" if real(fn3(tanh(pz)))+imag(fn3(conj(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="63" if real(fn3(tanh(pz)))+imag(fn3(abs(pz)))>@p6+0.872 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="64" if real(fn3(tanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.675 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="65" if real(fn3(tanh(pz)))+imag(fn3(atan(pz)))>@p6+0.29 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="66" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6+0.992 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="67" if real(fn3(tanh(pz)))+imag(fn3(cos(pz)))>@p6+0.348 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="68" if real(fn3(tanh(pz)))+imag(fn3(trunc(pz)))>@p6-0.233 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="69" if real(fn3(tanh(pz)))+imag(fn3(recip(pz)))>@p6-0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="70" if real(fn3(tan(pz)))+imag(fn3(flip(pz)))>@p6+1.179 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="71" if real(fn3(tan(pz)))+imag(fn3(floor(pz)))>@p6+0.141 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="72" if real(fn3(acosh(pz)))+imag(fn3(conj(pz)))>@p6+0.245 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="73" if real(fn3(acosh(pz)))+imag(fn3(abs(pz)))>@p6+1.2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="74" if real(fn3(acosh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="75" if real(fn3(acosh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="76" if real(fn3(acosh(pz)))+imag(fn3(cotan(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="77" if real(fn3(acosh(pz)))+imag(fn3(atanh(pz)))>@p6+0.224 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="78" if real(fn3(acosh(pz)))+imag(fn3(atan(pz)))>@p6+0.681 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="79" if real(fn3(acosh(pz)))+imag(fn3(tanh(pz)))>@p6+0.224 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="80" if real(fn3(acosh(pz)))+imag(fn3(tan(pz)))>@p6+0.868 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="81" if real(fn3(acosh(pz)))+imag(fn3(acosh(pz)))>@p6+0.868 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="82" if real(fn3(acosh(pz)))+imag(fn3(cos(pz)))>@p6+0.432 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="83" if real(fn3(acosh(pz)))+imag(fn3(asinh(pz)))>@p6+0.432 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="84" if real(fn3(acos(pz)))+imag(fn3(flip(pz)))>@p6+2.01 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="85" if real(fn3(cosh(pz)))+imag(fn3(flip(pz)))>@p6+2.01 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="86" if real(fn3(asinh(pz)))+imag(fn3(conj(pz)))>@p6+0.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="87" if real(fn3(asinh(pz)))+imag(fn3(cabs(pz)))>@p6+1.491 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="88" if real(fn3(asinh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.972 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="89" if real(fn3(asinh(pz)))+imag(fn3(atanh(pz)))>@p6+0.038 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="90" if real(fn3(asinh(pz)))+imag(fn3(acos(pz)))>@p6-0.004 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="91" if real(fn3(asinh(pz)))+imag(fn3(cos(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="92" if real(fn3(asin(pz)))+imag(fn3(cabs(pz)))>@p6+1.18 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="93" if real(fn3(asin(pz)))+imag(fn3(tanh(pz)))>@p6-0.689 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="94" if real(fn3(asin(pz)))+imag(fn3(cos(pz)))>@p6+0.494 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="95" if real(fn3(asin(pz)))+imag(fn3(recip(pz)))>@p6+0.494 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="96" if real(fn3(sinh(pz)))+imag(fn3(ident(pz)))>@p6+1.407 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="97" if real(fn3(sinh(pz)))+imag(fn3(flip(pz)))>@p6+4.106 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="98" if real(fn3(sinh(pz)))+imag(fn3(abs(pz)))>@p6+2.445 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="99" if real(fn3(sinh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.618 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="100" if real(fn3(sinh(pz)))+imag(fn3(atanh(pz)))>@p6+0.66 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="101" if real(fn3(sinh(pz)))+imag(fn3(tanh(pz)))>@p6+0.369 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="102" if real(fn3(sinh(pz)))+imag(fn3(tan(pz)))>@p6+1.656 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="103" if real(fn3(sinh(pz)))+imag(fn3(acosh(pz)))>@p6+1.366 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="104" if real(fn3(sinh(pz)))+imag(fn3(asin(pz)))>@p6+0.556 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="105" if real(fn3(sinh(pz)))+imag(fn3(sinh(pz)))>@p6+0.556 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="106" if real(fn3(sinh(pz)))+imag(fn3(trunc(pz)))>@p6+2.113 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="107" if real(fn3(sin(pz)))+imag(fn3(flip(pz)))>@p6+3.151 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="108" if real(fn3(sin(pz)))+imag(fn3(sqrt(pz)))>@p6+0.743 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="109" if real(fn3(sin(pz)))+imag(fn3(cotanh(pz)))>@p6+0.971 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="110" if real(fn3(sin(pz)))+imag(fn3(cotan(pz)))>@p6+0.327 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="111" if real(fn3(sin(pz)))+imag(fn3(atan(pz)))>@p6+0.327 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="112" if real(fn3(sin(pz)))+imag(fn3(tanh(pz)))>@p6+0.659 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="113" if real(fn3(sin(pz)))+imag(fn3(acos(pz)))>@p6+0.119 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="114" if real(fn3(sin(pz)))+imag(fn3(cos(pz)))>@p6+0.306 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="115" if real(fn3(sin(pz)))+imag(fn3(trunc(pz)))>@p6-0.525 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="116" if real(fn3(sin(pz)))+imag(fn3(recip(pz)))>@p6+1.116 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="117" if real(fn3(round(pz)))+imag(fn3(flip(pz)))>@p6-0.421 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="118" if real(fn3(round(pz)))+imag(fn3(conj(pz)))>@p6+0.285 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="119" if real(fn3(round(pz)))+imag(fn3(abs(pz)))>@p6+2.361 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="120" if real(fn3(round(pz)))+imag(fn3(log(pz)))>@p6+3.462 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="121" if real(fn3(round(pz)))+imag(fn3(sqrt(pz)))>@p6+3.109 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="122" if real(fn3(round(pz)))+imag(fn3(cotan(pz)))>@p6+2.444 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="123" if real(fn3(round(pz)))+imag(fn3(atanh(pz)))>@p6+2.444 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="124" if real(fn3(round(pz)))+imag(fn3(atan(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="125" if real(fn3(round(pz)))+imag(fn3(tanh(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="126" if real(fn3(round(pz)))+imag(fn3(tan(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="127" if real(fn3(round(pz)))+imag(fn3(acosh(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="128" if real(fn3(round(pz)))+imag(fn3(acos(pz)))>@p6+1.572 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="129" if real(fn3(round(pz)))+imag(fn3(cos(pz)))>@p6+1.033 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="130" if real(fn3(round(pz)))+imag(fn3(asinh(pz)))>@p6+3.047 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="131" if real(fn3(trunc(pz)))+imag(fn3(recip(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="132" if real(fn3(trunc(pz)))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="133" if real(fn3(trunc(pz)))+imag(fn3(atan(pz)))>@p6+0.332 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="134" if real(fn3(trunc(pz)))+imag(fn3(acos(pz)))>@p6+0.789 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="135" if real(fn3(trunc(pz)))+imag(fn3(cos(pz)))>@p6+0.789 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="136" if real(fn3(floor(pz)))+imag(fn3(log(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="137" if real(fn3(floor(pz)))+imag(fn3(sqrt(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="138" if real(fn3(floor(pz)))+imag(fn3(cotan(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="139" if real(fn3(floor(pz)))+imag(fn3(atanh(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="140" if real(fn3(floor(pz)))+imag(fn3(cos(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="141" if real(fn3(ceil(pz)))+imag(fn3(recip(pz)))>@p6+2.865 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="142" if real(fn3(ceil(pz)))+imag(fn3(conj(pz)))>@p6+2.159 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="143" if real(fn3(ceil(pz)))+imag(fn3(sqrt(pz)))>@p6+3.364 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="144" if real(fn3(ceil(pz)))+imag(fn3(cotan(pz)))>@p6+1.267 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="145" if real(fn3(ceil(pz)))+imag(fn3(atanh(pz)))>@p6+1.267 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="146" if real(fn3(ceil(pz)))+imag(fn3(cos(pz)))>@p6+1.142 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="147" if real(fn3(recip(pz)))+imag(fn3(cotan(pz)))>@p6+1.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif endif return pz endfunc default: title="IFB 66" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96""97""98""99""100"\ "101""102""103""104""105""106""107""108""109""110"\ "111""112""113""114""115""116""117""118""119""120"\ "121""122""123""124""125""126""127""128""129""130"\ "131""132""133""134""135""136""137""138""139""140"\ "141""142""143""144""145""146""147" endparam param p5 caption="IFB Parameter 1" default=(0.45642,-0.84655) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.01,0.55) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster17M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @v==0 return @sp else return @sf(pz) endif endfunc private: complex fPixel complex func Iterate(complex pz) if @v==0 pz=(@pzp1+0.25)*pz+@pzp2+0.3 else pz=@pzp1*pz+@pzp2 endif if @v==0 || @v==1 return exp(1i*@mp1)*pz^2*(pz^3-pz+@pf(fPixel))/(pz^3-pz^2+@pf(fPixel))+@mp2 else return exp(1i*@mp1)*pz^2*(pz^3-pz+@mp2+1)/(pz^3-pz^2+@mp2+1)+@pf(fPixel) endif endfunc default: title="Munster 17 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2""3" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(0,0) endparam param sp caption="Start Parameter" default=(0,0) visible=@v==0 endparam func sf caption="Start Function" default=ident() visible=@v==1 || @v==2 endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster17J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(pz^3-pz+@mp2)/(pz^3-pz^2+@mp2)+@c endfunc default: title="Munster 17 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster12(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@p3*fn2(pz)+@p4 pz=pz+@p5/pz pz=pz+@p6*sqr(pz) if @Va=="None" pz=pz elseif @Va=="1" if |pz|<1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif pz=-conj(pz) elseif @Va=="3" if |pz|<1 pz=pz/|pz| endif pz=0.75*abs(pz) elseif @Va=="4" if |pz|>1 pz=pz/|pz| endif pz=cotanh(pz) elseif @Va=="5" if |pz|>1 pz=pz/|pz| endif pz=2*cosh(pz) elseif @Va=="6" pz=pz+sqr(pz^2/(pz+7)) elseif @Va=="7" if |pz|>1 pz=pz/|pz| endif pz=2*cos(pz) elseif @Va=="8" if |pz|>1 pz=pz/|pz| endif pz=0.75*recip(pz) elseif @Va=="9" pz=pz^2*(pz-4)/(-2.3+4*pz) elseif @Va=="10" pz=pz^2*tan((pz-4)/(-1+4*pz)) elseif @Va=="11" pz=pz^2*sinh((pz-4)/(-1+4*pz)) elseif @Va=="12" pz=pz^2*sin((pz-4)/(-1+4*pz)) elseif @Va=="13" pz=pz+0.855*cotan(pz) elseif @Va=="14" pz=flip((pz^2+1)/(2*pz))^2 elseif @Va=="15" pz=pz+0.3i/cosh(pz) elseif @Va=="16" pz=pz-0.337i/exp(pz) elseif @Va=="17" pz=pz+0.69i/cotanh(pz) elseif @Va=="18" pz=pz+0.35i/cotan(pz) elseif @Va=="19" pz=pz+0.25i/tan(pz) endif pz=exp(@p2*1i)*(cabs(@p1)/@p1)*pz^3*(fn3(pz)-@p1)/(1-conj(@p1)*pz) return pz endfunc default: title="Munster 12" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam func fn1 caption="Start Function" default=ident() endfunc param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19" endparam param p2 caption="Munster Parameter 1" default=0.0 endparam param p1 caption="Munster Parameter 2" default=(2,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="Munster Function" default=ident() endfunc param p5 caption="Add Recip Parameter" default=(0,0) endparam param p6 caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Grau/Diaz-Barrero(common.ulb:ConvergentFormula) { ;Rootfinding method developed by Grau and Diaz-Barrero ;https://file.scirp.org/pdf/AM20100300002_25669189.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) b=a-@p2*(a^@pow-@p4)*(pz^@pow-@p4)/((@pow*pz^(@pow-1))*((pz^@pow-@p4)-2*(a^@pow-@p4))) pz=b-@p3*(b^@pow-@p4)*(pz^@pow-@p4)/((@pow*pz^(@pow-1))*((@pow*pz^(@pow-1))-2*(a^@pow-@p4))) return pz endfunc default: title="Grau/Diaz-Barrero" int param v_SFormula caption="Version (SFormula)" default=100 visible=@v_SFormula<100 endparam func fn1 caption="Start Function" default=ident() endfunc param p1 caption="G/D-B Parameter 1" default=(1,0) endparam param p2 caption="G/D-B Parameter 2" default=(1,0) endparam param p3 caption="G/D-B Parameter 3" default=(1,0) endparam param p4 caption="G/D-B Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Schrödernova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@sp1*(pz^@pow-@sp2)*(@pow*pz^(@pow-1))/((@pow*pz^(@pow-1))^2-(pz^@pow-@sp2)*((@pow-1)*@pow*pz^(@pow-2)))+@pf(fPixel) endfunc default: title="Schrödernova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp1 caption="Schrödernova Parameter 1" default=(1,0) endparam param sp2 caption="Schrödernova Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Traub-Ostrowski(common.ulb:ConvergentFormula) { ; Traub-Ostrowski root finding method public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel = pz return fn1(pz) endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@p4*fn2(pz)+@p5 if @JM=="J" if @Va=="none" pz=pz elseif @Va=="1" pz=pz+1.21/sin(pz) elseif @Va=="2" pz=pz+0.3/pz elseif @Va=="3" pz=pz-0.67/cosh(pz) elseif @Va=="4" pz=pz+0.91968*sqr(pz)/tan(pz) elseif @Va=="5" pz=pz+1/cotanh(pz) elseif @Va=="6" pz=pz+0.9/cotan(pz) elseif @Va=="7" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="8" pz=pz+0.57*sqr(pz) elseif @Va=="9" pz=pz+1/sqr(pz) elseif @Va=="10" pz=pz-2.81439*sqr(pz)/tan(pz) elseif @Va=="11" pz=pz+0.55/pz elseif @Va=="12" pz=pz-1.45/cos(pz) elseif @Va=="13" if real(pz)>imag(pz) pz=flip(pz) endif elseif @Va=="14" pz=pz-0.4/sqr(pz) elseif @Va=="15" pz=pz+3.63214*pz*cotan(pz) elseif @Va=="16" pz=pz-0.648*sqr(pz) elseif @Va=="17" pz=pz-0.32959*sqr(pz)/cotanh(pz) elseif @Va=="18" pz=pz-1/pz elseif @Va=="19" pz=pz+0.46316*sqr(abs(pz)) elseif @Va=="20" pz=pz+1.133*sqr(pz)/cotanh(pz) elseif @Va=="21" pz=pz-1.3518*sqr(pz)/tanh(pz) elseif @Va=="22" pz=pz+pz^3 elseif @Va=="23" pz=pz+1.32965*sqr(pz)/tan(pz) elseif @Va=="24" pz=pz+0.5236*sqr(pz)/cotanh(pz) elseif @Va=="25" pz=pz+0.73407*tan(pz)/sqr(pz) elseif @Va=="26" pz=pz-1.06059/sinh(pz) elseif @Va=="27" if |pz|>1 pz=pz/|pz| endif elseif @Va=="28" pz=pz+0.75347*sqr(pz)/tanh(pz) elseif @Va=="29" pz=pz+2.684*pz/cotan(pz) elseif @Va=="30" pz=pz+0.92854*pz*abs(pz) elseif @Va=="31" pz=pz-1.37673*sqr(pz)/cotan(pz) elseif @Va=="32" pz=pz-3.25*pz/tan(pz) elseif @Va=="33" pz=pz+0.65*pz^4 elseif @Va=="34" pz=pz+3.51248*sqr(pz)/tan(pz) elseif @Va=="35" pz=pz+2.51525*sqr(pz)/tan(pz) elseif @Va=="36" pz=pz+0.72909*pz*cabs(pz) elseif @Va=="37" pz=pz-0.65374*sqr(pz)/tanh(pz) elseif @Va=="38" pz=pz-0.35/tanh(pz) elseif @Va=="39" pz=pz+2.556*pz/cosh(pz) elseif @Va=="40" pz=pz-0.8*pz^3 elseif @Va=="41" pz=pz+0.54*pz/cos(pz) elseif @Va=="42" pz=pz-0.5/cotan(pz) elseif @Va=="43" pz=pz+0.46814*sqr(pz)/cotan(pz) elseif @Va=="44" pz=pz+0.679*cotanh(pz) elseif @Va=="45" pz=pz+1.643/sinh(pz) elseif @Va=="46" pz=pz-0.5409/cos(pz) elseif @Va=="47" pz=pz-0.42*pz^4 elseif @Va=="48" pz=pz+1.82*sqr(pz)/cotanh(pz) elseif @Va=="49" pz=pz-1.8/cotanh(pz) elseif @Va=="50" pz=pz+sqr(pz) elseif @Va=="51" pz=pz+0.46*sqr(pz) elseif @Va=="52" pz=pz+0.6/cosh(pz) elseif @Va=="53" pz=pz+1.532/pz elseif @Va=="54" pz=pz-2.534/sin(pz) elseif @Va=="55" pz=pz-1.9*sqr(pz) elseif @Va=="56" pz=pz+0.4685/sinh(pz) elseif @Va=="57" pz=pz+1/tanh(pz) elseif @Va=="58" pz=pz-0.41*tan(pz) elseif @Va=="59" pz=pz+1/tan(pz) elseif @Va=="60" pz=pz-1/tan(pz) elseif @Va=="61" pz=pz+0.4/tan(pz) elseif @Va=="62" pz=pz+2*sqr(pz) elseif @Va=="63" pz=pz-sqr(pz)/cotan(pz) elseif @Va=="64" pz=pz+0.412/cos(pz) elseif @Va=="65" pz=pz-0.277*sqr(pz)/tanh(pz) elseif @Va=="66" pz=pz+0.91*pz/sinh(pz) elseif @Va=="67" pz=pz+2.37396*tanh(pz)/sqr(pz) elseif @Va=="68" pz=pz-0.697/tan(pz) elseif @Va=="69" pz=pz+2.41552*sqr(pz)/tanh(pz) elseif @Va=="70" pz=pz-4*sqr(pz)/tanh(pz) elseif @Va=="71" pz=pz+0.84488*tanh(pz)/pz endif else if @Va=="none" pz=pz elseif @Va=="1" pz=pz+cotanh(cotan(pz)) elseif @Va=="2" pz=pz+0.45*tan(pz)*tanh(pz) elseif @Va=="3" pz=pz+0.55*cotanh(pz)/cotan(pz) elseif @Va=="4" pz=pz-0.5*cotan(pz)*cotanh(pz) elseif @Va=="5" if real(pz)>imag(pz) pz=flip(pz) endif elseif @Va=="6" pz=pz-6.758/sqr(pz) elseif @Va=="7" pz=pz-0.3/sqr(pz) elseif @Va=="8" pz=pz-0.3*sqr(pz)/sinh(pz) elseif @Va=="9" pz=pz+0.4*sqr(pz)/cosh(pz) elseif @Va=="10" pz=pz-0.6*sqr(pz)/tanh(pz) elseif @Va=="11" pz=pz-0.5*pz^3 elseif @Va=="12" pz=pz+0.2*sqr(pz)/cos(pz) elseif @Va=="13" pz=pz+0.46*sqr(pz)/tan(pz) elseif @Va=="14" pz=pz+2.8*pz*cotan(pz) elseif @Va=="15" pz=pz-0.5/cotanh(pz) elseif @Va=="16" pz=pz+2*sqr(pz)/sin(pz) elseif @Va=="17" pz=pz+0.4*sqr(pz)/tanh(pz) elseif @Va=="18" pz=pz-1/cos(pz) elseif @Va=="19" pz=pz-sqr(pz)/cotanh(pz) elseif @Va=="20" pz=pz-0.3*sqr(pz)/cotan(pz) elseif @Va=="21" pz=pz+0.5*sqr(pz)/cotanh(pz) elseif @Va=="22" pz=pz+1/pz elseif @Va=="23" pz=pz+0.3*pz*tan(pz) elseif @Va=="24" pz=pz+0.9/sinh(pz) elseif @Va=="25" pz=pz+0.8*pz*cotanh(pz) elseif @Va=="26" pz=pz+0.3/pz elseif @Va=="27" pz=pz-pz^3 elseif @Va=="28" pz=pz+0.5*pz^3 elseif @Va=="29" pz=pz+sqr(pz) elseif @Va=="30" pz=pz+0.47729/pz elseif @Va=="31" pz=pz-sqr(pz) elseif @Va=="32" pz=pz+pz^3 elseif @Va=="33" pz=pz+4.8/sqr(pz) elseif @Va=="34" pz=pz-0.3*pz^4 elseif @Va=="35" pz=pz+1/sqr(pz) elseif @Va=="36" pz=pz+3.3/sin(pz) elseif @Va=="37" pz=pz-2/cos(pz) elseif @Va=="38" pz=pz+0.3*pz^4 elseif @Va=="39" pz=pz-0.2*sqr(pz)/cos(pz) elseif @Va=="40" pz=pz-0.05/sqr(pz) elseif @Va=="41" pz=pz+0.15*tan(pz)/cotan(pz) elseif @Va=="42" pz=pz+0.3/cos(pz) elseif @Va=="43" pz=pz+cotanh(tan(pz)) elseif @Va=="44" pz=pz+0.4*cotan(pz) elseif @Va=="45" pz=pz-0.3*sqr(pz)/sin(pz) elseif @Va=="46" pz=pz-0.75/sqr(pz) elseif @Va=="47" pz=pz+cotan(pz) elseif @Va=="48" pz=pz+0.7*sqr(pz)/sinh(pz) elseif @Va=="49" pz=pz-0.3*tanh(pz) elseif @Va=="50" pz=pz-0.5*cotan(pz)/tan(pz) elseif @Va=="51" pz=pz-0.3*tan(pz) elseif @Va=="52" pz=pz-0.5*sqr(pz)/cosh(pz) elseif @Va=="53" pz=pz+0.5/cotan(pz) elseif @Va=="54" pz=pz+0.8*sqr(pz)/cotanh(pz) elseif @Va=="55" pz=pz+sqr(pz)/tan(pz) elseif @Va=="56" pz=pz-2.88/sqr(pz) elseif @Va=="57" pz=pz+0.3*sqr(pz)/cotanh(pz) elseif @Va=="58" pz=pz+1/cos(pz) elseif @Va=="59" pz=pz-0.3/cosh(pz) elseif @Va=="60" pz=pz-1.5*sqr(pz)/cotanh(pz) elseif @Va=="61" pz=pz+0.75/tan(pz) elseif @Va=="62" pz=pz-0.6*sqr(pz)/cotan(pz) elseif @Va=="63" pz=pz+0.2*sqr(pz)/cotan(pz) elseif @Va=="64" pz=pz-1/cosh(pz) elseif @Va=="65" pz=pz+sqr(pz)/cotan(pz) elseif @Va=="66" pz=pz-0.3/cos(pz) elseif @Va=="67" pz=pz+sqr(pz)/tanh(pz) elseif @Va=="68" pz=pz-2*sqr(pz)/tanh(pz) elseif @Va=="69" pz=pz+0.275/tan(pz) elseif @Va=="70" pz=pz-0.6*sqr(pz)/tan(pz) elseif @Va=="71" pz=pz-2*sqr(pz)/tan(pz) endif endif f=pz^@pow-@p3 f1=@pow*pz^(@pow-1) a=f/f1 if @JM=="J" pz=pz-@p1*a*(((pz-a)^@pow-@p3)-f)/((2*((pz-a)^@pow-@p3))-f)+@p2 else pz=pz-@p1*a*(((pz-a)^@pow-@p3)-f)/((2*((pz-a)^@pow-@p3))-f)+@p2+fn3(fpixel) endif return pz endfunc default: title="Traub-Ostrowski" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param JM caption="J/M" enum="J""M" endparam param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8"\ "9""10""11""12""13""14""15""16""17"\ "18""19""20""21""22""23""24""25""26"\ "27""28""29""30""31""32""33""34""35"\ "36""37""38""39""40""41""42""43""44"\ "45""46""47""48""49""50""51""52""53"\ "54""55""56""57""58""59""60""61""62"\ "63""64""65""66""67""68""69""70""71" endparam param p1 caption="Traub-Ostrowski Parameter 1" default=(1,0) endparam param p2 caption="Traub-Ostrowski Parameter 2" default=(0,0) endparam param p3 caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="Pixel Function" default=ident() visible=@JM=="M" endfunc param p4 caption="Z Parameter 1" default=(1,0) endparam param p5 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Nednova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 if @v==0 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@pf(fPixel) elseif @v==1 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1))+@pf(fPixel) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4)) elseif @v==2 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1))+@pf(fPixel) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@pf(fPixel) elseif @v==3 a=pz-@p1*(pz^@pow-@pf(fPixel))/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-(@p3+2.425)*(a^@pow-@p4)) else a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@pf(fPixel))/((pz^@pow-@pf(fPixel))-(@p3+2.425)*(a^@pow-@pf(fPixel))) endif return pz endfunc default: title="Nednova Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param pow caption="Exponent" default=(3,0) endparam param p1 caption="Nednova Parameter 1" default=(1,0) endparam param p2 caption="Nednova Parameter 2" default=(1,0) endparam param p3 caption="Nednova Parameter 3" default=(1,0) endparam param p4 caption="Nednova Parameter 4" default=(1,0) endparam param sp caption="Start Parameter" default=(0.5,0) endparam func pf caption="Pixel Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Nedzhibov(common.ulb:ConvergentFormula) { ;Accidental modification of root finding method of Nedzhibov ;https://file.scirp.org/pdf/AM20100300002_25669189.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@c return pz endfunc default: title="Nedzhibov Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="Nedzhibov Parameter 1" default=(1,0) endparam param p2 caption="Nedzhibov Parameter 2" default=(0.25,0) endparam param p3 caption="Nedzhibov Parameter 3" default=(-0.4,0) endparam param p4 caption="Nedzhibov Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Steffensen(common.ulb:ConvergentFormula) { ;Steffensen's method for z+1/z=c ;https://en.wikipedia.org/wiki/Steffensen%27s_method public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@zf(pz)+@pzp2 f=pz+1/pz-@p2 g=((pz+f)+1/(pz+f)-@p2)/f-1 pz=pz-@p1*f/g return pz endfunc default: title="Steffensen" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Steffensen Parameter 1" default=(1,0) endparam param p2 caption="Steffensen Parameter 2" default=(0,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Steffnova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 f=pz+1/pz-@p2 g=((pz+f)+1/(pz+f)-@p2)/f-1 pz=pz-@p1*f/g+@pf(fpixel) return pz endfunc default: title="Steffnova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Steffnova Parameter 1" default=(1,0) endparam param p2 caption="Steffnova Parameter 2" default=(0,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ZeppoMod(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p12*tan(pz) pz=pz+@p11/cos(pz) if @V==0 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==1 pz=abs(fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2))^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==2 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==3 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(abs(fn4(1-abs(1-real(pz)-imag(pz)))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==4 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(abs(fn4(1-abs(1-real(pz)-imag(pz)))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==5 pz=1-abs(fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2))^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==6 pz=1-fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) else pz=1-fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) endif endwhile return pz*@p5/100 endfunc private: int i default: title="Zeppo Mod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8" default=0 endparam param iter caption="Iterations" default=7 endparam param p2 caption="Zeppo Parameter 1" default=(0,0) endparam param p3 caption="Zeppo Parameter 2" default=(1,0) endparam param p4 caption="Zeppo Parameter 3" default=(0,0) endparam param p1 caption="Zeppo Parameter 4" default=(1,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Recip Cos Parameter" default=(0,0) endparam param p12 caption="Add Tan Parameter" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Zeppo Function 1" default=ident() endfunc func fn3 caption="Zeppo Function 2" default=ident() endfunc func fn4 caption="Zeppo Function 3" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p7 caption="Add Pixel Parameter" default=(0,0) endparam func fn5 caption="Add Pixel Function" default=ident() visible=@p7!=0 endfunc param p5 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Fermat-LucasSuper-Halley(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*fn2(fn3(pz))+@pzp2 if @P=="3" f=27*pz^3-18*pz-@p4 f1=81*pz^2-18 f2=162*pz elseif @P=="4" f=81*pz^4-72*pz^2+8-@p4 f1=324*pz^3-144*pz f2=972*pz^2-144 elseif @P=="5" f=243*pz^5-270*pz^3+60*pz-@p4 f1=1215*pz^4-810*pz^2+60 f2=4860*pz^3-1620*pz elseif @P=="6" f=729*pz^6-972*pz^4+324*pz^2-16-@p4 f1=4374*pz^5-3888*pz^3+648*pz f2=21870*pz^4-11664*pz^2+648 elseif @P=="7" f=2187*pz^7-3402*pz^5+1512*pz^3-168*pz-@p4 f1=15309*pz^6-17010*pz^4+4536*pz^2-168 f2=91854*pz^5-68040*pz^3+9072*pz elseif @P=="8" f=6561*pz^8-11664*pz^6+6480*pz^4-1152*pz^2+32-@p4 f1=52488*pz^7-69984*pz^5+25920*pz^3-2304*pz f2=367416*pz^6-349920*pz^4+77760*pz^2-2304 else f=19683*pz^9-39366*pz^7+26244*pz^5-6480*pz^3+432*pz-@p4 f1=177147*pz^8-275562*pz^6+131220*pz^4-19440*pz^2+432 f2=1417176*pz^7-1653372*pz^5+524880*pz^3-38880*pz endif a=f/f1 b=f*f2/sqr(f1) return @p2*pz-@p1*a*(1+(b/(2*(1-b))))+@p3 endfunc default: title="Fermat-Lucas Super-Halley" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param P caption="Polynomial" enum="3""4""5""6""7""8""9" default=2 endparam param p1 caption="SH Parameter 1" default=(1,0) endparam param p2 caption="SH Parameter 2" default=(1,0) endparam param p4 caption="SH Parameter 3" default=(0,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=flip() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_LabsPoincaréPolynomials(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=fn2(fn3(pz)) pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) x=real(pz)+real(@p6) y=imag(pz)+imag(@p6) a=x^2+y^2 x=x/a+real(@p1) y=y/a+imag(@p1) if @V1=="pz^2-pz" pz=@p4*((x+flip(y))^2-(x+flip(y)))+@p5 elseif @V1=="Munster" pz=(x+flip(y))^2*((x+flip(y))-(@p4+1))/(1-(@p4+1)*(x+flip(y)))+@p5 elseif @V1=="pz^3-pz" pz=@p4*((x+flip(y))^3-(x+flip(y)))+@p5 elseif @V1=="pz^3-pz^2" pz=@p4*((x+flip(y))^3-(x+flip(y))^2)+@p5 elseif @V1=="pz^3-pz^2-pz" pz=@p4*((x+flip(y))^3-(x+flip(y))^2-(x+flip(y)))+@p5 elseif @V1=="Cayley" pz=@p4*(x+flip(y)-sqrt(-1))/(x+flip(y)+sqrt(-1))+@p5 elseif @V1=="Inverse Cayley" pz=@p4*(x+flip(y)+sqrt(-1))/(x+flip(y)-sqrt(-1))+@p5 elseif @V1=="Newton 1" pz=x+flip(y)-@p4*((x+flip(y))^3-1)/(3*(x+flip(y))^2)+@p5 elseif @V1=="Newton 2" pz=x+flip(y)-@p4*((x+flip(y))^4-1)/(4*(x+flip(y))^3)+@p5 elseif @V1=="Halley" pz=x+flip(y)-@p4*2*((x+flip(y))^3-1)*(3*(x+flip(y))^2)/(2*(3*(x+flip(y))^2)^2-((x+flip(y))^3-1)*(6*(x+flip(y))))+@p5 elseif @V1=="Inkle" pz=@p4*conj(@p4/(x+flip(y)-@p5))+@p5 elseif @V1=="Magnet 1" pz=@p4*sqr(((x+flip(y))^2+@p5-1)/(2*(x+flip(y))+@p5-2)) elseif @V1=="Magnet 2" pz=@p4*sqr(((x+flip(y))^3+3*(@p5-1)*(x+flip(y))+(@p5-1)*(@p5-2))/(3*(x+flip(y))^2+3*(@p5-2)*(x+flip(y))+(@p5-1)*(@p5-2)+1)) endif if @V2=="2" if |pz|<1 pz=pz/|pz| endif elseif @V2=="3" if |pz|>1 pz=pz/|pz| endif endif if @V3=="2" if real(pz)imag(pz) pz=flip(pz) endif endif if @v=="Q1(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4))))^@pow+@p3 elseif @v=="Q2(A2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3))))^@pow+@p3 elseif @v=="Q3(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3-2*pz^4))))^@pow+@p3 elseif @v=="Q8(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^2+pz^5+pz^6))))^@pow+@p3 elseif @v=="Q9(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-3*pz^2-pz^4+pz^5+3*pz^6))))^@pow+@p3 elseif @v=="Q10(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-3*pz^3+pz^4-pz^5+pz^8+2*pz^9))))^@pow+@p3 elseif @v=="Q11(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4-pz^5+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q12(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-3*pz^3-pz^6+pz^7+pz^8+3*pz^9))))^@pow+@p3 elseif @v=="Q16(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz+pz^2-pz^4+pz^6))))^@pow+@p3 elseif @v=="Q17(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-2*pz^5+pz^6+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q18(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz+pz^3-pz^4-pz^5+2*pz^6))))^@pow+@p3 elseif @v=="Q19(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4-pz^5+pz^6+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q20(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz-2*pz^5+3*pz^6))))^@pow+@p3 elseif @v=="Q21(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^2-pz^3+2*pz^5+pz^6+2*pz^7+3*pz^8-pz^9+pz^10-pz^11-2*pz^12))))^@pow+@p3 elseif @v=="Q22(B4)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3+pz^7+2*pz^8+pz^9+pz^10+pz^11-pz^15-pz^16))))^@pow+@p3 elseif @v=="Q23(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4+pz^6+pz^7+2*pz^8-pz^11-pz^12))))^@pow+@p3 elseif @v=="Q24(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^5))))^@pow+@p3 elseif @v=="Q25(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3))))^@pow+@p3 elseif @v=="Q26(A2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2))))^@pow+@p3 elseif @v=="Q27(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3))))^@pow+@p3 elseif @v=="Q28(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^5))))^@pow+@p3 elseif @v=="Q29(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3-pz^4-pz^5))))^@pow+@p3 elseif @v=="Q36(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2+pz^5))))^@pow+@p3 elseif @v=="Q37(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3+pz^8))))^@pow+@p3 elseif @v=="Q38(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^4+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q39(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3+pz^7+pz^8))))^@pow+@p3 elseif @v=="Q40(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4-pz^5+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q43(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^4+pz^8))))^@pow+@p3 elseif @v=="Q44(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^5+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q46(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz^2-pz^3-pz^4-pz^5-pz^6+pz^8+pz^9+2*pz^10+2*pz^11+2*pz^12+pz^13+pz^14-pz^16-pz^17-pz^18-pz^19))))^@pow+@p3 elseif @v=="Q47(D5)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^4+pz^5+pz^6+pz^7+pz^9+pz^10-pz^11-pz^13-pz^14-pz^15+pz^19))))^@pow+@p3 elseif @v=="Q48(B5)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4+pz^6-pz^7+2*pz^8-pz^9+pz^10+pz^12+pz^13-pz^14-pz^15-pz^18-pz^20+pz^24))))^@pow+@p3 elseif @v=="Pg2" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)))))^@pow+@p3 elseif @v=="Pf4" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^23)))))^@pow+@p3 elseif @v=="Pe6" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^9)*(1+pz^11)*(1+pz^15)*(1+pz^17)*(1+pz^23)))))^@pow+@p3 elseif @v=="Pe7" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^19)*(1+pz^23)*(1+pz^27)*(1+pz^35)))))^@pow+@p3 elseif @v=="Pe8" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^15)*(1+pz^23)*(1+pz^27)*(1+pz^35)*(1+pz^39)*(1+pz^47)*(1+pz^59)))))^@pow+@p3 endif pz=pz+@p11*@fn6(fpixel) endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Labs Poincaré Polynomials" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V1 caption="Variant 1" enum="pz^2-pz""Munster""pz^3-pz""pz^3-pz^2""pz^3-pz^2-pz""Cayley""Inverse Cayley"\ "Newton 1""Newton 2""Halley""Inkle""Magnet 1""Magnet 2" default=7 endparam param V2 caption="Variant 2" enum="1""2""3" default=0 endparam param V3 caption="Variant 3" enum="1""2""3" default=1 endparam param V caption="Polynomial" enum="Q1(B2)""Q2(A2)""Q3(B2)"\ "Q8(A3)""Q9(A3)""Q10(B3)""Q11(B3)""Q12(B3)"\ "Q16(G2)""Q17(B3)""Q18(G2)""Q19(B3)""Q20(G2)""Q21(D4)""Q22(B4)""Q23(D4)"\ "Q24(G2)""Q25(B2)""Q26(A2)""Q27(B2)""Q28(G2)""Q29(G2)"\ "Q36(A3)""Q37(B3)""Q38(B3)""Q39(B3)""Q40(B3)"\ "Q43(B3)""Q44(B3)"\ "Q46(D4)""Q47(D5)""Q48(B5)"\ "Pg2""Pf4""Pe6""Pe7""Pe8" default=0 endparam param iter caption="Iterations" default=4 endparam param p1 caption="K Parameter 1" default=(0.35,0) endparam param p6 caption="K Parameter 2" default=(0,0) endparam param p2 caption="Labs Parameter 1" default=(1,0) endparam param p3 caption="Labs Parameter 2" default=(0,0) endparam param p4 caption="Variant Parameter 1" default=(1,0) endparam param p5 caption="Variant Parameter 2" default=(0,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function 1" default=ident() endfunc func fn5 caption="Labs Function 2" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p11 caption="Add Pixel Parameter" default=(0,0) endparam func fn6 caption="Add Pixel Function" default=ident() visible=@p11!=0 endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Mobbom(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p7)/(1-@p7*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p6*tan(pz) pz=pz+@p11/cos(pz) pz=abs(fn2(((1i+@p1)*pz+1i*@p1+1)/((-1i+@p1)*pz-1i*@p1+1)))^@pow*@p2+@p3+@p13*fn3(fpixel) endwhile return @p4*pz/100 endfunc private: complex fpixel int i default: title="Mobbom" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Mobbom Parameter 1" default=(-0.33,0) endparam param p2 caption="Mobbom Parameter 2" default=(1,0) endparam param p3 caption="Mobbom Parameter 3" default=(0,0) endparam param iter caption="Iterations" default=14 endparam param p7 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Recip Cos Parameter" default=(0,0) endparam param p6 caption="Add Tan Parameter" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Mobbom Function" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p13 caption="Add Pixel Parameter" default=(0,0) endparam func fn3 caption="Add Pixel Function" default=ident() visible=@p13!=0 endfunc param p4 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*fn2(pz)+@pzp2 f=pz^(-2)-@p2 f1=-2*pz^(-3) f2=6*pz^(-4) a=f1^2 b=f1-f*f2 return pz-@p1*(f/(f1*b))*(a+b)+@c endfunc default: title="Rootmod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Rootmod Parameter 1" default=(0.5,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Rootmod2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 f=pz^2-@p1 f1=2*pz a=fn2(f/f1) return a-@p3*(a/f1)*((f+@p2*a)/(f+(@p2-2)*a))+@c endfunc default: title="Rootmod 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Rootmod Parameter 1" default=(1,1) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Rootmod Parameter 3" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Rootmod Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Rootmod2Nova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*pz+@pzp2 f=pz^2-@p1 f1=2*pz a=fn2(f/f1) return a-@p3*(a/f1)*((f+@p2*a)/(f+(@p2-2)*a))+fn1(fpixel) endfunc default: title="Rootmod 2 Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param p1 caption="Rootmod Parameter 1" default=(1,1) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Rootmod Parameter 3" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn2 caption="Rootmod Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_RootmodNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*fn2(pz)+@pzp2 f=pz^(-2)-@p2 f1=-2*pz^(-3) f2=6*pz^(-4) a=f1^2 b=f1-f*f2 return pz-@p1*(f/(f1*b))*(a+b)+fn1(fpixel) endfunc default: title="Rootmod Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param p1 caption="RMN Parameter 1" default=(0.5,0) endparam param p2 caption="RMN Parameter 2" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_SlarpUxplizets(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 if @V=="1" pz=@p1*abs(fn2(pz^2+pz^2*@pf(fpixel)))^@pow+@p2 elseif @V=="2" pz=@p1*abs(log(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="3" pz=@p1*abs(flip(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="4" pz=@p1*abs(log(fn2(pz^2+sqr(pz^2)*@pf(fpixel))))^@pow+@p2 elseif @V=="5" pz=@p1*log(abs(fn2(pz^2+sqr(pz^2)*@pf(fpixel))))^@pow+@p2 elseif @V=="6" pz=@p1*log(abs(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="7" pz=@p1*abs(fn2(pz^2+sqr(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="8" pz=@p1*abs(fn2(pz^2+tan(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="9" pz=@p1*abs(fn2(pz^2+tanh(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="10" pz=@p1*abs(fn2(pz^2+log(pz)^2*@pf(fpixel)))^@pow+@p2 elseif @V=="11" pz=@p1*abs(fn2(pz^2+tanh(pz)^2*@pf(fpixel)))^@pow+@p2 elseif @V=="12" pz=@p1*abs(log(fn2(pz^2+tanh(pz)^2*@pf(fpixel))))^@pow+@p2 elseif @V=="13" pz=@p1*abs(log(fn2(pz^2+atanh(pz)^2*@pf(fpixel))))^@pow+@p2 elseif @V=="14" pz=@p1*abs(log(fn2(pz^2+sin(pz)^2*@pf(fpixel))))^@pow+@p2 endif endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Slarp Uxplizets" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14" default=0 endparam param iter caption="Iterations" default=7 endparam param p1 caption="SU Parameter 1" default=(1,0) endparam param p2 caption="SU Parameter 2" default=(-1.4,-0.8) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="SU Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(0.5,0) endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarMandelbrot(common.ulb:DivergentFormula) { ;Based on a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) fPixel=pz pz=@sp if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex fPixel complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+pk^2+@pf(fPixel) elseif @v==1 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2-pk^2+@pf(fPixel) elseif @v==2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^3+pk^2+@pf(fPixel) elseif @v==3 pk=(@bp1-0.15)*@bf(pk/pz)+@bp2 pz=(pz+pk)^2+@pf(fPixel) else pk=@bp1*@bf(pk/pz)+@bp2 pz=(pz-pk)^2+@pf(fPixel) endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v2==0 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+pk2^2+@pf(fPixel) elseif @v2==1 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2-pk2^2+@pf(fPixel) elseif @v2==2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^3+pk2^2+@pf(fPixel) elseif @v2==3 pk2=(@bp1-0.15)*@bf(pk2/pz)+@bp2 pz=(pz+pk2)^2+@pf(fPixel) else pk2=@bp1*@bf(pk2/pz)+@bp2 pz=(pz-pk2)^2+@pf(fPixel) endif return pz return pk2 endif endfunc default: title="Bivar Mandelbrot" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" visible=@v_SFormula<101 endparam param v2 caption="Variant" enum="1""2""3""4""5" visible=@v_SFormula>=101 endparam param sp caption="Start Parameter" default=(0.1,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarMandelbrot2(common.ulb:DivergentFormula) { ;Based on a formula from gerrit on fractalforums: ;https://fractalforums.org/fractal-mathematics-and-new-theories/28/holomorphic-mandelbrot-extensions/1475/30 public: complex func Init(complex pz) fPixel=pz a=(0,0) pz=@sp if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex fPixel complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pz if @v==0 pz=pz^2+@bp1*pk+@pf(fPixel) pk=pk^2+@bp2*a+@pf(fPixel) elseif @v==1 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a-0.5*@pf(fPixel) elseif @v==2 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a elseif @v==3 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a+@pf(fPixel) elseif @v==4 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2) pk=pk^2+@bp2*a+@pf(fPixel+fpixel^2) elseif @v==5 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2) pk=pk^2+@bp2*a+@pf(fPixel-fpixel^2) elseif @v==6 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2+fpixel^3) pk=pk^2+@bp2*a+@pf(fPixel+fpixel^2) else pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2+fpixel^3) pk=pk^2+@bp2*a endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 a=pz if @v==0 pz=pz^2+@bp1*pk2+@pf(fPixel) pk2=pk2^2+@bp2*a+@pf(fPixel) elseif @v==1 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a-0.5*@pf(fPixel) elseif @v==2 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a elseif @v==3 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a+@pf(fPixel) elseif @v==4 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2) pk2=pk2^2+@bp2*a+@pf(fPixel+fpixel^2) elseif @v==5 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2) pk2=pk2^2+@bp2*a+@pf(fPixel-fpixel^2) elseif @v==6 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2+fpixel^3) pk2=pk2^2+@bp2*a+@pf(fPixel+fpixel^2) else pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2+fpixel^3) pk2=pk2^2+@bp2*a endif return pz return pk2 endif endfunc default: title="Bivar Mandelbrot 2" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(-1,0) endparam param bp2 caption="Bivar Parameter 2" default=(-1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Ringun(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p3*fn4(sqr(pz))+@p4 if |pz|<1 pz=pz/|pz| endif if @V=="2" if real(pz)imag(pz) pz=flip(pz) endif elseif @V=="4" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif elseif @V=="5" x=real(pz) y=imag(pz) if real(x+y)<0 b=y y=x x=b endif pz=x+flip(y) elseif @V=="6" x=real(pz) y=imag(pz) x=abs(x) y=abs(y) if real(x)-imag(y)<0 b=y y=x x=b endif pz=x+flip(y) elseif @V=="7" x=real(pz) y=imag(pz) x=abs(x) y=abs(y) if imag(x)-real(y)<0 b=y y=x x=b endif pz=x+flip(y) endif k=cos(i)+sqrt(-1)*i pz=@p1*@fn5(log(abs(pz^@pow+fn2(k)*fn3(fpixel))))+@p2 endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Ringun" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7" default=0 endparam param iter caption="Iterations" default=5 endparam func fn1 caption="Start Function" default=ident() endfunc func fn5 caption="Ringun Function 1" default=ident() endfunc func fn2 caption="Ringun Function 2" default=ident() endfunc func fn3 caption="Pixel Function" default=ident() endfunc func fn4 caption="Z Function" default=ident() endfunc param p1 caption="Ringun Parameter 1" default=(1,0) endparam param p2 caption="Ringun Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Wigwam(common.ulb:DivergentFormula) { ;Tent map fractal. Closely resembles Barnsley public: complex func Init(complex pz) if @Fs=="ident" pz=ident(pz) elseif @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="log" pz=log(pz) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) elseif @Fs=="round" pz=round(pz) endif return pz endfunc complex func Iterate(complex pz) if @F2=="ident" pz=ident(pz) elseif @F2=="sin" pz=sin(pz) elseif @F2=="sinh" pz=sinh(pz) elseif @F2=="asin" pz=asin(pz) elseif @F2=="asinh" pz=asinh(pz) elseif @F2=="versin" pz=1-cos(pz) elseif @F2=="aversin" pz=acos(1-pz) elseif @F2=="haversin" pz=(1-cos(pz))/2 elseif @F2=="ahaversin" pz=2*asin(sqrt(pz)) elseif @F2=="coversin" pz=1-sin(pz) elseif @F2=="acoversin" pz=asin(1-pz) elseif @F2=="hacoversin" pz=(1-sin(pz))/2 elseif @F2=="cos" pz=cos(pz) elseif @F2=="cosh" pz=cosh(pz) elseif @F2=="acos" pz=acos(pz) elseif @F2=="acosh" pz=acosh(pz) elseif @F2=="vercos" pz=1+cos(pz) elseif @F2=="avercos" pz=acos(1+pz) elseif @F2=="havercos" pz=(1+cos(pz))/2 elseif @F2=="ahavercos" pz=2*acos(sqrt(pz)) elseif @F2=="covercos" pz=1+sin(pz) elseif @F2=="acovercos" pz=asin(1+pz) elseif @F2=="hacovercos" pz=(1+sin(pz))/2 elseif @F2=="tan" pz=tan(pz) elseif @F2=="tanh" pz=tanh(pz) elseif @F2=="atan" pz=atan(pz) elseif @F2=="atanh" pz=atanh(pz) elseif @F2=="cotan" pz=cotan(pz) elseif @F2=="cotanh" pz=cotanh(pz) elseif @F2=="acotan" pz=atan(1/(pz)) elseif @F2=="acotanh" pz=atanh(1/(pz)) elseif @F2=="sec" pz=1/cos(pz) elseif @F2=="sech" pz=1/cosh(pz) elseif @F2=="asec" pz=acos(1/pz) elseif @F2=="asech" pz=acosh(1/pz) elseif @F2=="cosec" pz=1/sin(pz) elseif @F2=="cosech" pz=1/sinh(pz) elseif @F2=="acosec" pz=asin(1/pz) elseif @F2=="acosech" pz=asinh(1/pz) elseif @F2=="exsec" pz=1/cos(pz)-1 elseif @F2=="aexsec" pz= acos(1/(pz+1)) elseif @F2=="excosec" pz=1/sin(pz)-1 elseif @F2=="aexcosec" pz=asin(1/(pz+1)) elseif @F2=="crd" pz=2*sin(pz/2) elseif @F2=="acrd" pz=2*asin(pz/2) elseif @F2=="gd" pz=asin(tanh(pz)) elseif @F2=="agd" pz=asinh(tan(pz)) elseif @F2=="sinc" pz=sin(pz)/(pz) elseif @F2=="sinhc" pz=sinh(pz)/(pz) elseif @F2=="cosc" pz=cos(pz)/(pz) elseif @F2=="coshc" pz=cosh(pz)/(pz) elseif @F2=="tanc" pz=tan(pz)/(pz) elseif @F2=="tanhc" pz=tanh(pz)/(pz) elseif @F2=="cotanc" pz=cotan(pz)/(pz) elseif @F2=="cotanhc" pz=cotanh(pz)/(pz) elseif @F2=="secc" pz=1/(pz*cos(pz)) elseif @F2=="sechc" pz=1/(pz*cosh(pz)) elseif @F2=="cosecc" pz= 1/(pz*sin(pz)) elseif @F2=="cosechc" pz=1/(pz*sinh(pz)) elseif @F2=="sqr" pz=sqr(pz) elseif @F2=="sqrt" pz=sqrt(pz) elseif @F2=="cube" pz=pz^3 elseif @F2=="cuberoot" pz=pz^(1/3) elseif @F2=="log" pz=log(pz) elseif @F2=="colog" pz=-log(pz) elseif @F2=="exp" pz=exp(pz) elseif @F2=="abs" pz=abs(pz) elseif @F2=="cabs" pz=cabs(pz) elseif @F2=="conj" pz=conj(pz) elseif @F2=="flip" pz=flip(pz) elseif @F2=="recip" pz=recip(pz) elseif @F2=="logit" pz= log(pz/(1-pz)) elseif @F2=="expit" pz=1/(1+exp(-pz)) elseif @F2=="gauss" pz=exp(-sqr(pz)) elseif @F2=="softplus" pz=log(1+exp(pz)) elseif @F2=="primecount" pz=pz/log(pz) elseif @F2=="ceil" pz=ceil(pz) elseif @F2=="floor" pz=floor(pz) elseif @F2=="trunc" pz=trunc(pz) elseif @F2=="round" pz=round(pz) endif pz=pz+@pzp1 if real(pz)<0.5 return @p1*pz else return @p1*(1-pz) endif endfunc default: title="Wigwam" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Wigwam Parameter" default=(0.97601,-0.38381) endparam param pzp1 caption="Z Parameter" default=(0,0) endparam param Fs caption="Start Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param F2 caption="Z Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_WurgulationRings2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return @sf(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p10*pz+1) pz=pz+@p7*(2*pz-1i)/(pz+2i)/(pz-1) pz=pz+@p14*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p15*(pz-1i)/(pz+1i) pz=@p1*fn2(sqr(flip(fn3(pz))))+@p2+@p16*fpixel if |pz|>1 pz=pz/|pz| endif pz=pz+@p12*tan(pz) pz=pz+@p13*sqr(pz) x=real(pz) y=imag(pz) x=x/|pz|+real(@p3) y=y/|pz|+imag(@p3) pz=x+flip(y) if @V=="1" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="2" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="3" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="4" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="5" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="6" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="7" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="8" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="9" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="10" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="11" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="12" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="13" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="14" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="15" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="16" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="17" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="18" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="19" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="20" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="21" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="22" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="23" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="24" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="25" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="26" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="27" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="28" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="29" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="30" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="31" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="32" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="33" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="34" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="35" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="36" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="37" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="38" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="39" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="40" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="41" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11-1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="42" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="43" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="44" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="45" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) endif endwhile return 51*pz/50 endfunc private: complex fpixel int i default: title="Wurgulation Rings 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8"\ "9""10""11""12""13""14""15""16"\ "17""18""19""20""21""22""23""24"\ "25""26""27""28""29""30""31""32"\ "33""34""35""36""37""38""39""40"\ "41""42""43""44""45" default=0 endparam param iter caption="Iterations" default=3 endparam param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p10 caption="Möbius Parameter 2" default=(0,0) endparam param p7 caption="Add W Parameter 1" default=(0,0) endparam param p14 caption="Add W Parameter 2" default=(0,0) endparam param p15 caption="Add Cayley Parameter" default=(0,0) endparam param p11 caption="C Parameter" default=(1,0) endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="K Parameter" default=(0,0) endparam param p4 caption="Labs Parameter 1" default=(1,0) endparam param p5 caption="Labs Parameter 2" default=(0,0) endparam param p12 caption="Add Tan Parameter" default=(0,0) endparam param p13 caption="Add Sqr Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function 1" default=ident() endfunc func fn5 caption="Labs Function 2" default=ident() endfunc param p17 caption="Add Pixel Parameter 1" default=(0.1,0.1) endparam func fn6 caption="Add Pixel Function" default=ident() visible=@p17!=0 endfunc param p16 caption="Add Pixel Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_Rootmod3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz-@p1*f^4/(2*f1^3)+@p3+0.05*@pf(fpixel) endfunc default: title="Rootmod 3" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp default=(-0.195,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(0.8,0) endparam param p3 caption="Rootmod Parameter 3" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_WigwamMod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=@sf(pz) if @sv==0 pz=pz elseif @sv==1 pz=(cotanh(pz)-1i)^2/cos(pz+1i) elseif @sv==2 pz=(pz-cos(1i))/cosh(pz+1i)^2 elseif @sv==3 pz=(cosh(pz)-2i)/cotan(pz+2i)/(pz-1i) elseif @sv==4 pz=pz+1i/cotanh(pz)+1 elseif @sv==5 pz=pz+1i/cotan(pz)+1 elseif @sv==6 pz=pz+1i/cosh(pz)+1 elseif @sv==7 pz=(pz-3i)*(pz+2i)/(cotanh(pz)-1i+1)/2i elseif @sv==8 pz=pz+1i/cos(pz)+1 elseif @sv==9 pz=pz+1i*pz*(pz-1i)/(pz+1i) elseif @sv==10 pz=pz+1i*pz*(pz-1i)/exp(pz+1i)*(pz-2i) elseif @sv==11 pz=pz+1/(1i*exp(pz))-1 elseif @sv==12 pz=pz+1/(1i*cotanh(pz))-1 elseif @sv==13 pz=pz-pz/(1i*cotan(pz))+1 elseif @sv==14 pz=pz-pz/(1i*sinh(pz))+1 elseif @sv==15 pz=pz+1i*pz^2/(exp(1i*pz))-1 elseif @sv==16 pz=pz+1i*pz^2/(cosh(1i*pz))-1 elseif @sv==17 pz=pz+1i*pz^2/(cos(1i*pz))-1 elseif @sv==18 pz=pz-pz^2/(exp(1i*sqr(pz)))-1 elseif @sv==19 pz=pz-pz^2/(sinh(1i*sqr(pz)))-1 elseif @sv==20 pz=pz-pz^2/(recip(1i*sqr(pz)))-1 elseif @sv==21 pz=pz-pz/(exp(1i+sqr(pz)))+1 elseif @sv==22 pz=pz-pz/(recip(1i+sqr(pz)))+1 elseif @sv==23 pz=pz+pz/cotan(cotanh(1i+pz))-1 elseif @sv==24 pz=pz+pz/(exp(1i+pz))-1 elseif @sv==25 pz=pz+pz/(cotan(1i+pz))-1 elseif @sv==26 pz=pz+pz/(tan(1i+pz))-1 elseif @sv==27 pz=pz+pz/(cosh(1i+pz))-1 elseif @sv==28 pz=pz+pz/(cos(1i+pz))-1 elseif @sv==29 pz=pz+pz/(sinh(1i+pz))-1 elseif @sv==30 pz=pz+pz/(sin(1i+pz))-1 endif return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p11*exp(pz) pz=pz+@p12*cos(pz) if real(fn2(pz))<0.5 pz=@p1*pz else pz=@p1*(1-pz) endif pz=@p2*abs(fn3(pz))^@pow+@p3+@p19*@fn5(fpixel) endwhile return @p4*pz/100 endfunc private: complex fpixel int i default: title="Wigwam Mod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30" endparam param iter caption="Iterations" default=7 endparam param p1 caption="Wigwam Parameter" default=(1,-1) endparam param p2 caption="Abs Parameter 1" default=(1,0) endparam param p3 caption="Abs Parameter 2" default=(0,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Exp Parameter" default=(0,0) endparam param p12 caption="Add Cos Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Wigwam Function" default=ident() endfunc func fn3 caption="Abs Function" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p19 caption="Add Pixel Parameter" default=(0,0) endparam func fn5 caption="Add Pixel Function" default=ident() visible=@p19!=0 endfunc param p4 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Wufu(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sf(pz) endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 return exp(@p2*1i)*(pz^3-pz)/(@p1*pz^2+1)+@c+@p3*@pf(fpixel) endfunc default: title="Wufu" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Wufu Parameter 1" default=(1.35,0) endparam param p2 caption="Wufu Parameter 2" default=0.0 endparam param c caption="Julia Seed" default=(0,0) endparam param p3 caption="Pixel Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@p3!=0 endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_SiegelMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=exp(@p1*1i)*pz+pz^2 return exp(@p2*1i)*pz^2*(pz-@p3)/(1-@p3*pz) endfunc default: title="Siegel Munster" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Siegel Parameter" default=0.5 endparam param p2 caption="Munster Parameter 1" default=0.5 endparam param p3 caption="Munster Parameter 2" default=(10,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarJulia2(common.ulb:DivergentFormula) { ;Based on a formula from gerrit on fractalforums: ;https://fractalforums.org/fractal-mathematics-and-new-theories/28/holomorphic-mandelbrot-extensions/1475/30 public: complex func Init(complex pz) pz=@sf(pz) b=(0,0) if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex b complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pz=pz^2+@bp1*pk+@c pk=pk^2+@bp2*pz+@c elseif @v==1 b=pz pz=pz^2+(@bp1-0.35)*pk+@c pk=pk^2+@bp2*b+@c elseif @v==2 pz=(pz^2+@c)^2+@bp1*pk+@c pk=(pk^2+@c)^2+@bp2*pz+@c elseif @v==3 b=pz pz=(pz^2+@c)^2+(@bp1-0.35)*pk+@c pk=(pk^2+@c)^2+@bp2*b+@c elseif @v==4 pz=((pz^2+@c)^2+@c)^2+(@bp1-1.22)*pk+@c pk=((pk^2+@c)^2+@c)^2+@bp2*pz+@c else b=pz pz=((pz^2+@c)^2+@c)^2+(@bp1-1.13)*pk+@c pk=((pk^2+@c)^2+@c)^2+@bp2*b+@c endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v2==0 pz=pz^2+@bp1*pk2+@c pk2=pk2^2+@bp2*pz+@c elseif @v2==1 b=pz pz=pz^2+(@bp1-0.35)*pk2+@c pk2=pk2^2+@bp2*b+@c elseif @v2==2 pz=(pz^2+@c)^2+@bp1*pk2+@c pk2=(pk2^2+@c)^2+@bp2*pz+@c elseif @v2==3 b=pz pz=(pz^2+@c)^2+(@bp1-0.35)*pk2+@c pk2=(pk2^2+@c)^2+@bp2*b+@c elseif @v2==4 pz=((pz^2+@c)^2+@c)^2+(@bp1-1.22)*pk2+@c pk2=((pk2^2+@c)^2+@c)^2+@bp2*pz+@c else b=pz pz=((pz^2+@c)^2+@c)^2+(@bp1-1.13)*pk2+@c pk2=((pk2^2+@c)^2+@c)^2+@bp2*b+@c endif return pz return pk2 endif endfunc default: title="Bivar Julia 2" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9" visible=@v_SFormula<101 endparam param v2 caption="Variant" enum="1""2""3""4""5""6" visible=@v_SFormula>=101 endparam param c caption="Julia Seed" default=(-0.4,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(1.5,0) endparam func bf caption="Bivar function" default=ident() visible=@v_SFormula<101 endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Chebyshev-HalleyNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) a=@p4*f/f1 b=@p5*f2*a/f1 return pz-@p1*a*(1+(b/(1-@p3*b))/2)+@pf(fpixel) endfunc default: title="Chebyshev-Halley Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="CHN Parameter 1" default=(1,0) endparam param p2 caption="CHN Parameter 2" default=(1,0) endparam param p3 caption="CHN Parameter 3" default=(1.5,0) endparam param p4 caption="CHN Parameter 4" default=(1,0) endparam param p5 caption="CHN Parameter 5" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func pf caption="Pixel Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MidpointMethod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@p2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) return @p3*pz-@p1*(f/(f1*(pz-(f/f1)/2)))+@c endfunc default: title="Midpoint Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Midpoint Parameter 1" default=(1,0) endparam param p2 caption="Midpoint Parameter 2" default=(1,0) endparam param p3 caption="Midpoint Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MidpointNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@p2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) return @p3*pz-@p1*(f/(f1*(pz-(f/f1)/2)))+@pf(fpixel) endfunc default: title="Midpoint Nova Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="MN Parameter 1" default=(2,0) endparam param p2 caption="MN Parameter 2" default=(1,0) endparam param p3 caption="MN Parameter 3" default=(0.5,0) endparam param sp caption="Start Parameter" default=(1,0) endparam param pow caption="Exponent" default=3 endparam func @pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0.65,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod4(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sf(pz) endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) z=@zp1*@zf(z)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(2*f*f1^2-f^6)/(2*f1^3)+@p3+@p4*@pf(fpixel) endfunc default: title="Rootmod 4" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(0.8,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param p4 caption="Pixel Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() visible=@p4!=0 endfunc param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_BivarX50(common.ulb:DivergentFormula) { ;This is a two variable modification of the cactus fractal ;http://mathworld.wolfram.com/CactusFractal.html public: complex func Init(complex pz) fpixel=pz a=(0,0) if @v_SFormula<101 if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sp pk=pz elseif @sv==2 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk else if @sv==0 pz=@sf(pz) pk2=pz elseif @sv==1 pz=@sp pk2=pz elseif @sv==2 pz=@sf(pz) pk2=@sp else pk2=@sf(pz) pz=@sp endif return pz return pk2 endif endfunc private: complex fpixel complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*@lf(pz)+@pzp2 pk=@pkp1*@lf(pk)+@pkp2 if @lv==0 pz=pz^3+(@pp*@pf(pixel)-@p1)*pz-@pp*@pf(fpixel)+@p2*pk pk=pk^3+(@pp*@pf(pixel)-@p1)*pk-@pp*@pf(fpixel)+@p3*pz else a=pz if @sv==0 || @sv==1 pz=pz^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pz-(@pp+0.25)*@pf(fpixel)+@p2*pk pk=pk^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pk-(@pp+0.25)*@pf(fpixel)+@p3*a else pz=pz^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pz-(@pp-0.5)*@pf(fpixel)+(@p2-0.7)*pk pk=pk^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pk-(@pp-0.5)*@pf(fpixel)+@p3*a endif endif return pz return pk else pz=@pzp1*@lf(pz)+@pzp2 pk2=@pkp1*@lf(pk2)+@pkp2 if @lv==0 pz=pz^3+(@pp*@pf(pixel)-@p1)*pz-@pp*@pf(fpixel)+@p2*pk2 pk2=pk2^3+(@pp*@pf(pixel)-@p1)*pk2-@pp*@pf(fpixel)+@p3*pz else a=pz if @sv==0 || @sv==1 pz=pz^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pz-(@pp+0.25)*@pf(fpixel)+@p2*pk2 pk2=pk2^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pk2-(@pp+0.25)*@pf(fpixel)+@p3*a else pz=pz^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pz-(@pp-0.5)*@pf(fpixel)+(@p2-0.7)*pk2 pk2=pk2^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pk2-(@pp-0.5)*@pf(fpixel)+@p3*a endif endif return pz return pk2 endif endfunc default: title="Bivar X 50" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param lv caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=1 endfunc param p1 caption="X Parameter" default=(1.25,0) endparam param p2 caption="Bivar Parameter 1" default=(1,0) endparam param p3 caption="Bivar Parameter 2" default=(1,0) endparam param pp caption="Pixel Parameter" default=(0.25,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 1" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func lf caption="Loop Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarJulia(common.ulb:DivergentFormula) { ;Based on a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) pz=@sf(pz) a=(0,0) if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+pk^2+@c elseif @v==1 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@c-1.1 elseif @v==2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2-pk^2+@c elseif @v==3 pk=(@bp1-0.15)*@bf(pk/pz)+@bp2 pz=(pz+pk)^2+@c elseif @v==4 a=pk pk=(@bp1-0.8)*@bf(pk/pz)+@bp2-0.5 pz=(pz+a)^2/2+@c elseif @v==5 pk=@bp1*@bf(pk/pz)+@bp2 pz=(pz-pk)^2+@c+0.3 elseif @v==6 pk=(@bp1+0.4)*@bf(pk^2/pz)+@bp2-0.15 pz=pz^2+pk^2+@c-0.44 elseif @v==7 a=pk pk=@bp1*@bf(pk^2/pz)+@bp2-0.25 pz=pz^2+a^2+@c else pk=(@bp1-0.2)*@bf(pk/pz^2)+@bp2 pz=pz^2+pk^2+@c-0.25 endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v==0 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+pk2^2+@c elseif @v==1 a=pk2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+a^2+@c-1.1 elseif @v==2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2-pk2^2+@c elseif @v==3 pk2=(@bp1-0.15)*@bf(pk2/pz)+@bp2 pz=(pz+pk2)^2+@c elseif @v==4 a=pk2 pk2=(@bp1-0.8)*@bf(pk2/pz)+@bp2-0.5 pz=(pz+a)^2/2+@c elseif @v==5 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=(pz-pk2)^2+@c+0.3 elseif @v==6 pk2=(@bp1+0.4)*@bf(pk2^2/pz)+@bp2-0.15 pz=pz^2+pk2^2+@c-0.44 elseif @v==7 a=pk2 pk2=@bp1*@bf(pk2^2/pz)+@bp2-0.25 pz=pz^2+a^2+@c else pk2=(@bp1-0.2)*@bf(pk2/pz^2)+@bp2 pz=pz^2+pk2^2+@c-0.25 endif return pz return pk2 endif endfunc default: title="Bivar Julia" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9" endparam param c caption="Julia Seed" default=(0.1,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar function" default=ident() endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_BivarSiegelJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) a=(0,0) pk=pz return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=exp(@sjp*1i)*(pz+pk)+pz^2+pk^2 else a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=exp(@sjp*1i)*(pz+a)+pz^2+a^2 endif return pz return pk endfunc default: title="Bivar Siegel Julia" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param bp1 caption="Bivar Parameter 1" default=(0.25,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.075,0) endparam param sjp caption="SJ Parameter" default=0.0 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Wufu2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 return exp(@wp2*1i)*pz^2/(pz^9-pz+@wp1)+@c endfunc default: title="Wufu 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Wufu Parameter 1" default=(0.2,0) endparam param wp2 caption="Wufu Parameter 2" default=0.0 endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod5(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz-@p1*(f/f1)*((f/f1)*(f^2/(2*f1))*(2*(f^2/(2*f1))+1)+1)+@p3+0.05*@pf(fpixel) endfunc default: title="Rootmod 5" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp default=(1,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(-0.4,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Cactus(common.ulb:DivergentFormula) { ;Formula from Wolfram Mathworld, with added parameters ;http://mathworld.wolfram.com/CactusFractal.html public: complex func Init(complex pz) fPixel=pz return @sf(pz) endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 return pz^3+(@p2*@pf(fpixel)-@p1)*pz-@p2*@pf(fpixel) endfunc default: title="Cactus" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Cactus Parameter" default=(1,0) endparam param p2 caption="Pixel Parameter" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod6(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) if @st==0 return pz-@p1*(f/f1)*(f^2/(2*f1))*((f/f1)+(f^2/(2*f1)))/((f/f1)-(f^3/(6*f1)))+@p3+0.1*@pf(fpixel) else return pz-@p1*(f/f1)*(f^2/(2*f1))*((f/f1)+(f^2/(2*f1)))/((f/f1)-(f^3/(6*f1)))+0.1*@pf(fpixel) endif endfunc default: title="Rootmod 6" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(1.25,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_BivarDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @jm==0 pz=@sf(pz) else pz=@sp endif pk=pz return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) pz=@pzp1*@lf(pz)+@pzp2 pk=@pkp1*@lf(pk)+@pkp2 if @v==0 pk=@bp1*@bpf(pk/pz)+@bp2 if @jm==0 pz=pz^@pow1+@p1/(pz-@p2)^@pow2+pk^@pow1+@p1/(pk-@p2)^@pow2 else pz=pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2+pk^@pow1+@pf(fpixel)/(pk-@p2)^@pow2 endif else a=pk pk=(@bp1+0.35)*@bpf(pk/pz)+@bp2 if @jm==0 pz=pz^@pow1+@p1/(pz-@p2)^@pow2+a^@pow1+@p1/(a-@p2)^@pow2 else pz=pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2+a^@pow1+@pf(fpixel)/(a-@p2)^@pow2 endif endif return pz return pk endfunc default: title="Bivar Devaney" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.05,0) visible=@jm==1 endparam param p1 caption="Julia Seed" default=(-0.55,0) visible=@jm==0 endparam param p2 caption="Modification Parameter" default=(2,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.3,0) endparam func bpf caption="Bivar Function" default=ident() endfunc func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func lf caption="Loop Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Devaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 if @jm==0 return pz^@pow1+@p1/(pz-@p2)^@pow2 else return pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2 endif endfunc default: title="Devaney" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param p1 caption="Julia Seed" default=(-0.01,-0.01) visible=@jm==0 endparam param p2 caption="Modification Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param pow1 caption="Exponent !" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarGlynn(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) pk=pz return pz return pk endfunc private: complex pk complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^1.5+pk^1.5+@c return pz return pk endfunc default: title="Bivar Glynn" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param c caption="Julia Seed" default=(-0.2,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=cos() endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Glynn(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 return pz^1.5+@p1 endfunc default: title="Glynn" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Julia Seed" default=(-0.2,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_iMod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=@i fpixel=pz if @jm==0 return @sf(pz) else if @st==0 return @sp else return @sf(pz) endif endif endfunc private: complex fpixel int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @jm==0 if @v==0 return pz-@p3*(pz+@p1)^i/(3*(pz+@p2)^2) else return pz-@p3*(pz+@p1)^3/(i*(pz+@p2)^(i-1)) endif else if @v==0 return pz-@pf(fpixel)*(pz+@p1)^i/(3*(pz+@p2)^2) else return pz-@pf(fpixel)*(pz+@p1)^3/(i*(pz+@p2)^(i-1)) endif endif endfunc default: title="Newton iMod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param i caption="Initial i" default=0 endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@jm==1 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 && @st==0 endparam param p1 caption="iMod Parameter 1" default=(0,0) endparam param p2 caption="iMod Parameter 2" default=(0,0) endparam param p3 caption="Newton Parameter" default=(1,0) visible=@jm==0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 || (@jm==1 && @st==1) endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000000001 exponential=true endparam } class OM_TrivarJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 elseif @sv==1 pz=@sf(pz) pk=@sp1 pw=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sf(pz) pw=@sf(pz) else pz=@sp1-0.6 pk=@sf(pixel) pw=@sf(pixel) endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@c elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@c elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@c else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^2+@c endif return pz return pk return pw endfunc default: title="Trivar Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp1 caption="Start Parameter" default=(0.05,0) visible=@sv!=2 endparam param sp2 caption="Start Parameter 2" default=(0.05,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Loop Variant" enum="1""2""3""4" endparam param c caption="Julia Seed" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 else pz=@sf(pz)+@sp1+@sp2 pk=@sp1 pw=@sp2 endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex fpixel complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@pf(fpixel) elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@pf(fpixel) elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@pf(fpixel) else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^2+@pf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2" endparam param sp1 caption="Start Parameter 1" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) endparam func sf caption="Start Function" default=ident() endfunc param v caption="Loop Variant" enum="1""2""3""4" endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod7(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(f/f1)*(((f/f1)*(f^2/(2*f1)))^2+1)/((f/f1)*(f^2/(2*f1))-1)+@p3 endfunc default: title="Rootmod 7" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Rootmod Parameter 1" default=(-0.41,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod7Nova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz return @sp endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(f/f1)*(((f/f1)*(f^2/(2*f1)))^2+1)/((f/f1)*(f^2/(2*f1))-1)+0.25*@pf(fpixel) endfunc default: title="Rootmod 7 Nova" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(1.25,0) endparam param p1 caption="Rootmod Parameter 1" default=(-0.41,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param pp caption="Pixel Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_TrivarCactus(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) pz=@sf(pz) pk=@sp1 pw=@sp2 return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex fpixel complex func Iterate(complex pz) pz=@zp1*@lf(pz)+@zp2 pk=@kp1*@lf(pk)+@kp2 pw=@wp1*@lf(pw)+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^3+pk^3+pw^3+(@p2*@pf(fpixel)-@p1)*(pz+pk+pw)-@p2*@pf(fpixel) elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^3+a^3+b^3+(@p2*@pf(fpixel)-@p1)*(pz+a+b)-@p2*@pf(fpixel) elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^3+(@p2*@pf(fpixel)-@p1)*(pz+pk+pw)-@p2*@pf(fpixel) else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^3+(@p2*@pf(fpixel)-@p1)*(pz+a+b)-@p2*@pf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar Cactus" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param p1 caption="Cactus Parameter" default=(1,0) endparam param p2 caption="Pixel Parameter" default=(0.5,0) endparam param sp1 caption="Start Parameter 1" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc func lf caption="Loop Function" default=ident() endfunc param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarX51(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) a=(0,0) fpixel=pz pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex a complex fpixel complex pk complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)+((1-@p1)*(pk^3-@p2)+@p1*pk^2)/((1-@p1)*3*pk^2+@p1) elseif @jm==1 pz=@p2*((1-@p1)*(pz^3-@pf(fpixel))+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)\ +@p2*((1-@p1)*(pk^3-@pf(fpixel))+@p1*pk^2)/((1-@p1)*3*pk^2+@p1) else pz=@p1*((1-@pf(fpixel))*(pz^3-(@p2+0.9))+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel))\ +@p1*((1-@pf(fpixel))*(pk^3-(@p2+0.9))+@pf(fpixel)*pk^2)/((1-@pf(fpixel))*3*pk^2+@pf(fpixel)) endif else if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)+((1-@p1)*(a^3-@p2)+@p1*a^2)/((1-@p1)*3*a^2+@p1) elseif @jm==1 pz=@p2*((1-@p1)*(pz^3-@pf(fpixel))+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)\ +@p2*((1-@p1)*(a^3-@pf(fpixel))+@p1*a^2)/((1-@p1)*3*a^2+@p1) else pz=@p1*((1-@pf(fpixel))*(pz^3-(@p2+0.9))+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel))\ +@p1*((1-@pf(fpixel))*(a^3-(@p2+0.9))+@pf(fpixel)*a^2)/((1-@pf(fpixel))*3*a^2+@pf(fpixel)) endif endif return pz return pk endfunc default: title="Bivar X 51" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="X Parameter 1" default=(-1.5,0) endparam param p2 caption="X Parameter 2" default=(-1.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_IFB84(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) if real(fn2(pz))*imag(@p3)+real(@p3)*imag(fn2(pz))>=0 pz=(@p2+1i)*pz/@p1 else pz=1-(@p2-1i)*pz/@p1 endif return pz endfunc default: title="IFB 84" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="IFB Parameter 1" default=(1.06,-0.63) endparam param p2 caption="IFB Parameter 2" default=(1,0) endparam param p3 caption="IFB Parameter 3" default=(0,-1) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_MannJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return @p1*(pz^@pow-@p2)+(1-@p1)*pz endfunc default: title="Mann Julia" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Mann Parameter 1" default=(-0.34379,0.20904) endparam param p2 caption="Mann Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MannMandel(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz return @sp endfunc private: complex fpixel complex func Iterate(complex pz) return @p1*(pz^@pow-1)+(1-@p1)*pz+@pf(fpixel) endfunc default: title="Mann Mandel" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Mann Parameter" default=(-0.4,0) endparam param pow caption="Exponent" default=3 endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarMannJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex pk complex a complex func Iterate(complex pz) if @v==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(a^@pow-@p2)+(1-@p1)*a else pk=@bp1*@bf(pk/pz)+@bp2 pz=(@p1-0.1)*(pz^@pow-@p2)+(1-(@p1-0.1))*pz+(@p1-0.1)*(pk^@pow-@p2)+(1-(@p1-0.1))*pk endif return pz return pk endfunc default: title="Bivar Mann Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption= "Start Variant" enum="1""2""3" endparam param v caption="Bivar Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@sv!=0 endparam param p1 caption="Mann Parameter 1" default=(-0.1,0) endparam param p2 caption="Mann Parameter 2" default=(0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_BivarMannMandel(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @sv==0 pz=@sp pk=pz elseif @sv==1 pz=@sf(pz) pk=pz elseif @sv==2 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex pk complex a complex fpixel complex func Iterate(complex pz) if @v==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(a^@pow-@p2)+(1-@p1)*a+@pf(fpixel) else pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(pk^@pow-@p2)+(1-@p1)*pk+@pf(fpixel) endif return pz return pk endfunc default: title="Bivar Mann Mandel" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption= "Start Variant" enum="1""2""3""4" endparam param v caption="Bivar Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@sv!=1 endparam param p1 caption="Mann Parameter 1" default=(-0.1,0) endparam param p2 caption="Mann Parameter 2" default=(0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=0 endfunc func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_BivarUshon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) a=pk pk=@bp1*@bf(pk/pz) if @jm==0 pz=(pz^2-@p1)^2/(2*pz*(pz-1)*(pz-@p1))+(a^2-@p1)^2/(2*a*(a-1)*(a-@p1))+@p2 else pz=(pz^2-@p1)^2/(2*pz*(pz-1)*(pz-@p1))+(a^2-@p1)^2/(2*a*(a-1)*(a-@p1))+@p3*@pf(fpixel) endif return pz endfunc default: title="Bivar Ushon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="Ushon Parameter" default=(-0.5,0) endparam param p2 caption="julia Seed" default=(0,0) visible=@jm==0 endparam param p3 caption="Pixel Parameter" default=(1,0) visible=@jm==1 endparam param bp1 caption="Bivar Parameter" default=(1,0) endparam func bf caption="Bivar Function" default=ident() endfunc func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_Ushon(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) m_ZOld=pz if @jm==0 pz=(pz^2-@p2)^2/(@p1*pz*(pz-1)*(pz-@p2))+@c elseif @jm==1 pz=(pz^2-@pf(fpixel))^2/(@p1*pz*(pz-1)*(pz-@pf(fpixel))) else pz=(pz^2-(@p2-0.5))^2/(@p1*pz*(pz-1)*(pz-(@p2-0.5)))+@pf(fpixel) endif return pz endfunc default: title="Ushon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Ushon Parameter" default=(2,0) endparam param p2 caption="Ushon Parameter 2" default=(-1,0) visible=@jm!=1 endparam param c default=(0,0) caption="Julia Seed" visible=@jm==0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Confon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fPixel complex func Iterate(complex pz) if @jm==0 return (1-@p1)*(@p2*pz+@p3*pz^2)+@p1*cos(@p4*pz+@p5*pz^2) else return (1-@pf(fpixel))*(@p2*pz+@p3*pz^2)+@pf(fpixel)*cos(@p4*pz+@p5*pz^2) endif endfunc default: title="Confon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p1 caption="Julia Parameter" default=(-1.4,0) visible=@jm==0 endparam param p2 caption="Confon Parameter 1" default=(0.5,0) endparam param p3 caption="Confon Parameter 2" default=(0.5,0) endparam param p4 caption="Confon Parameter 3" default=(-1.5,0) endparam param p5 caption="Confon Parameter 4" default=(-0.8,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Magnezium(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @st==0 return @sp else return @sf(pixel) endif endfunc private: complex fPixel complex func Iterate(complex pz) pz=pz^2 return (pz+@pf(fpixel))/(pz-1) endfunc default: title="Magnezium" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam func sf caption="Start Function" default=sin() visible=@st==1 endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Beezie(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) return @sp endfunc private: complex c complex func Iterate(complex pz) pz=2-pz^2-@p1*cos(c) c=c-0.1+pz^2/2 return pz return c endfunc default: title="Beezie" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Beezie Parameter" default=(2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_TrivarJulia2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 else if @version <101 pz=@sf(pz) pk=@sp1 pw=@sf(pz) else pw=@sf(pz) pz=@sf(pz) pk=@sp1 endif endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex func Iterate(complex pz) pz=@zp1*@lf(pz)+@zp2 pk=@kp1*@lf(pk)+@kp2 pw=@wp1*@lf(pw)+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@c+@p1*pw+@p2*pz+@p3*pk elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@c+@p1*b+@p2*pz+@p3*a elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz-pk-pw)^2+@c+@p1*pw+@p2*pz+@p3*pk elseif @v==3 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2-a^2-b^2+@c+@p1*b+@p2*pz+@p3*a elseif @v==4 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz-pk-pw)^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw elseif @v==5 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2-a^2-b^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw elseif @v==6 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@c+@p1*pw+@p2*pz+@p3*pk else pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+(pk+pw)^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw endif return pz return pk return pw endfunc default: title="Trivar Julia 2" int param version caption="Version" default=101 visible=@version<101 endparam param sv caption="Start Variant" enum="1""2" endparam param v caption="Loop Variant" enum="1""2""3""4""5""6""7""8" default=2 endparam param sp1 caption="Start Parameter" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param c caption="Julia Seed" default=(0.2,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam param p1 caption="Bivar Parameter 5" default=(1,0) endparam param p2 caption="Bivar Parameter 6" default=(-0.4,0) endparam param p3 caption="Bivar Parameter 7" default=(1,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func lf caption="Loop Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Branner-Fagella(common.ulb:DivergentFormula) { ;Formula from https://en.wikibooks.org/wiki/Fractals/mandel#Wake public: complex func Init(complex pz) fPixel=pz if @st==0 return @sp else return @sf(pz) endif endfunc private: complex fPixel complex func Iterate(complex pz) return @pf(fpixel)*pz*(1+pz/@pow)^@pow endfunc default: title="Branner-Fagella" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0.3,0) visible=@st==0 endparam param pow caption="Exponent" default=(4,0) endparam func sf caption="Start Function" default=ident() visible=@st==1 endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Ahtanu(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @v==0 || @v==1 return @sp else return @sp+1 endif endfunc private: complex fPixel complex func Iterate(complex pz) if @v==0 pz=@p2*1i*pz elseif @v==1 pz=(@p2-0.7)*1i*pz elseif @v==2 pz=(@p2-1.1)*1i*pz else pz=(@p2-2.9)*1i*pz endif if @v==0 pz=exp(@p3*1i)*pz^2*(cos(@p1*tan(pz))+1i*sin(@p1*tan(pz)))+@pf(fpixel) elseif @v==1 pz=exp(@p3*1i)*pz^2*(cos(@p1*tanh(pz))+1i*sin(@p1*tanh(pz)))+@pf(fpixel) elseif @v==2 pz=exp(@p3*1i)*pz^2*(cos(@p1*cotan(pz))+1i*sin(@p1*cotan(pz)))+@pf(fpixel) else pz=exp(@p3*1i)*pz^2*(cos(@p1*cotanh(pz))+1i*sin(@p1*cotanh(pz)))+@pf(fpixel) endif return pz endfunc default: title="Ahtanu" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Ahtanu Parameter 1" default=(1,0) endparam param p3 caption="Ahtanu Parameter 2" default=0.0 endparam param p2 caption="Z Parameter" default=1.9 endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_BivarJulia3(common.ulb:DivergentFormula) { ;Modification of a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) a=(0,0) pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) a=pk if @v==0 pk=@bp1*@bf(pk/pz+pz/pk)/4+@bp2 elseif @v==1 pk=@bp1*@bf(pk/pz-pz/pk)/4+@bp2 elseif @v==2 pk=@bp1*@bf(pk^2/pz+pz/pk)/4+@bp2 elseif @v==3 pk=@bp1*@bf(pk^2/pz-pz/pk)/4+@bp2 elseif @v==4 pk=@bp1*@bf(pk/pz+pz/pk^2)/4+@bp2 elseif @v==5 pk=@bp1*@bf(pk/pz-pz/pk^2)/4+@bp2 elseif @v==6 pk=@bp1*@bf(pk^2/pz+pz/pk^2)/4+@bp2 elseif @v==7 pk=@bp1*@bf(pk^2/pz-pz/pk^2)/4+@bp2 endif if @v2==0 pz=a^2+pz^2+@p3 elseif @v2==1 pz=a^2+pz^3+@p3 elseif @v2==2 pz=a^2+pz^4+@p3 elseif @v2==3 pz=a^2+pz^2+a*pz+@p3 elseif @v2==4 pz=a^2+pz^3+a*pz^2+@p3 else pz=a^2+pz^4+a*pz^3+@p3 endif return pz return pk endfunc default: title="Bivar Julia 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant 1" enum="1""2""3""4""5""6""7""8" endparam param v2 caption="Variant 2" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.5,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX52(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) if @sv==0 pk=@sf(pz) pz=@sp else pk=@sp+1.75 pz=@sf(pz) endif return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 a=pk pk=@bp*pk/pz pz=@p1*(2*@p2)^(1-pz)/(pz*(1-pz))+@p1*(2*@p2)^(1-a)/(a*(1-a))+@p2 return pz return pk endfunc default: title="Bivar X 52" int param version caption="Version" default=100 visible=@version<100 endparam param @sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.5,0) endparam param p1 caption="X Parameter 1" default=(0.25,0) endparam param p2 caption="X Parameter 2" default=(0.5,0) endparam param bp caption="Bivar Parameter" default=(0.65,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarX53(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @sv==0 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp-2.05 endif return pz return pk endfunc private: complex a complex pk complex fpixel complex func Iterate(complex pz) if @sv==0 pz=@zp1*pz+@zp2 else pz=(@zp1+0.2)*pz+@zp2 endif a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=((pz*@pf(fpixel)-@p2)^2-@p2)^2+((a*@pf(fpixel)-@p2)^2-@p2)^2-2*@p2 return pz return pk endfunc default: title="Bivar X 53" int param version caption="Version" default=100 visible=@version<100 endparam param @sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.45,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param p2 caption="X Parameter" default=0.75 endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarBudarning(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) a=(0,0) if @sv==0 pk=@sf(pz) pz=@sp elseif @sv==1 pz=@sf(pz) pk=@sp-0.75 elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sf(pz) endif return pz return pk endfunc private: complex a complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 pz=pz^2-c*(pz^2-c*(pz^2-c*(pz^2-c)))+a^2-c*(a^2-c*(a^2-c*(a^2-c)))+@p1 elseif @v==1 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2-c)))+a^2+c*(a^2-c*(a^2+c*(a^2-c)))+@p1 elseif @v==2 pz=pz^2-c*(pz^2+c*(pz^2+c*(pz^2+c)))+a^2-c*(a^2+c*(a^2+c*(a^2+c)))+@p1 elseif @v==3 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2+c)))+a^2+c*(a^2-c*(a^2+c*(a^2+c)))+@p1 elseif @v==4 pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2+c)))+a^2+c*(a^2+c*(a^2-c*(a^2+c)))+@p1 elseif @v==5 pz=pz^2+c*(pz^2+c*(pz^2+c*(pz^2-c)))+a^2+c*(a^2+c*(a^2+c*(a^2-c)))+@p1 else pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2-c)))+a^2+c*(a^2+c*(a^2-c*(a^2-c)))+@p1 endif return pz return pk endfunc default: title="Bivar Budarning" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2""3""4""5""6""7" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=3 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param p1 caption="Budarning Parameter" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Budarning(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) return @sp endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2-c*(pz^2-c*(pz^2-c*(pz^2-c)))+@p1 elseif @v==1 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2-c)))+@p1 elseif @v==2 pz=pz^2-c*(pz^2+c*(pz^2+c*(pz^2+c)))+@p1 elseif @v==3 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2+c)))+@p1 elseif @v==4 pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2+c)))+@p1 elseif @v==5 pz=pz^2+c*(pz^2+c*(pz^2+c*(pz^2-c)))+@p1 else pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2-c)))+@p1 endif return pz endfunc default: title="Budarning" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Budarning Parameter" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Mogotrevo(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if real(pz)@p_bailout) return bail endfunc default: title="Trivar X 13" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param v caption="Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="X Parameter 1" default=(-0.8,0) endparam param p2 caption="X Parameter 2" default=(0.4,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p6 caption="X Parameter 6" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_TrivarX9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if@jm==0 if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==3 pz=@sf(pz) pk=@sp pw=pz elseif @sv==4 pk=@sf(pz)-@sp pw=@sf(pz)+@sp pz=@sf(pz)-@sp else pk=@sf(pz)-@sp pz=@sf(pz) pw=@sp endif else if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sp pk=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp elseif @sv==3 pk=@sf(pz) pz=@sp pw=@sp elseif @sv==4 pk=@sf(pz)+@sp pw=@sf(pz)+@sp pz=@sf(pz)+@sp else pk=@sf(pz)+@sp pw=@sf(pz) pz=@sp endif endif return pz return pk return pw endfunc private: complex pk complex pw complex fpixel complex func Iterate(complex pz) if @jm==0 if @v==0 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*pw*pk-@p5*pz elseif @v==1 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*cos(pw)*pk-@p5*pz elseif @v==2 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*exp(pw)*pk-@p5*pz elseif @v==3 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*pw*exp(pk)-@p5*pz else pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*cosh(pw)*pk-@p5*tan(pz) endif else if @v==0 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*pw*pk-@p5*pz elseif @v==1 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*cos(pw)*pk-@p5*pz elseif @v==2 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*exp(pw)*pk-@p5*pz elseif @v==3 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*pw*exp(pk)-@p5*pz else pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*cosh(pw)*pk-@p5*tan(pz) endif endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar X 9" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Loop Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() visible=(@sv!=1 && @jm==1) || @jm==0 endfunc param sp caption="Start Parameter" visible=@sv!=0 default=(0.5,0) endparam param p1 caption="X Parameter 1" default=(0.75,0) endparam param p2 caption="X Parameter 2" default=(0.5,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(0.9,0) endparam param p5 caption="X Parameter 5" default=(-0.5,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX10(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz b=(0,0) if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sf(pz) pk=@sp pw=pz elseif @sv==2 pk=@sf(pz) pz=@sp pw=@sp else pz=@sf(pz) pk=pz+@sp pw=pz-@sp endif return pz return pk return pw endfunc private: complex fpixel complex pk complex pw complex b complex func Iterate(complex pz) b=pk pw=@p1*@xf(pk) pk=@p2*pw-pk-pw*pz pz=@p3*pz+pw*pk pw=@p1*pk pk=@p4*pw-pk-pw*pz if @jm==0 pz=@p3*pz-pw*b else pz=@p3*pz-pw*b+@sf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar X 10" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=flip() endfunc param sp caption="Start Parameter" default=(-4,0) visible=@sv!=0 endparam param p1 caption="X Parameter 1" default=(0.2,0) endparam param p2 caption="X Parameter 2" default=(-1.5,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(-0.5,0) endparam func xf caption="X Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=200.0 exponential=true endparam } class OM_TrivarX11(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sf(pz) pk=@sp pw=pz elseif @sv==1 pk=@sf(pz) pz=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp-0.5 else pw=@sf(pz) pz=@sp+0.5 pk=@sp+0.5 endif return pz return pk return pw endfunc private: complex fpixel complex pk complex pw complex func Iterate(complex pz) if @jm==0 pw=pk-pw+@c pk=-@p3*pz*@xf(pw) pz=-@p1+pw*pk+@p2*pk else pw=pk-pw+@sf(fpixel) pk=-@p3*pz*@xf(pw) pz=-@p1+pw*pk+@p2*pk endif return pz return pk return pw endfunc default: title="Trivar X 11" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam func xf caption="X Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(-0.1,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX12(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=pz pw=@sp elseif @sv==2 pz=@sf(pz) pk=@sp pw=pz else pk=@sf(pz) pz=@sp pw=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) if @jm==0 pw=@p1*(pk-pw)+@p2*pw*pz+@c pk=@p3*pw-pw*pz+@p4*pk pz=@p5*pz+pw*pk-@p6*pw^2 else pw=@p1*(pk-pw)+@p2*pw*pz+c pk=@p3*pw-pw*pz+@p4*pk pz=@p5*pz+pw*pk-@p6*pw^2 endif return pz return pk return pw endfunc default: title="Trivar X 12" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.5,0) endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(0.25,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p6 caption="X Parameter 6" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TetravarX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz pw=pz pq=pz elseif @sv==1 pw=@sf(pz) pq=@sf(pz) pz=@sp pk=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp pq=@sp elseif @sv==3 pk=@sf(pz) pq=@sf(pz) pz=@sp pw=@sp elseif @sv==4 pz=@sf(pz) pk=@sp pw=pz pq=@sp elseif @sv==5 pz=@sf(pz) pk=@sp pw=@sp pq=pz else pk=@sf(pz) pw=@sf(pz) pz=@sp pq=@sp endif return pz return pq return pk return pw endfunc private: complex pk complex pw complex pq complex c complex func Iterate(complex pz) if @jm==0 pw=pq*(-pk-@p1)+(1-pq)*(pz+@p1) pk=pq*(pw+@p2-1)+pk*(1-pq)*(pz+@p1)/(pw+@p3-1) pz=pq*pz*(-pk-@p1)/(pw-@p3)+(1-pq)*(@p2-pw) pq=@p4*(pq*(1-pq)*(pq-1+pw)-@p5*(pq-0.5))+@c else pw=pq*(-pk-@p1)+(1-pq)*(pz+@p1) pk=pq*(pw+@p2-1)+pk*(1-pq)*(pz+@p1)/(pw+@p3-1) pz=pq*pz*(-pk-@p1)/(pw-@p3)+(1-pq)*(@p2-pw) pq=@p4*(pq*(1-pq)*(pq-1+pw)-@p5*(pq-0.5))+c endif return pz return pw return pk return pq endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw+pq)/4|>@p_bailout) return bail endfunc default: title="Tetravar X 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7" default=3 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarKoskex(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) if @jm==0 pz=@sf(pz) pk=pz else pz=@sp pk=pz endif return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 if @jm==0 pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(a^3-@p3*@p1*a^2))/(a+@p1/@p3)+@c else pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(a^3-@p3*@p1*a^2))/(a+@p1/@p3)+@pf(fpixel) endif else if @jm==0 pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(pk^3-@p3*@p1*pk^2))/(pk+@p1/@p3)+@c else pz=(@p2*(pz^3-(@p3-1.15)*@p1*pz^2))/(pz+@p1/(@p3-1.15))+(@p2*(pk^3-(@p3-1.15)*@p1*pk^2))/(pk+@p1/(@p3-1.15))+@pf(fpixel) endif endif return pz return pk endfunc default: title="Bivar Koskex" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param p1 caption="Koskex Parameter 1" default=(1,0) endparam param p2 caption="Koskex Parameter 2" default=(-0.5,0) endparam param p3 caption="Koskex Parameter 3" default=(-2.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.37,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Koskex(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) if @jm==0 return @p2*(pz^3-@p3*@p1*pz^2)/(pz+@p1/@p3)+@c else return @p2*(pz^3-@p3*@p1*pz^2)/(pz+@p1/@p3)+@pf(fpixel) endif endfunc default: title="Koskex" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param p1 caption="Koskex Parameter 1" default=(1,0) endparam param p2 caption="Koskex Parameter 2" default=(-0.5,0) endparam param p3 caption="Koskex Parameter 3" default=(-2.25,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX14(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) fpixel=pz c=@sf(fpixel) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp elseif @sv==3 pk=@sf(pz) pw=@sf(pz) pz=@sp else pz=@sf(pz) pk=pz pw=pz endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex c complex func Iterate(complex pz) a=pw b=pk if @jm==0 pw=@p1*fn1(recip(pw/pk/pz))+@p2 pk=pk^2+pz^2 pz=b^2+pz^2+a^2+@c else pw=@p1*fn1(recip(pw/pk/pz))+@p2 pk=pk^2+pz^2 pz=b^2+pz^2+a^2+c endif return pz return pk return pw endfunc default: title="Trivar X 14" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.33,0) visible=@sv!=4 endparam param c caption="Julia Seed" default=(-0.25,0) visible=@jm==0 endparam param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam func fn1 caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_BivarCombone1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) pz=@sf(pz) pk=pz return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) a=pk pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)-3+pk+@c pk=pk^2+((pk^2+@p1-1)/(2*pk+@p1-2))^2+@p2*pk^2*(pk-@p3)/(1-@p3*pk)-3+a+@c return pz return pk endfunc default: title="Bivar Combone 1" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarCombone2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz c=@pf(fpixel) if @jm==0 pz=@sf(pz) pk=pz else pz=@sp pk=pz endif return pz return pk endfunc private: complex c complex a complex pk complex func Iterate(complex pz) a=pk if @jm==0 pk=@bp1*pk/pz+@bp2 else pk=(@bp1-0.5)*pk/pz+@bp2 endif if @jm==0 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+@c elseif @jm==1 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+c elseif @jm==2 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3*c)/(1-@p3*c*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3*c)/(1-@p3*c*a)-3+c else pz=pz^2+((pz^2+@p1*c-1)/(2*pz+@p1*c-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1*c-1)/(2*a+@p1*c-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+c endif return pz return pk endfunc default: title="Bivar Combone 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" default=3 endparam param sp caption="Start Parameter" default=(0.3,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param bp1 caption="Bivar Parameter 1" default=(-0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Combone(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@pf(fpixel) if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex c complex func Iterate(complex pz) if @jm==0 return pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)-3+@c elseif @jm==1 return pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+c-3 else return pz^2+((pz^2+@p1*c-1)/(2*pz+@p1*c-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+c-3 endif endfunc default: title="Combone" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX15(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 if @jm==1 pz=@sp pk=pz pw=pz else pk=@sp-@sf(pz) pw=@sp-@sf(pz) pz=@sp+@sf(pz) endif elseif @sv==2 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==3 pz=@sf(pz) pk=pz pw=@sp elseif @sv==4 if @jm==1 pz=@sf(pz) pk=@sp pw=pz else pz=@sf(pz) pk=@sp pw=@sp endif else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex pk complex pw complex c complex func Iterate(complex pz) if @jm==0 pw=(@p1-0.9925)-@p2*(pk^2-pz^2)-(@p3-0.5)*pw^3 pk=(@p1-0.9925)-@p2*(pw^2-pz^2)-@p4*pk^3 pz=(@p1-0.9925)-@p2*(pw^2-pk^2)-@p5*pz^3 else pw=@p1-@p2*(pk^2-pz^2)-@p3*c*pw^3 pk=@p1-@p2*(pw^2-pz^2)-@p4*c*pk^3 pz=@p1-@p2*(pw^2-pk^2)-@p5*c*pz^3 endif return pz return pk return pw endfunc default: title="Trivar X 15" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(0.5,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_TrivarX16(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=-@sf(pz) pk=-pz pw=-pz elseif @sv==2 pz=-@sf(pz) pk=pz pw=-pz else pz=@sf(pz) pk=-pz pw=pz endif else if @sv==0 pz=@sp pk=@sp pw=@sp elseif @sv==1 pz=-@sp pk=@sp pw=@sp elseif @sv==2 pz=-@sp pk=-@sp pw=@sp else pz=@sp pk=-@sp pw=@sp endif endif return pz return pk return pw endfunc private: complex pk complex pw complex c complex func Iterate(complex pz) pw=fn1(pw) pk=fn2(pk) pz=fn3(pz) if @jm==0 pw=@p1*pw*(1-pw)+@p2*pz pk=@p1*pk*(1-pk)+@p2*pw pz=pk+@c else pw=@p1*pw*(1-pw)+@p2*pz pk=@p1*pk*(1-pk)+@p2*pw pz=pk+c endif return pz return pk return pw endfunc default: title="Trivar X 16" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4" visible=(@jm!=1 || @sp!=0) endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param c caption="Julia Seed" default=(-1.3,0) visible=@jm==0 endparam param p1 caption="X Parameter 1" default=(-0.6,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam func fn1 caption="W Function" default=ident() endfunc func fn2 caption="K Function" default=ident() endfunc func fn3 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_MunsterValmyst(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return @sf(pz) endfunc private: complex fPixel int i complex z_values[@p1] complex func Iterate(complex pz) i=i+1 if @vmv==0 if i<@p1 z_values[i]=@p2*pz+@p3 endif elseif @vmv==1 if i<@p1 z_values[i]=@p2*sqr(pz)+@p3 endif elseif @vmv==2 if i<@p1 z_values[i]=@p2*tanh(pz)+@p3 endif elseif @vmv==3 if i<@p1 z_values[i]=pz+@p2*pz^2+@p3 endif elseif @vmv==4 if i<@p1 z_values[i]=pz+@p2*exp(pz)^2+@p3 endif elseif @vmv==5 if i<@p1 z_values[i]=pz+@p2*cos(pz)^2+@p3 endif elseif @vmv==6 if i<@p1 z_values[i]=pz-@p2/pz+@p3 endif elseif @vmv==7 if i<@p1 z_values[i]=pz+@p2/sqr(pz)+@p3 endif elseif @vmv==8 if i<@p1 z_values[i]=pz-@p2/exp(pz)+@p3 endif elseif @vmv==9 if i<@p1 z_values[i]=pz-@p2/cotan(pz)+@p3 endif elseif @vmv==10 if i<@p1 z_values[i]=pz-@p2/tan(pz)+@p3 endif else if i<@p1 z_values[i]=pz-@p2/cosh(pz)+@p3 endif endif if @jm==0 pz=@p5*pz^2*(pz-(z_values[i]))/(1-(z_values[i])*pz)+@p4 else pz=@p5*pz^2*(pz-@sf(fpixel)*(z_values[i]))/(1-@sf(fpixel)*(z_values[i])*pz)+@p4 endif return pz endfunc default: title="Munster Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam func sf caption="Start Function" default=ident() endfunc param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7"\ "8""9""10""11""12" endparam param p1 caption="Valmyst Parameter 1" default=6 endparam param p2 caption="Valmyst Parameter 2" default=(0.5,0) endparam param p3 caption="Valmyst Parameter 3" default=(0,0) endparam param p4 caption="Munster Parameter 1" default=(0.5,0) endparam param p5 caption="Munster Parameter 2" default=(0,2.5) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_MagnetValmyst(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) i=0 if @st==0 return @sf(pz) else return @sp endif endfunc private: complex c int i complex z_values[@p1] complex func Iterate(complex pz) if @v2==0 i=i+1 if i<@p1 z_values[i]=pz endif elseif @v2==1 if i<@p1 i=i+1 z_values[i]=pz endif elseif @v2==2 i=i+1 if i<@p1 z_values[i]=pz else z_values[i]=c endif elseif @v2==3 i=i+1 if i<@p1 z_values[i]=c else z_values[i]=pz endif else i=i+1 if i<@p1 z_values[i]=pz else z_values[i]=pz^2 endif endif if @v==0 pz=@p2*sqr(fn1(z_values[i]))+((pz^2+c-1)/(2*pz+c-2))^2 elseif @v==1 pz=@p2*sqr(cosh(fn1(z_values[i])))*((pz^2+c-1)/(2*pz+c-2))^2 elseif @v==2 pz=((pz^2+c*0.5*@p2*sqr(exp(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(exp(fn1(z_values[i])))-2))^2 elseif @v==3 pz=((pz^2+c*0.5*@p2*sqr(cos(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(cos(fn1(z_values[i])))-2))^2 else pz=((pz^2+c*0.5*@p2*sqr(cosh(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(cosh(fn1(z_values[i])))-2))^2 endif return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc default: title="Magnet Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Magnet Variant" enum="1""2""3""4""5" endparam param v2 caption="Valmyst Variant" enum="1""2""3""4""5" endparam param p1 caption="Valmyst Parameter 1" default=3 endparam param p2 caption="Valmyst Parameter 2" default=(1,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Divergent Bailout value" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout value" default=0.00005 exponential=true endparam } class OM_MandelbrotValmyst(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) i=0 if @st==0 return @sf(pz) else return @sp endif endfunc private: complex c int i complex z_values[@p2] complex func Iterate(complex pz) i=i+1 if @v==0 if i==@p2 z_values[i]=@p1*pz+@p3 endif elseif @v==1 if i==@p2 z_values[i]=@p1*pz^2+@p3 endif elseif @v==2 if i==@p2 z_values[i]=@p1*pz^3+@p3 endif elseif @v==3 if i==@p2 z_values[i]=@p1*(pz+c)*(pz-c)+@p3 endif elseif @v==4 if i==@p2 z_values[i]=@p1*pz^2*(pz-c)/(1-c*pz)+@p3 endif elseif @v==5 if i==@p2 z_values[i]=@p1*((pz^2+c-1)/(2*pz+c-2))^2+@p3 endif elseif @v==6 if i==@p2 z_values[i]=@p1*pz^3*(pz-3)/(1-3*pz)+@p3 endif elseif @v==7 if i==@p2 z_values[i]=@p1*pz^2*(pz-2)/(1-2*pz)+@p3 endif elseif @v==8 if i==@p2 z_values[i]=@p1*pz^2*(1-2*pz)/(pz-2)+@p3 endif elseif @v==9 if i==@p2 z_values[i]=@p1*exp(pz)+@p3 endif else if i==@p2 z_values[i]=@p1*(exp(pz)+sqr(pz))+@p3 endif endif return pz^@pow+c+z_values[i] endfunc default: title="Mandelbrot Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Valmyst Variant" enum="1""2""3""4""5""6""7"\ "8""9""10""11" endparam param p2 caption="Valmyst Parameter 1" default=6 endparam param p1 caption="Valmyst Parameter 2" default=(1,0) endparam param p3 caption="Valmyst Parameter 3" default=(0,0) endparam param pow caption="Mandelbrot Exponent" default=2 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_NewtonValmyst(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@sf(pz) i=0 return pz endfunc private: complex fpixel int i complex a[@p1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @v==0 if i<@p1 a[i]=pz endif elseif @v==1 if i<@p1 a[i]=pz+pz^2 endif elseif @v==2 if i<@p1 a[i]=pz-pz^2 endif elseif @v==3 if i<@p1 a[i]=pz+1/pz endif elseif @v==4 if i<@p1 a[i]=pz-1/pz endif elseif @v==5 if i<@p1 a[i]=pz-(pz^3-1)/(3*pz^2) endif elseif @v==6 if i<@p1 a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==7 if i<@p1 a[i]=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @v==8 if i<@p1 a[i]=pz^2*(pz+2)/(1+2*pz) endif elseif @v==9 if i<@p1 a[i]=pz^2*(pz+0.5)/(1+0.5*pz) endif elseif @v==10 if i<@p1 a[i]=((pz^2-1)/(2*pz-2))^2 endif elseif @v==11 if i<@p1 a[i]=((pz^2)/(2*pz-1))^2 endif elseif @v==12 if i<@p1 a[i]=((pz^2-2)/(2*pz-3))^2 endif elseif @v==13 if i<@p1 a[i]=1/pz endif elseif @v==14 if i<@p1 a[i]=-1/pz endif elseif @v==15 if i<@p1 a[i]=pz*fpixel^2 endif elseif @v==16 if i<@p1 a[i]=-pz*fpixel^2 endif elseif @v==17 if i<@p1 a[i]=pz*fpixel^2 else a[i]=pz^2*fpixel endif elseif @v==18 if i<@p1 a[i]=-pz*fpixel^2 else a[i]=+pz^2*fpixel endif elseif @v==19 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=-pz^2*fpixel^2 endif elseif @v==20 if i<@p1 a[i]=pz*fpixel^2 else a[i]=-pz^2*fpixel^2 endif elseif @v==21 if i<@p1 a[i]=pz^2*fpixel else a[i]=-pz^2*fpixel^2 endif elseif @v==22 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=-pz^2*fpixel endif elseif @v==23 if i<@p1 a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==24 if i<@p1 a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) else a[i]=pz^2*fpixel^2 endif elseif @v==25 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==26 if i<@p1 a[i]=pz^2*(pz+0.5)/(1+0.5*pz) else a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==27 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2 endif elseif @v==28 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=pz^2 endif elseif @v==29 if i<@p1 a[i]=pz*fpixel^2 else a[i]=pz^2 endif elseif @v==30 if i<@p1 a[i]=pz^2*fpixel else a[i]=pz^2 endif elseif @v==31 if i<@p1 a[i]=pz*fpixel else a[i]=pz^2 endif elseif @v==32 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel endif elseif @v==33 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel endif elseif @v==34 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel^2 endif elseif @v==35 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel^2 endif elseif @v==36 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==37 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==38 if i<@p1 a[i]=-pz+(pz^3-1)/(3*pz^2) else a[i]=pz^2*fpixel^2 endif elseif @v==39 if i<@p1 a[i]=pz+pz^2 elseif i==@p1 a[i]=pz else a[i]=pz-pz^2 endif elseif @v==40 if i<@p1 a[i]=pz^2*fpixel elseif i==@p1 a[i]=pz else a[i]=-pz^2 endif elseif @v==41 if i<@p1 a[i]=pz elseif i==@p1 a[i]=pz+1/pz else a[i]=pz+pz^2 endif else if i<@p1 a[i]=pz^2 elseif i==@p1 a[i]=pz*fpixel else a[i]=-pz^2 endif endif return pz-@p3*(pz^@ne-1)/(@ne*pz^(@ne-1))+@p2*fn1(a[i])^@ve+@p4 endfunc default: title="Newton Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43" endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Valmyst Parameter 1" default=6 endparam param p2 caption="Valmyst Parameter 2" default=(-0.625,0) endparam param p3 caption="Newton Parameter 1" default=(1,0) endparam param p4 caption="Newton Parameter 2" default=(0,0) endparam param ne caption="Newton Exponent" default=(3,0) endparam param ve caption="Valmyst Exponent" default=(1,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_AltNewton/JuliaValmyst(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=@v i2=0 pz=@sf(pz) return(pz) endfunc private: int i int i2 complex vm[@vm1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i2=i2+1 if @vmv==0 if i2<@vm1 vm[i2]=pz+@vm3 endif elseif @vmv==1 if i2<@vm1 vm[i2]=pz^2+@vm3 endif elseif @vmv==2 if i2<@vm1 vm[i2]=pz+pz^2+@vm3 endif elseif @vmv==3 if i2<@vm1 vm[i2]=pz-pz^2+@vm3 endif elseif @vmv==4 if i2<@vm1 vm[i2]=pz+1/pz+@vm3 endif elseif @vmv==5 if i2<@vm1 vm[i2]=pz-1/pz+@vm3 endif elseif @vmv==6 if i2<@vm1 vm[i2]=pz^2*(pz-0.5)/(1-0.5*pz)+@vm3 endif elseif @vmv==7 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)+@vm3 endif elseif @vmv==8 if i2<@vm1 vm[i2]=((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==9 if i2<@vm1 vm[i2]=pz+pz/(pz^2-1)+@vm3 endif elseif @vmv==10 if i2<@vm1 vm[i2]=pz/(pz^2-1)+@vm3 endif elseif @vmv==11 if i2<@vm1 vm[i2]=-pz/(pz^2-1)+@vm3 endif elseif @vmv==12 if i2<@vm1 vm[i2]=pz^2*(pz-0.5)/(1-0.5*pz)+pz-(pz^3-1)/(3*pz^2)+@vm3 endif elseif @vmv==13 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)+((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==14 if i2<@vm1 vm[i2]=((pz^2-1)/(2*pz-2))^2+pz^2*(pz-0.5)/(1-0.5*pz)+@vm3 endif elseif @vmv==15 if i2<@vm1 vm[i2]=pz-(4*pz^3)/(pz^4-1)+@vm3 endif elseif @vmv==16 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)-((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==17 if i2<@vm1 vm[i2]=pz^3*(pz-3)/(1-3*pz)+@vm3 endif elseif @vmv==18 if i2<@vm1 vm[i2]=recip(pz)+@vm3 endif elseif @vmv==19 if i2<@vm1 vm[i2]=-recip(pz)+@vm3 endif elseif @vmv==20 if i2<@vm1 vm[i2]=(pz-1)/(pz+1)+@vm3 endif elseif @vmv==21 if i2<@vm1 vm[i2]=(pz+1)/(pz-1)+@vm3 endif elseif @vmv==22 if i2<@vm1 vm[i2]=-pz+@vm3 endif elseif @vmv==23 if i2<@vm1 vm[i2]=pz-((pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm3 endif elseif @vmv==24 if i2<@vm1 vm[i2]=pz-(pz^3-1)*(3*pz^2)/((3*pz^2)^2-(pz^3-1)*6*pz)+@vm3 endif else if i2<@vm1 vm[i2]=pz-2*(pz^3-1)*(3*pz^2)/(2*(3*pz^2)^2-(pz^3-1)*6*pz)+@vm3 endif endif if i%2==0 if @je==0 pz=pz^2+@c elseif @je==1 pz=pz^3+@c elseif @je==2 pz=pz^4+@c endif else f1=(pz-1)*(pz+1)*(pz^2+1)-@np2 f2=4*pz^3 pz=pz-@np1*f1/(f2) endif pz=pz+@vm2*vm[i2] i=i+1 return pz endfunc default: title="Alt Newton/Julia Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26" endparam param vm1 caption="Valmyst Parameter 1" default=3 endparam param vm2 caption="Valmyst Parameter 2" default=(1,0) endparam param vm3 caption="Valmyst Parameter 3" default=(0,0) endparam param v caption="Alt Variant" enum="Julia first""Newton first" endparam param np1 caption="Newton Parameter" default=(2.5,0) endparam param np2 caption="Newton Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(0.85,0.45) endparam param je caption="Julia Exponent" enum="2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ModifiedSchröder(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) a=(0,0) i=0 pz=@sf(pz) return pz endfunc private: int i complex a complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @mv==0 if i<@mp1 a=pz else a=pz^2 endif elseif @mv==1 if i<@mp1 a=pz^2 else a=pz endif elseif @mv==2 if i<@mp1 a=pz else a=1/pz endif elseif @mv==3 if i<@mp1 a=1/pz else a=pz endif elseif @mv==4 if i<@mp1 a=pz-(pz^3-1)/(3*pz^2) else a=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @mv==5 if i<@mp1 a=pz-pz^2 else a=pz+pz^2 endif elseif @mv==6 if i<@mp1 a=(3*pz^2)/(pz^3-1) else a=pz^2+1/pz^2 endif elseif @mv==7 if i<@mp1 a=pz-1/pz else a=pz+1/pz endif elseif @mv==8 if i<@mp1 a=pz/(pz-1) else a=pz^2 endif elseif @mv==9 if i<@mp1 a=pz/(pz-1) else a=(pz-1)/pz endif elseif @mv==10 if i<@mp1 a=(pz-1)/(pz+1) else a=(pz+1)/(pz-1) endif elseif @mv==11 if i<@mp1 a=pz^2*(pz-0.5)/(1-0.5*pz) else a=pz^3*(pz-3)/(1-3*pz) endif elseif @mv==12 if i<@mp1 a=pz+pz^2 else a=pz-pz^2 endif elseif @mv==13 if i<@mp1 a=pz^3 else a=pz*(1-pz) endif elseif @mv==14 if i<@mp1 a=pz else a=pz^3+pz^2+pz endif elseif @mv==15 if i<@mp1 a=pz*(pz-1)*(pz-2) else a=pz^2/(pz-1) endif elseif @mv==16 if i<@mp1 a=(pz-1)/(pz+1) else a=pz^2*(pz-1) endif elseif @mv==17 if i<@mp1 a=pz^3/3-pz^2/2 else a=pz^4/4+pz^3/3 endif elseif @mv==18 if i<@mp1 a=pz+pz^3/3+pz^2/2 else a=pz^4 endif elseif @mv==19 if i<@mp1 a=1/pz else a=pz^4/4+pz^3/3 endif elseif @mv==20 if i<@mp1 a=1/pz else a=pz^4 endif else if i<@mp1 a=pz^2 else a=pz^4-pz^3 endif endif f=pz^@pow-@sp2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) return pz-@sp1*f*f1/(f1^2-f*f2)+@mp2*@scf(a) endfunc default: title="Modified Schröder" int param version caption="Version" default=100 visible=@version<100 endparam param mv caption="Modification Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20""21""22" endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param mp1 caption="Modification Parameter 1" default=3 endparam param mp2 caption="Modification Parameter 2" default=(0.36,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc func scf caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_SchröderValmyst(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=0 pz=@sf(pz) return pz endfunc private: int i complex vm[@vmp1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @vmv==0 if i<@vmp1 vm[i]=pz endif elseif @vmv==1 if i<@vmp1 vm[i]=pz^2 endif elseif @vmv==2 if i<@vmp1 vm[i]=pz^3 endif elseif @vmv==3 if i<@vmp1 vm[i]=1/pz endif elseif @vmv==4 if i<@vmp1 vm[i]=pz/(pz-1) endif elseif @vmv==5 if i<@vmp1 vm[i]=pz-pz^2 endif elseif @vmv==6 if i<@vmp1 vm[i]=pz+1/pz endif elseif @vmv==7 if i<@vmp1 vm[i]=pz^2+1/pz^2 endif elseif @vmv==8 if i<@vmp1 vm[i]=1/pz^2 endif elseif @vmv==9 if i<@vmp1 vm[i]=pz+1/pz^2 endif elseif @vmv==10 if i<@vmp1 vm[i]=(pz+1)/(pz-1) endif elseif @vmv==11 if i<@vmp1 vm[i]=pz-1/pz endif elseif @vmv==12 if i<@vmp1 vm[i]=pz^2-1/pz^2 endif elseif @vmv==13 if i<@vmp1 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @vmv==14 if i<@vmp1 vm[i]=((pz^2-1)/(2*pz-2))^2 endif elseif @vmv==15 if i<@vmp1 vm[i]=pz-(pz^3-1)/(3*pz^2) endif elseif @vmv==16 if i<@vmp1 vm[i]=(pz-1)/pz endif elseif @vmv==17 if i<@vmp1 vm[i]=pz+pz^2 endif elseif @vmv==18 if i<@vmp1 vm[i]=(pz^2-1)/pz endif elseif @vmv==19 if i<@vmp1 vm[i]=pz^2/(pz-1) endif elseif @vmv==20 if i<@vmp1 vm[i]=(pz-1)/(pz+1) endif elseif @vmv==21 if i<@vmp1 vm[i]=pz-1/pz^2 endif elseif @vmv==22 if i<@vmp1 vm[i]=(pz^2-1)/(pz^2+1) endif elseif @vmv==23 if i<@vmp1 vm[i]=(pz^2+1)/(pz^2-1) endif elseif @vmv==24 if i<@vmp1 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz)+((pz^2-1)/(2*pz-2))^2 endif elseif @vmv==25 if i<@vmp1 vm[i]=((pz^2-1)/(2*pz-2))^2+pz-(pz^3-1)/(3*pz^2) endif elseif @vmv==26 if i<@vmp1 vm[i]=pz-(pz^3-1)/(3*pz^2)+pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @vmv==27 if i<@vmp1 vm[i]=pz-(3*pz^2)/(pz^3-1) endif elseif @vmv==28 if i<@vmp1 vm[i]=pz-(pz-2)/(1-2*pz) endif elseif @vmv==29 if i<@vmp1 vm[i]=pz^2-(3*pz^2)/(pz^3-1) endif elseif @vmv==30 if i<@vmp1 vm[i]=pz-(1-2*pz)/(pz-2) endif else if i<@vmp1 vm[i]=pz*(pz^3-1)/(3*pz^2) endif endif f=pz^@pow-@sp2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) if @sqr==false return pz-@sp1*f*f1/(f1^2-f*f2)+@vmp2*vm[i] else return pz-@sp1*f*f1/(f1^2-f*f2)+@vmp2*sqr(vm[i]) endif endfunc default: title="Schröder Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32" endparam param vmp1 caption="Valmyst Parameter 1" default=5 endparam param vmp2 caption="Valmyst Parameter 2" default=(-0.5,0) endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param sqr caption="Sqr Valmyst" default=false endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000000000000000000001 exponential=true endparam } class OM_TetravarX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) d=(0,0) z1=fn1(pz) if @sv==0 z2=fn1(pz) z3=fn1(pz) elseif @sv==1 z2=fn1(pz) z3=-fn1(pz) elseif @sv==2 z2=-cos(fn1(pz)) z3=-fn1(pz) else z2=-fn1(pz) z3=-cos(fn1(pz)) endif return pz return z1 return z2 return z3 endfunc private: complex a complex b complex d complex z1 complex z2 complex z3 complex func Iterate(complex pz) if @z3f=="ident" z3=ident(z3) elseif @z3f=="sin" z3=sin(z3) elseif @z3f=="sinh" z3=sinh(z3) elseif @z3f=="versin" z3=(1-cos(z3)) elseif @z3f=="coversin" z3=(1-sin(z3)) elseif @z3f=="cos" z3=cos(z3) elseif @z3f=="tan" z3=tan(z3) elseif @z3f=="tanh" z3=tanh(z3) elseif @z3f=="crd" z3=(2*sin(z3/2)) elseif @z3f=="gd" z3=asin(tanh(z3)) elseif @z3f=="sqr" z3=sqr(z3) elseif @z3f=="cube" z3=(z3^3) elseif @z3f=="expit" z3=(1/(1+exp(-z3))) elseif @z3f=="primecount" z3=(z3/log(z3)) elseif @z3f=="cotancosh" z3=cotan(cosh(z3)) elseif @z3f=="tanhtanh" z3=tanh(tanh(z3)) elseif @z3f=="tanhtan" z3=tanh(tan(z3)) elseif @z3f=="tanhsinh" z3=tanh(sinh(z3)) elseif @z3f=="tanhsin" z3=tanh(sin(z3)) elseif @z3f=="tantanh" z3=tan(tanh(z3)) elseif @z3f=="tantan" z3=tan(tan(z3)) elseif @z3f=="tancos" z3=tan(cos(z3)) elseif @z3f=="cosexp" z3=cos(exp(z3)) elseif @z3f=="costan" z3=cos(tan(z3)) elseif @z3f=="coscos" z3=cos(cos(z3)) elseif @z3f=="sinhsin" z3=sinh(sin(z3)) elseif @z3f=="sintan" z3=sin(tan(z3)) elseif @z3f=="sqrexpit" z3=sqr(1/(1+exp(-z3))) elseif @z3f=="sqrcoversin" z3=sqr(1-sin(z3)) elseif @z3f=="logcoversin" z3=log(1-sin(z3)) elseif @z3f=="sqr+" z3=z3+sqr(z3) elseif @z3f=="sqr-" z3=z3-sqr(z3) elseif @z3f=="sin-" z3=z3-sin(z3) else z3=z3*exp(z3) endif z3=@p5*z3+@p6 z1=z1+@p9*sqr(z1) z2=z2+@p9*sqr(z2) a=z1*z2 b=z3^2 d=2*a-b z1=@p1*z1^2+z2^2+d+@p2 z2=@p3*z2*z3+d+@p4 pz=z1+z2 return pz return z1 return z2 return z3 endfunc default: title="Tetravar X 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param p1 caption="X Parameter 1" default=(-1.5,0) endparam param p2 caption="X Parameter 2" default=(-0.2,0) endparam param p3 caption="X Parameter 3" default=(-1.5,0) endparam param p4 caption="X Parameter 4" default=(-0.5,0) endparam param p5 caption="z3 Parameter 1" default=(1,0) endparam param p6 caption="Z3 Parameter 2" default=(0,0) endparam param z3f caption="Z3 Function" enum="ident""sin""sinh""versin""coversin""cos""tan""tanh"\ "crd""gd""sqr""cube""expit""primecount"\ "cotancosh""tanhtanh""tanhtan""tanhsinh""tanhsin""tantanh"\ "tantan""tancos""cosexp""costan""coscos""sinhsin""sintan"\ "sqrexpit""sqrcoversin""logcoversin""sqr+""sqr-""sin-""exp*" endparam func fn1 caption="Start Function" default=ident() endfunc param p9 caption="Add Sqr Parameter" default=(0.35,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_TrivarMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=(0,0) b=(0,0) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pk=@sf(pz) pz=@sf(pz) pw=@sp elseif @sv==3 pk=@sf(pz) pw=@sf(pz) pz=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) endif return pz return pk return pw endfunc private: complex a complex b complex c complex pk complex pw complex func Iterate(complex pz) if @jm==0 a=pw b=pk pw=@p1*recip(pw/pk/pz)+@p2 pk=exp(@p4*1i)*pk^2*(pk-@p3)/(1-@p3*pk)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz) pz=exp(@p4*1i)*b^2*(b-@p3)/(1-@p3*b)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+exp(@p4*1i)*a^2*(a-@p3)/(1-@p3*a)+@c else a=pw b=pk pw=@p1*recip(pw/pk/pz)+@p2 pk=exp(@p4*1i)*pk^2*(pk-@p3)/(1-@p3*pk)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+c pz=exp(@p4*1i)*b^2*(b-@p3)/(1-@p3*b)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+exp(@p4*1i)*a^2*(a-@p3)/(1-@p3*a)+c endif return pz return pk return pw endfunc default: title="Trivar Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.33,0) visible=@sv!=4 endparam param p3 caption="Munster Parameter 1" default=(0.625,0) endparam param p4 caption="Munster Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(-0.25,0) visible=@jm==0 endparam param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_Rootmod8(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc private: complex f complex f1 complex f2 complex f3 complex f4 complex f5 complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^5+0.1i f1=5*pz^4 f2=20*pz^3 f3=60*pz^2 f4=120*pz f5=120 return pz+exp(@p1*1i)*2i*(f/f1)*((f+f2+F4)/3)/((f1+f3+F5)/3)+@p2 endfunc default: title="Rootmod 8" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Rootmod Parameter 1" default=(0,0) endparam param p2 caption="Rootmod Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ValmystX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 pz=@sf(pz) return pz endfunc private: int i complex fpixel complex vm[@vmp1] complex func Iterate(complex pz) i=i+1 if @v==0 if i<@vmp1 vm[i]=pz endif elseif @v==1 if i<@vmp1 vm[i]=pz-pz^2 endif elseif @v==2 if i<@vmp1 vm[i]=pz^2+@sf(fpixel) endif elseif @v==3 if i<@vmp1 vm[i]=pz-exp(pz) endif elseif @v==4 if i<@vmp1 vm[i]=(pz^3+@sf(fpixel))/pz endif elseif @v==5 if i<@vmp1 vm[i]=pz*@sf(fpixel) endif elseif @v==6 if i<@vmp1 vm[i]=pz^2/(pz-1) endif elseif @v==7 if i<@vmp1 vm[i]=pz^3/(pz-1) endif elseif @v==8 if i<@vmp1 vm[i]=pz^2*@sf(fpixel) endif elseif @v==9 if i<@vmp1 vm[i]=(pz^2-1)/pz endif elseif @v==10 if i<@vmp1 vm[i]=(pz^3-1)/pz endif elseif @v==11 if i<@vmp1 vm[i]=pz*fpixel^2 endif elseif @v==12 if i<@vmp1 vm[i]=pz^2*@sf(fpixel)^2 endif elseif @v==13 if i<@vmp1 vm[i]=-1/pz endif elseif @v==14 if i<@vmp1 vm[i]=sqr(pz) endif elseif @v==15 if i<@vmp1 vm[i]=-cos(pz) endif elseif @v==16 if i<@vmp1 vm[i]=pz-cos(pz) endif elseif @v==17 if i<@vmp1 vm[i]=@sf(fpixel)*cosh(pz) endif elseif @v==18 if i<@vmp1 vm[i]=-@sf(fpixel)*recip(pz) endif elseif @v==19 if i<@vmp1 vm[i]=-@sf(fpixel)*sqr(pz) endif elseif @v==20 if i<@vmp1 vm[i]=@sf(fpixel)*tanh(pz)^2 endif elseif @v==21 if i<@vmp1 vm[i]=@sf(fpixel)*sin(pz)^2 endif elseif @v==22 if i<@vmp1 vm[i]=-@sf(fpixel)*pz^2 endif elseif @v==23 if i<@vmp1 vm[i]=-@sf(fpixel)*sqr(pz)^2 endif elseif @v==24 if i<@vmp1 vm[i]=-@sf(fpixel)*recip(pz)^2 endif elseif @v==25 if i<@vmp1 vm[i]=-@sf(fpixel)*cotanh(pz)^2 endif elseif @v==26 if i<@vmp1 vm[i]=-@sf(fpixel)*cotan(pz)^2 endif elseif @v==27 if i<@vmp1 vm[i]=-@sf(fpixel)*tan(pz)^2 endif elseif @v==28 if i<@vmp1 vm[i]=-@sf(fpixel)*cos(pz)^2 endif elseif @v==29 if i<@vmp1 vm[i]=-@sf(fpixel)*sinh(pz)^2 endif else if i<@vmp1 vm[i]=-@sf(fpixel)*sin(pz)^2 endif endif return (pz^3+@p1)/(pz+@p2)+@vmp2*fn1(vm[i])*@sf(fpixel) endfunc default: title="Valmyst X 1" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31" endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(-0.25,0) endparam param p2 caption="X Parameter 2" default=(0.25,0) endparam param vmp1 caption="Valmyst Parameter 1" default=6 endparam param vmp2 caption="Valmyst Parameter 2" default=(-0.5,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarMandelbrot3(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fPixel=pz a=(0,0) c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex a complex pk complex func Iterate(complex pz) a=pk pk=@p1*@bf2(c*@bf1(pk/pz))+@p2 pz=pz^2+a^2+c return pz return pk endfunc bool func IsBailedOut(complex pz) return |(pz+pk)/2|>=@p_upperbailout || |(pz+pk)/2|<=@p_lowerbailout endfunc default: title="Bivar Mandelbrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param sp caption="Start Parameter" default=(0,0.5) visible=@sv!=0 endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Divergent Bailout value" default=1000.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout value" default=0.000001 exponential=true endparam } class OM_Kalgor(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=3.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=fn1(pz) if @v==0 float b=|@p1*pz+@p2| elseif @v==1 float b=|pz+@p1*pz^2+@p2| elseif @v==2 float b=|pz+pz^2+@p1*pz^3+@p2| elseif @v==3 float b=|pz+pz^2+pz^3+@p1*pz^4+@p2| elseif @v==4 float b=|pz+@p1/pz+@p2| elseif @v==5 float b=|pz+1/pz+@p1/pz^2+@p2| elseif @v==6 float b=|pz+@p1*flip(pz)+@p2| elseif @v==7 float b=|pz+@p1*sqrt(pz)+@p2| elseif @v==8 float b=|pz+@p1*acosh(pz)+@p2| elseif @v==9 float b=|pz+@p1*round(pz)+@p2| elseif @v==10 float b=|pz+@p1*trunc(pz)+@p2| elseif @v==11 float b=|pz+@p1*floor(pz)+@p2| elseif @v==12 float b=|pz+@p1*ceil(pz)+@p2| elseif @v==13 float b=|pz+@p1/flip(pz)+@p2| elseif @v==14 float b=|pz+@p1/cabs(pz)+@p2| elseif @v==15 float b=|pz+@p1/abs(pz)+@p2| elseif @v==16 float b=|pz+@p1/sqr(pz)+@p2| elseif @v==17 float b=|pz+@p1/acosh(pz)+@p2| elseif @v==18 float b=|pz+@p1/acos(pz)+@p2| elseif @v==19 float b=|pz+@p1/round(pz)+@p2| elseif @v==20 float b=|pz+@p1/ceil(pz)+@p2| elseif @v==21 float b=|pz+flip(pz)^2+@p1*pz^3+@p2| elseif @v==22 float b=|pz-pz^2+pz^3+@p1*pz^4+@p2| elseif @v==23 float b=|pz+pz^2-pz^3+@p1*pz^4+@p2| elseif @v==24 float b=|pz+exp(pz)^2+@p1*pz^3+@p2| elseif @v==25 float b=|pz+sqrt(pz)^2+@p1*pz^3+@p2| elseif @v==26 float b=|pz+round(pz)^2+@p1*pz^3+@p2| elseif @v==27 float b=|pz+floor(pz)^2+@p1*pz^3+@p2| else float b=|pz+ceil(pz)^2+@p1*pz^3+@p2| endif if b@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)<@p7 index=sqrt(a) else m_Solid=true endif endif else index=sqrt(a) endif return index endfunc private: float a float index default: title="Kalgor" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29" endparam param p1 caption="Kalgor Parameter 1" default=(1,0) endparam param p2 caption="Kalgor Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_KalgorValmyst(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=3.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 pz=fn1(pz) if i<@p3 if @vmv==0 vm[i]=pz elseif @vmv==1 vm[i]=pz-sin(pz) elseif @vmv==2 vm[i]=pz+pz^2 elseif @vmv==3 vm[i]=pz-exp(pz) elseif @vmv==4 vm[i]=pz+1/pz elseif @vmv==5 vm[i]=pz-1/pz elseif @vmv==6 vm[i]=pz-pz^2 elseif @vmv==7 vm[i]=flip(pz) elseif @vmv==8 vm[i]=pz^2 elseif @vmv==9 vm[i]=abs(pz) elseif @vmv==10 vm[i]=conj(pz) elseif @vmv==11 vm[i]=pz*cos(pz) elseif @vmv==12 vm[i]=pz*cotanh(pz) elseif @vmv==13 vm[i]=pz^3 elseif @vmv==14 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz) elseif @vmv==15 vm[i]=pz^3*(pz-3)/(1-3*pz) elseif @vmv==16 vm[i]=pz-(pz^3-1)/(3*pz^2) elseif @vmv==17 vm[i]=((pz^2-1)/(2*pz-2))^2 elseif @vmv==18 vm[i]=(pz-1i)/(pz+1i) elseif @vmv==19 vm[i]=(pz-1)/(pz+1) elseif @vmv==20 vm[i]=pz^2/(pz-1) elseif @vmv==21 vm[i]=(pz-1)/pz^2 elseif @vmv==22 vm[i]=(1-2*pz)/(pz-2) elseif @vmv==23 vm[i]=pz+(1-0.5*pz)/(pz-0.5) elseif @vmv==24 vm[i]=pz-pz^2+pz^3 elseif @vmv==25 vm[i]=-pz+pz^2-pz^3+pz^4 elseif @vmv==26 vm[i]=1/sinh(pz) elseif @vmv==27 vm[i]=sqr(sinh(pz)) elseif @vmv==28 vm[i]=1/cos(pz) elseif @vmv==29 vm[i]=1/exp(cos(pz)) elseif @vmv==30 vm[i]=1/sqr(exp(pz)) elseif @vmv==31 vm[i]=1/sqr(cosh(pz)) elseif @vmv==32 vm[i]=pz+1/sqr(trunc(pz)) else vm[i]=pz+1/cos(cosh(pz)) endif endif if @v==0 float b=cabs(log(pz-@p1*(pz^2-1)/(pz^2+1)+@p4*fn2(vm[i]))) elseif @v==1 float b=cabs(log(pz*@p1*tanh(pz)+@p4*fn2(vm[i]))) elseif @v==2 float b=cabs(log(pz+@p1*conj(tan(pz))+@p4*fn2(vm[i]))) elseif @v==3 float b=cabs(log(pz+flip(pz)^2+@p1*pz^3+@p4*fn2(vm[i]))) elseif @v==4 float b=cabs(log(pz+log(pz)^2+@p1*cos(pz)^2+@p4*fn2(vm[i]))) elseif @v==5 float b=cabs(log(pz+1/pz+@p1/pz^2+@p4*fn2(vm[i]))) elseif @v==6 float b=cabs(log(pz+@p1*flip(pz)+@p4*fn2(vm[i]))) elseif @v==7 float b=cabs(log(pz+@p1*flip(exp(pz))+@p4*fn2(vm[i]))) elseif @v==8 float b=cabs(log(pz*@p1*sin(pz)+@p4*fn2(vm[i]))) elseif @v==9 float b=cabs(log(pz+tanh(pz)^2+@p1*cos(pz)^2+@p4*fn2(vm[i]))) elseif @v==10 float b=cabs(log(pz+@p1*pz^2+cos(pz)^3+@p4*fn2(vm[i]))) elseif @v==11 float b=cabs(log(pz+@p1*flip(sqr(pz))+@p4*fn2(vm[i]))) elseif @v==12 float b=cabs(log(pz*@p1*cos(pz)+@p4*fn2(vm[i]))) elseif @v==13 float b=cabs(log(pz+@p1*flip(cos(pz))+@p4*fn2(vm[i]))) elseif @v==14 float b=cabs(log(pz+@p1*abs(pz)+@p4*fn2(vm[i]))) elseif @v==15 float b=cabs(log(pz+pz^2+@p1*pz^3+@p4*fn2(vm[i]))) elseif @v==16 float b=cabs(log(pz+@p1/flip(pz)+@p4*fn2(vm[i]))) elseif @v==17 float b=cabs(log(pz+@p1*conj(sinh(pz))+@p4*fn2(vm[i]))) elseif @v==18 float b=cabs(log(pz+@p1*cabs(tan(pz))+@p4*fn2(vm[i]))) elseif @v==19 float b=cabs(log(pz+@p1*sqr(flip(pz))+@p4*fn2(vm[i]))) elseif @v==20 float b=cabs(log(pz+@p1*sqr(cos(pz))+@p4*fn2(vm[i]))) elseif @v==21 float b=cabs(log(pz+@p1*cos(exp(pz))+@p4*fn2(vm[i]))) elseif @v==22 float b=cabs(log(pz*@p1*flip(pz)+@p4*fn2(vm[i]))) elseif @v==23 float b=cabs(log(pz*@p1*atan(pz)+@p4*fn2(vm[i]))) elseif @v==24 float b=cabs(log(pz+@p1*conj(sqr(pz))+@p4*fn2(vm[i]))) elseif @v==25 float b=cabs(log(pz+@p1*exp(exp(pz))+@p1*sqr(pz)+@p4*fn2(vm[i]))) elseif @v==26 float b=cabs(log(pz+@p1*conj(pz)+@p4*fn2(vm[i]))) elseif @v==27 float b=cabs(log(pz*@p1*sqrt(tanh(pz))+@p4*fn2(vm[i]))) elseif @v==28 float b=cabs(log(pz*@p1/flip(cosh(conj(pz)))+@p4*fn2(vm[i]))) elseif @v==29 float b=cabs(log(pz+@p1*(pz^2-1)/(pz^2+1)+@p4*fn2(vm[i]))) elseif @v==30 float b=cabs(log(pz*@p1/flip(acos(pz))+@p4*fn2(vm[i]))) elseif @v==31 float b=cabs(log(pz-@p1*cosh(3*pz^2)/(pz^3-1)+@p4*fn2(vm[i]))) elseif @v==32 float b=cabs(log(pz*@p1/conj(acosh(pz))+@p4*fn2(vm[i]))) elseif @v==33 float b=cabs(log(@p1*sqr(pz^2-pz^3)/pz+@p4*fn2(vm[i]))) elseif @v==34 float b=cabs(log(pz*@p1/conj(cos(pz))+@p4*fn2(vm[i]))) elseif @v==35 float b=cabs(log(pz*@p1/cotanh(conj(asinh(pz)))+@p4*fn2(vm[i]))) elseif @v==36 float b=cabs(log(pz*@p1/cos(cos(conj(sin(pz))))+@p4*fn2(vm[i]))) elseif @v==37 float b=cabs(log(pz*@p1/abs(sin(pz))+@p4*fn2(vm[i]))) elseif @v==38 float b=cabs(log(pz+@p1*flip(cosh(pz))+@p4*fn2(vm[i]))) elseif @v==39 float b=cabs(log(pz+@p1/pz+@p4*fn2(vm[i]))) elseif @v==40 float b=cabs(log(pz+cotanh(pz)^2+@p1*cotan(pz)^2+@p4*fn2(vm[i]))) elseif @v==41 float b=cabs(log(pz+tan(cotan(pz))^2+@p1*cos(sin(pz))^2+@p4*fn2(vm[i]))) elseif @v==42 float b=cabs(log(pz+@p1*tan(tan(pz^2/(pz-1)))+@p4*fn2(vm[i]))) elseif @v==43 float b=cabs(log(pz+@p1*tan(exp((pz-1)/pz^2))+@p4*fn2(vm[i]))) elseif @v==44 float b=cabs(log(pz*@p1/flip(pz)+@p4*fn2(vm[i]))) elseif @v==45 float b=cabs(log(pz+@p1*(pz^3-1)/(pz^3+1)+@p4*fn2(vm[i]))) elseif @v==46 float b=cabs(log(pz-@p1*sinh(pz^4-1)/(4*pz^3)+@p4*fn2(vm[i]))) elseif @v==47 float b=cabs(log(pz*@p1/conj(cotanh(pz))+@p4*fn2(vm[i]))) elseif @v==48 float b=cabs(log(@p1*cos(pz^2-pz^3)/pz+@p4*fn2(vm[i]))) else float b=cabs(log(pz*@p1/conj(acos(pz))+@p4*fn2(vm[i]))) endif if b@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)<@p7 index=sqrt(a) else m_Solid=true endif endif else index=sqrt(a) endif return index endfunc private: float a int i complex vm[@p3] float index default: title="Kalgor Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29"\ "30""31""32""33""34" endparam param v caption="Kalgor Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29"\ "30""31""32""33""34""35""36""37""38""39"\ "40""41""42""43""44""45""46""47""48""49"\ "50" endparam param p1 caption="Kalgor Parameter" default=(1,0) endparam param p3 caption="Valmyst Parameter 1" default=6 endparam param p4 caption="Valmyst Parameter 2" default=(1,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Valmyst Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_BostaValmyst(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=@adj1 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 pz=@zf(pz) if i<@vm1 If @vmv==0 vm[i]=cos(pz)-3*cosh(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==1 vm[i]=pz-3*pz^2*(pz^3-1)/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==2 vm[i]=cos(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==3 vm[i]=pz+1/pz^2 elseIf @vmv==4 vm[i]=pz-10*(pz^4-1)/(4*pz^3) elseif @vmv==5 vm[i]=cotanh((pz^2+2)/(2*pz+1))^2 elseif @vmv==6 vm[i]=((pz^2+2)/(2*pz+1))^2 elseif @vmv==7 vm[i]=exp(pz)+tan(pz) elseif @vmv==8 vm[i]=cotanh(pz)+cotan(pz) elseif @vmv==9 vm[i]=cos(pz)^2+tanh(pz)^2 elseif @vmv==10 vm[i]=cos(pz)^2+tan(pz)^2 elseif @vmv==11 vm[i]=floor(pz)^2+round(pz)^2 elseif @vmv==12 vm[i]=pz^3+cotanh(pz)^3 elseif @vmv==13 vm[i]=cosh(pz)-3*exp(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==14 vm[i]=cosh(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==15 vm[i]=sin(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==16 vm[i]=pz^2*(pz-4)/(2+4*pz) elseif @vmv==17 vm[i]=pz^2*sqr((pz-4)/(2+4*pz)) elseif @vmv==18 vm[i]=pz^2*sin((pz-4)/(2+4*pz)) elseif @vmv==19 vm[i]=pz^2*floor((pz-4)/(2+4*pz)) elseif @vmv==20 vm[i]=pz^3+1/(pz^3+1/(pz^3+1/pz^3)) elseif @vmv==21 vm[i]=pz^3+1/(exp(pz)^3+1/(exp(pz)^3+1/exp(pz)^3)) elseif @vmv==22 vm[i]=pz^3+1/(conj(pz)^3+1/(conj(pz)^3+1/conj(pz)^3)) elseif @vmv==23 vm[i]=pz+exp(pz+recip(pz+cosh(pz))) elseif @vmv==24 vm[i]=pz+cotan(pz+sqr(pz+recip(pz))) elseif @vmv==25 vm[i]=pz+sqr(pz+conj(pz+atanh(pz))) elseif @vmv==26 vm[i]=pz+acos(pz+cotanh(pz+exp(pz))) elseif @vmv==27 vm[i]=pz+1/exp(pz+cos(pz+tan(pz))) elseif @vmv==28 vm[i]=pz+1/cotanh(pz+cos(pz+tan(pz))) else vm[i]=pz+1/cotanh(pz+flip(pz+round(pz))) endif endif if @v==0 a=cabs(pz+@p7*pz^2+@vm2*@vmf(vm[i])+@p8) elseif @v==1 a=cabs(pz^2+@p7*pz^3+@vm2*@vmf(vm[i])+@p8) elseif @v==2 a=cabs(pz+@p7/pz+@vm2*@vmf(vm[i])+@p8) elseif @v==3 a=cabs(pz^2+@p7/pz+@vm2*@vmf(vm[i])+@p8) elseif @v==4 a=cabs(pz+@p7/pz^2+@vm2*@vmf(vm[i])+@p8) elseif @v==5 a=cabs(exp(pz)-@p7*(cotanh(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==6 a=cabs(exp(pz)-@p7*(sin(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==7 a=cabs(sqr(pz)-@p7*(exp(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==8 a=cabs(sqr(pz)-@p7*(sqr(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==9 a=cabs(pz+@p7*pz^3*(pz-3)/(1-3*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==10 a=cabs(pz+@p7*pz^4*(pz-4)/(1-4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==11 a=cabs(pz+@p7*pz^5*(pz-5)/(1-5*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==12 a=cabs(pz+@p7*pz^2*(pz-2)/(1-2*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==13 a=cabs(pz+@p7*flip(conj(abs(pz)))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==14 a=cabs(pz+@p7*conj(abs(pz))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==15 a=cabs(pz+@p7*flip(conj(pz))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==16 a=cabs(pz+@p7*(pz+pz^2+pz^3)+@vm2*@vmf(vm[i])+@p8) elseif @v==17 a=cabs(pz+@p7*(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==18 a=cabs(pz+@p7*tanh(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==19 a=cabs(pz+@p7*recip(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==20 a=cabs(pz+@p7*floor(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==21 a=cabs(pz+@p7*tanh(tan(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==22 a=cabs(pz+@p7*recip(cos(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==23 a=cabs(pz+@p7*floor(pz^4-3*pz^3+pz^2)+@vm2*@vmf(vm[i])+@p8) elseif @v==24 a=cabs(pz+@p7*floor(tanh(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==25 a=cabs(pz+@p7*ceil(sin(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==26 a=cabs(pz+@p7*round(log(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==27 a=cabs(pz+@p7*round(cotanh(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==28 a=cabs(pz+@p7*exp(abs((pz^2-1)/(pz^2+1)))+@vm2*@vmf(vm[i])+@p8) elseif @v==29 if real(pz)imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*conj(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==33 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*exp(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==34 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*acosh(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==35 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7/flip(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==36 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*tan(pz)^4*(pz-4)/(1-4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==37 a=cabs(pz+@p7*pz^2*(pz-4)/(3+4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==38 a=cabs(pz+@p7*pz*(sin(pz)-4)/(7+4*sin(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==39 a=cabs(pz+@p7*pz^5*(sqr(pz)-4)/(5+4*sqr(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==40 a=cabs(pz+@p7*pz^5*(sqr(pz)-4)/(-0.5+4*sqr(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==41 a=cabs(pz+@p7*pz*(floor(pz)-2)/(3+2*floor(pz))+@vm2*@vmf(vm[i])+@p8) else a=cabs(pz+@p7*pz^3*(cabs(pz)+5.5)/(7.25-5.5*cabs(pz))+@vm2*@vmf(vm[i])+@p8) endif if a@p9 index=f*0.16 else m_Solid=true endif endif else index=f*0.16 endif return index endfunc private: float a float b int i complex vm[@vm1] float index default: title="Bosta Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1" "2" "3" "4" "5" "6" "7" "8" "9" "10""11""12""13"\ "14""15""16""17""18""19""20""21""22""23""24""25""26""27"\ "28""29""30" default=0 endparam param v caption="Bosta Variant" enum="1" "2" "3" "4" "5" "6" "7" "8" "9" "10""11""12""13"\ "14""15""16""17""18""19""20""21""22""23""24""25""26""27"\ "28""29""30""31""32""33""34""35""36""37""38""39""40""41"\ "42""43" default=0 endparam param vm1 caption="Valmyst Parameter 1" default=9 endparam param vm2 caption="Valmyst Parameter 2" default=(1,0) endparam param p7 caption="Bosta Parameter 1" default=(1,0) endparam param p8 caption="Bosta Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func vmf caption="Valmyst Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=2.18245 endparam param adj2 caption="Adjustment 2" default=6.3 endparam param solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.217 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Gribbim(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="third" pz=pz/3 elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 elseif @Fs=="triple" pz=pz*3 elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*pz+@p2 if @v==0 x=real(pz) y=imag(pz) x=cos(x)/|pz| y=cos(y)/|pz| pz=x+flip(y) pz=log(2*pz) elseif @v==1 x=real(pz) y=imag(pz) x=cos(x)/|pz| y=cos(y)/|pz| pz=x+flip(y) pz=log(pz+pz^2*cos((pz-2)/(1-2*pz))) elseif @v==2 if real(pz)@p9 index=(sqrt(c)+1)*0.5 else m_Solid=true endif endif else index=(sqrt(c)+1)*0.5 endif return index endfunc private: float c float index default: title="Gribbim" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple"\ "ceil""floor""trunc""round" default=22 endparam param adj caption="Adjustment" default=3.0 endparam param @solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.915 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Vazae(common.ulb:GradientColoring) { ;This is a modification/extension of Numberseeker by Edgar Malinovsky (em.ucl) ;Lower values of the Iterations paremeter give smoother colouring. ;Higher values give more detail. ;It may be necessary to increase this value when zooming in. public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@zp1*pz+@zp2 if @V==0 pz=pz elseif @v==1 pz=pz+pz^2 elseif @v==2 pz=pz+1/pz elseif @v==3 pz=pz-1/pz elseif @v==4 pz=pz-pz^2 elseif @v==5 pz=pz+flip(pz) elseif @v==6 pz=pz+conj(pz) elseif @v==7 pz=pz+cotanh(pz) elseif @v==8 pz=pz+acosh(pz) elseif @v==9 pz=pz-cabs(pz) elseif @v==10 pz=pz-abs(pz) elseif @v==11 pz=pz-exp(pz) elseif @v==12 pz=pz-acosh(pz) elseif @v==13 pz=pz-cos(pz) elseif @v==14 pz=pz-asinh(pz) elseif @v==15 if |pz|<1 pz=pz/|pz| endif pz=pz-cos(pz) elseif @v==16 pz=pz+1/log(pz) elseif @v==17 pz=pz+1/sqr(pz) elseif @v==18 pz=pz-1/cosh(pz) elseif @v==19 pz=pz+3/pz elseif @v==20 pz=pz+3/asinh(pz) elseif @v==21 pz=pz+3*cotanh(pz) elseif @v==22 pz=pz-3*flip(pz) elseif @v==23 pz=pz^4*(pz+2)/(1+2*pz) elseif @v==24 pz=pz^(-4)*(pz+0.75)/(1+0.75*pz) elseif @v==25 pz=pz-(pz^(-3)-1)/(-3*pz^(-4)) elseif @v==26 pz=pz-(pz^(-6)-1)/(-6*pz^(-7)) elseif @v==27 pz=pz^2*(flip(pz)-4)/(2+4*flip(pz)) elseif @v==28 pz=pz^2*(sqr(pz)-4)/(2+4*sqr(pz)) elseif @v==29 pz=pz^3*(flip(pz)-4)/(3+4*flip(pz)) elseif @v==30 pz=pz^3*(conj(pz)-4)/(3+4*conj(pz)) elseif @v==31 pz=pz^3*(atanh(pz)-4)/(3+4*atanh(pz)) elseif @v==32 pz=pz^3*(tan(pz)-4)/(3+4*tan(pz)) elseif @v==33 pz=pz-trunc((pz-2)/(1-2*pz)) elseif @v==34 pz=pz-(pz+0.8)/(1+0.8*pz) elseif @v==35 pz=pz-(pz+2)/(1+2*pz)^(-8) elseif @v==36 pz=pz-cabs((pz+2)/(1+2*pz))^(-8) elseif @v==37 pz=pz-sqr((pz+2)/(1+2*pz))^(-8) elseif @v==38 pz=pz-recip((pz+2)/(1+2*pz))^(-8) elseif @v==39 pz=pz-cabs((pz+2)/(1+2*pz))^8 elseif @v==40 if |pz|<1 pz=pz/|pz| endif pz=pz+conj(pz) else if |pz|<1 pz=pz/|pz| endif pz=pz-exp(pz) endif if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) ;zold=pz i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<@adj if @solid if @invert if b<@p9 index=b else m_Solid=true endif else if b>@p9 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p9 index=a else m_Solid=true endif else if a>@p9 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: float a float b float index int i int i2 complex zold default: title="Vazae" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param iter caption="Iterations" default=10 min=0 endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam param adj caption="Adjustment" default=0.0 endparam param @solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.18 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AleatorFloorPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) z2=(0,0) z1=fn2(pz) if@jm==0 c=@c else c=@cf(fpixel) endif i2=0 return pz return z1 return z2 endfunc private: float values[#maxiter] int i int seed complex z1 complex z2 complex c int i2 complex func Iterate(complex pz) if @jm==1 c=@cp1*c endif pz=@zp1*@zf(pz)+@zp2 pz=pz+@asp*sqr(pz) z1=z1+@asp*sqr(z1) z2=z2+@asp*sqr(z2) pz=pz^2+@pp1*pz+@pp2*z2+floor(values[i2])+c z2=z1 i2=i2+1 return pz return z1 return z2 endfunc default: title="Aleator Floor Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param seed caption="Random Seed" default=12345678 endparam param pp1 caption="Phoenix Parameter 1" default=(0.5,0) endparam param pp2 caption="Phoenix Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param c caption="C Parameter" default=(0,0) visible=@jm==0 endparam param cp1 caption="C Parameter" default=(1,0) visible=@jm==1 endparam func fn1 Caption="Start Function" default=ident() endfunc func zf Caption="Z Function" default=ident() endfunc func fn2 caption= "Phoenix Function" default=ident() endfunc func cf caption="C Function" default=ident() visible=@jm==1 endfunc param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DietTraps(common.ulb:GradientColoring) { ; A modification/extension of "Thin Orbit Traps" by Samuel Monnier" (sam.ucl) ; Plug-in version of Diet Traps in om.ucl public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 b2=0.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if @Fs=="sin" k=sin(pz) elseif @Fs=="sinh" k=sinh(pz) elseif @Fs=="asin" k=asin(pz) elseif @Fs=="asinh" k=asinh(pz) elseif @Fs=="cos" k=cos(pz) elseif @Fs=="cosh" k=cosh(pz) elseif @Fs=="acos" k=acos(pz) elseif @Fs=="acosh" k=acosh(pz) elseif @Fs=="tan" k=tan(pz) elseif @Fs=="tanh" k=tanh(pz) elseif @Fs=="atan" k=atan(pz) elseif @Fs=="atanh" k=atanh(pz) elseif @Fs=="cotan" k=cotan(pz) elseif @Fs=="cotanh" k=cotanh(pz) elseif @Fs=="sqr" k=sqr(pz) elseif @Fs=="sqrt" k=sqrt(pz) elseif @Fs=="log" k=log(pz) elseif @Fs=="exp" k=exp(pz) elseif @Fs=="abs" k=abs(pz) elseif @Fs=="cabs" k=cabs(pz) elseif @Fs=="conj" k=conj(pz) elseif @Fs=="flip" k=flip(pz) elseif @Fs=="ident" k=ident(pz) elseif @Fs=="recip" k=recip(pz) elseif @Fs=="versin" k=1-cos(pz) elseif @Fs=="aversin" k=acos(1-pz) elseif @Fs=="haversin" k=(1-cos(pz))/2 elseif @Fs=="ahaversin" k=2*asin(sqrt(pz)) elseif @Fs=="coversin" k=1-sin(pz) elseif @Fs=="acoversin" k=asin(1-pz) elseif @Fs=="hacoversin" k=(1-sin(pz))/2 elseif @Fs=="vercos" k=1+cos(pz) elseif @Fs=="avercos" k=acos(1+pz) elseif @Fs=="havercos" k=(1+cos(pz))/2 elseif @Fs=="ahavercos" k=2*acos(sqrt(pz)) elseif @Fs=="covercos" k=1+sin(pz) elseif @Fs=="acovercos" k=asin(1+pz) elseif @Fs=="hacovercos" k=(1+sin(pz))/2 elseif @Fs=="acotan" k=atan(1/(pz)) elseif @Fs=="acotanh" k=atanh(1/(pz)) elseif @Fs=="sec" k=1/cos(pz) elseif @Fs=="sech" k=1/cosh(pz) elseif @Fs=="asec" k=acos(1/pz) elseif @Fs=="asech" k=acosh(1/pz) elseif @Fs=="cosec" k=1/sin(pz) elseif @Fs=="cosech" k=1/sinh(pz) elseif @Fs=="acosec" k=asin(1/pz) elseif @Fs=="acosech" k=asinh(1/pz) elseif @Fs=="exsec" k=1/cos(pz)-1 elseif @Fs=="aexsec" k= acos(1/(pz+1)) elseif @Fs=="excosec" k=1/sin(pz)-1 elseif @Fs=="aexcosec" k=asin(1/(pz+1)) elseif @Fs=="crd" k=2*sin(pz/2) elseif @Fs=="acrd" k=2*asin(pz/2) elseif @Fs=="gd" k=asin(tanh(pz)) elseif @Fs=="agd" k=asinh(tan(pz)) elseif @Fs=="sinc" k=sin(pz)/(pz) elseif @Fs=="sinhc" k=sinh(pz)/(pz) elseif @Fs=="cosc" k=cos(pz)/(pz) elseif @Fs=="coshc" k=cosh(pz)/(pz) elseif @Fs=="tanc" k=tan(pz)/(pz) elseif @Fs=="tanhc" k=tanh(pz)/(pz) elseif @Fs=="cotanc" k=cotan(pz)/(pz) elseif @Fs=="cotanhc" k=cotanh(pz)/(pz) elseif @Fs=="secc" k=1/(pz*cos(pz)) elseif @Fs=="sechc" k=1/(pz*cosh(pz)) elseif @Fs=="cosecc" k= 1/(pz*sin(pz)) elseif @Fs=="cosechc" k=1/(pz*sinh(pz)) elseif @Fs=="cube" k=pz^3 elseif @Fs=="cuberoot" k=pz^(1/3) elseif @Fs=="colog" k=-log(pz) elseif @Fs=="logit" k= log(pz/(1-pz)) elseif @Fs=="expit" k=1/(1+exp(-pz)) elseif @Fs=="gauss" k=exp(-sqr(pz)) elseif @Fs=="softplus" k=log(1+exp(pz)) elseif @Fs=="primecount" k=pz/log(pz) elseif @Fs=="sqr+" k=sqr(pz)+pz elseif @Fs=="cube+" k=pz^3+sqr(pz)+pz elseif @Fs=="sin+" k=sin(pz)+pz elseif @Fs=="cos+" k=cos(pz)+pz elseif @Fs=="tan+" k=tan(pz)+pz elseif @Fs=="cotan+" k=cotan(pz)+pz elseif @Fs=="sec+" k=1/cos(pz)+pz elseif @Fs=="cosec+" k=1/sin(pz)+pz elseif @Fs=="sin*" k=sin(pz)*pz elseif @Fs=="cos*" k=cos(pz)*pz elseif @Fs=="tan*" k=tan(pz)*pz elseif @Fs=="cotan*" k=cotan(pz)*pz elseif @Fs=="sec*" k=pz/cos(pz) elseif @Fs=="cosec*" k=pz/sin(pz) elseif @Fs=="loglog" k=log(log(pz)) elseif @Fs=="sinsin" k=sin(sin(pz)) elseif @Fs=="coscos" k=cos(cos(pz)) elseif @Fs=="+pixel" k=pz+pixel elseif @Fs=="-pixel" k=pz-pixel elseif @Fs=="*pixel" k=pz*pixel elseif @Fs=="/pixel" k=pz/pixel elseif @Fs=="ceil" k=ceil(pz) elseif @Fs=="floor" k=floor(pz) elseif @Fs=="trunc" k=trunc(pz) else k=round(pz) endif if i>=0 && i<=1E20 pz=(k-@p2)*exp(1i*pi/2*@p3)/@p4 float x=sqrt(@p5)*real(pz) float y=1/sqrt(@p5)*imag(pz) if @trap=="Alain Curve" b=abs((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2) elseif @trap=="Ampersand Curve" b=abs((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2) elseif @trap=="Arcs of Samothrace" b=abs(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)) elseif @trap=="Astroid" b=abs(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @trap=="Atriphthaloid" b=abs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @trap=="Bean Curve" b=abs((x^2+y^2)^2-x^3-y^3) elseif @trap=="Bean Curve 2" b=abs(x^4+x^2*y^2+y^4-x*(x^2+y^2)) elseif @trap=="Beetle" b=abs((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2) elseif @trap=="Biaxial Eight Reverse" b=abs(@a^2*y^2-x^2*(y^2-x^2)) elseif @trap=="Bicorn" b=abs(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2) elseif @trap=="Bicuspid" b=abs((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2) elseif @trap=="Biquartic" b=abs(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)) elseif @trap=="Blade's Cubic" b=abs(x^3+y^3-@a^3) elseif @trap=="Bolza" b=abs(y^2-x^5+x) elseif @trap=="Bow Curve" b=abs(x^4-(@a+1)*x^2*y+y^3) elseif @trap=="Bullet-Nose Curve" b=abs((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2) elseif @trap=="Butterfly Curve" b=abs(x^6+y^6-x^2) elseif @trap=="Butterfly Knot" b=abs((x^2+y^2)*x^4-(x^2-y^2)^2) elseif @trap=="Cardioid" b=abs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @trap=="Cartesian Oval" b=abs((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4) elseif @trap=="Cassinian Ovals" b=abs((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4) elseif @trap=="Catenary" b=abs(y-@a*cosh(x/@a)) elseif @trap=="Cayley's Sextic" b=abs(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2) elseif @trap=="Cayley's Sextic 2" b=abs(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)) elseif @trap=="Ceva's Trisectrix" b=abs((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2) elseif @trap=="Chasles Cubic" b=abs(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3) elseif @trap=="Circle" b=abs(x^2+y^2-@a^2) elseif @trap=="Circular Cubic" b=abs(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5) elseif @trap=="Cissoid of Diocles" b=abs(y^2-x^3/(2*@a-x)) elseif @trap=="Cissoid of Diocles 2" b=abs(y^2*(2*@a-x)-x^8) elseif @trap=="Cissoid of Zahradnik" b=abs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @trap=="Clairaut Curve" b=abs((x^2+y^2)^((@a2+1)/2)-@a*y^@a2) elseif @trap=="Clinoid" b=abs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @trap=="Cochleoid" b=abs((x^2+y^2)*atan(y/x)-@a*y) elseif @trap=="Conchoid of a Circle" b=abs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @trap=="Conchoid of Nicomedes" b=abs((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @trap=="Conchoid of de Sluze" b=abs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @trap=="Conic Sections" b=abs(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2) elseif @trap=="Cornoid" b=abs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @trap=="Cornoid 2" b=abs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @trap=="Coscoid" b=abs(y-@a*cos(x)/x) elseif @trap=="Cosecantoid" b=abs(y-@a/sin(x/@a2)) elseif @trap=="Cosinusoid" b=abs(y-@a*cos(x/@a2)) elseif @trap=="Cotangentoid" b=abs(y-@a*cotan(x/@a2)) elseif @trap=="Cross Curve" b=abs(@a^2*y^2+@a2^2*x^2-x^2*y^2) elseif @trap=="Cubic Joint" b=abs(y^2*x-@a*y^2-@a2*x^2) elseif @trap=="Cubic of Apollonius" b=abs((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))) elseif @trap=="Curve of Cramer" b=abs(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2) elseif @trap=="Curve of Jefabek" b=abs((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2) elseif @trap=="Curve of Loriga" b=abs(3*x^2-y^2-@a^2) elseif @trap=="Curve of Rosillo" b=abs(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)) elseif @trap=="Deltoid" b=abs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @trap=="Deltoid 2" b=abs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @trap=="Devil's Curve" b=abs(y^4-x^4+@a*y^2+@a2*x^2) elseif @trap=="Devil's Curve 2" b=abs(y^4-x^4-@a^2*y^2+@a2^2*x^2) elseif @trap=="Dipole Curve" b=abs((x^2+y^2)^3-@a^4*x^2) elseif @trap=="Double Egg" b=abs((x^2+y^2)^3-@a^2*x^4) elseif @trap=="Double Egg 2" b=abs(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2) elseif @trap=="Double Folium" b=abs((x^2+y^2)^2-4*@a*x*y^2) elseif @trap=="Double U" b=abs(y^2*(@a^2-x^2)-@a^4) elseif @trap=="Dumbbell Curve" b=abs(@a2^4*y^2-x^4*(@a^2-x^2)) elseif @trap=="Duplicatrix Cubic" b=abs(@a*y^2-x^2*(x-@a)) elseif @trap=="Durer's Conchoid" b=abs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @trap=="Durer's Conchoid 2" b=abs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @trap=="Dwulistne" b=abs((x^2+y^2)^2-(@a*x+@a2*y)*x^2) elseif @trap=="Egg of Columbus" b=abs(y^4+10*y^2*x^2+5*x^4-y) elseif @trap=="Egg of Granville" b=abs(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)) elseif @trap=="Egg of Granville 2" b=abs(x^2*y^2-(x-(@a+0.5))*(1-x)) elseif @trap=="Egg of Kepler" b=abs((x^2+y^2)^2-@a*x^3) elseif @trap=="Eight Curve" b=abs(x^4-@a^2*(x^2-y^2)) elseif @trap=="Elkies Trinomial Curve" b=abs(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)) elseif @trap=="Ellipse" b=abs(x^2/@a^2+y^2/@a2^2-1) elseif @trap=="Fish Curve" b=abs((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)) elseif @trap=="Focal Conic Conchoid" b=abs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @trap=="Folium" b=abs((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2) elseif @trap=="Folium of Descartes" b=abs(x^3+y^3-3*@a*x*y) elseif @trap=="Folium of Durer" b=abs((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2) elseif @trap=="Frequency Curve" b=abs(y-sqrt(2*pi)*exp(-x^2/2)) elseif @trap=="Heart Curve" b=abs((x^3+y^2-1)^3-x^2*y^3) elseif @trap=="Heart of Eugene Beutel" b=abs((x^2+y^2-1)^3-x^2*y^3) elseif @trap=="Heart of Raphael Laporte" b=abs(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6) elseif @trap=="Hippopede" b=abs((x^2+y^2)^2-@a*x^2-@a2*y^2) elseif @trap=="Hippopede of Proclus" b=abs((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2) elseif @trap=="Hoerl Curve" b=abs(y-x^@a*e^x) elseif @trap=="Humbert's Cubic" b=abs(x^3-3*x*y^2-@a^3) elseif @trap=="Hyperbola" b=abs(x^2/@a^2-y^2/@a2^2-1) elseif @trap=="Hyperbola 2" b=abs(x^2/@a^2-y^2/@a2^2+1) elseif @trap=="Hyperbolic Cosecantoid" b=abs(y-@a/sinh(x/@a2)) elseif @trap=="Hyperbolic Cosinusoid" b=abs(y-@a*cosh(x/@a2)) elseif @trap=="Hyperbolic Cotangentoid" b=abs(y-@a*cotanh(x/@a2)) elseif @trap=="Hyperbolic Secantoid" b=abs(y-@a/cosh(x/@a2)) elseif @trap=="Hyperbolic Sinusoid" b=abs(y-@a*sinh(x/@a2)) elseif @trap=="Hyperbolic Tangentoid" b=abs(y-tanh(@a*x)) elseif @trap=="Hyperelliptic Curve" b=abs(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)) elseif @trap=="Illumination Curve" b=abs(y^2-recip((x^2+1)^3)) elseif @trap=="Inverse Nephroid" b=abs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @trap=="Isoptic Curve" b=abs(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x) elseif @trap=="Kampyle of Eudoxus" b=abs(@a^2*x^4-@a2^4*(x^2+y^2)) elseif @trap=="Kappa Curve" b=abs(y^2*(x^2+y^2)-@a^2*x^2) elseif @trap=="Kepler's Folium" b=abs(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2) elseif @trap=="Kiepert Curve" b=abs((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)) elseif @trap=="Kieroid" b=abs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @trap=="Kiss Curve" b=abs(@a^4*y^2-(@a^2-x^2)^3) elseif @trap=="Klein Quartic" b=abs((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)) elseif @trap=="Kulp Quartic" b=abs(x^2*y^2-@a^2*(@a^2-y^2)) elseif @trap=="Lemniscate of Bernoulli" b=abs((x^2+y^2)^2-@a^2*(x^2-y^2)) elseif @trap=="Lemniscate of Booth" b=abs((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2) elseif @trap=="Limacon of Pascal" b=abs((x^2+y^2-@a*y)^2-(x^2+y^2)) elseif @trap=="Limacon of Pascal 2" b=abs((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)) elseif @trap=="Links Curve" b=abs((x^2+y^2-3*x)^2-4*x^2*(2-x)) elseif @trap=="Lissajous Curve" b=abs(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)) elseif @trap=="Lissajous Curve 2" b=abs(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)) elseif @trap=="Lissajous Quadratic" b=abs(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4) elseif @trap=="Logarithmic Lemniscate" b=abs(y^2-x^2*log(@a^2/x^2)) elseif @trap=="Logarithmic Sinusoid" b=abs(y-log(sqrt(1-x^2))) elseif @trap=="Logistic Growth Curve" b=abs(y-recip(1+@a*e^x)) elseif @trap=="Maltese Cross Curve" b=abs(x*y*(x^2-y^2)-x^2-y^2) elseif @trap =="Neile's Semi-Cubical Parabola" b=abs(y^3-@a*x^2) elseif @trap =="Neile's Semi-Cubical Parabola 2" b=abs((x-0.5)^3-3*y^2) elseif @trap=="Nephroid" b=abs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @trap=="Nephroid of Freeth" b=abs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @trap=="Newton's Diverging Parabolas" b=abs(@a*y^2-x*(x^2-2*@a2*x+@a3)) elseif @trap=="Newton's Diverging Parabolas 2" b=abs(y^2-x*(x^2+2*@a*x+@a2)) elseif @trap=="Nodal Curve" b=abs(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2) elseif @trap=="Oblique Bifolium" b=abs((x^2+y^2)^2-x^2*(@a*x+@a2*y)) elseif @trap=="Oblique Cappa" b=abs((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2) elseif @trap=="Oblique Cissoid" b=abs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @trap=="Oblique Pancappa" b=abs((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2) elseif @trap=="Oblique Strophoid" b=abs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @trap=="Ophiuride" b=abs(x*(x^2+y^2)-@a2*x*y-@a*y^2) elseif @trap=="Parabola" b=abs(4*@a*(x-@a2)-(y-@a3)^2) elseif @trap=="Parabola 2" b=abs(x-@a*(y-@a2)^2-@a3) elseif @trap=="Parabola 3" b=abs(y-@a*x^2-@a2*x-@a3) elseif @trap=="Parabolic Trifolium" b=abs(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)) elseif @trap=="Pear-Shaped Quartic" b=abs(@a2^2*y^2-x^3*(@a-x)) elseif @trap=="Pearls of Sluze" b=abs(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5) elseif @trap=="Pursuit Curve" b=abs(y-@a*x^2+log(x)) elseif @trap=="Pursuit Curve 2" b=abs(y-@a*x+log(x)) elseif @trap=="Quadratix of Hippias" b=abs(x-y*cotan(y/@a)) elseif @trap=="Quadrifolium" b=abs((x^2+y^2)^3-4*@a^2*x^2*y^2) elseif @trap=="Regular Trifolium" b=abs((x^2+y^2)^2-@a*x*(x^2-3*y^2)) elseif @trap=="Right Strophoid" b=abs(y^2-x^2*(@a-x)/(@a+x)) elseif @trap=="Rose Curve" b=abs(x-@a*sin(@a2*y)) elseif @trap=="Rose Curve 2" b=abs(x-@a*cos(@a2*y)) elseif @trap=="Satchel" b=abs((x^2-@a2*y)^2-@a^2*(x^2-y^2)) elseif @trap=="Scarab" b=abs((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2) elseif @trap=="Scyphoid" b=abs(x^4-y^4-4*@a*x*y^2) elseif @trap=="Secantoid" b=abs(y-@a/cos(x/@a2)) elseif @trap=="Seccoid" b=abs(y-@a2/(x*cos(x))) elseif @trap=="Semi-Trident" b=abs(x*y^2-@a*x) elseif @trap=="Serpentine Curve" b=abs(y-@a*@a2*x/(x^2+@a^2)) elseif @trap=="Sincoid" b=abs(y-@a*sin(x)/x) elseif @trap=="Sinus Chain" b=abs(y^2-abs(sin(x)+0.1*sin(2*x))) elseif @trap=="Sinusoid" b=abs(y-@a*sin(x/@a2)) elseif @trap=="Spiric Curve" b=abs((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4) elseif @trap=="Spiric of Perseus" b=abs((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3) elseif @trap=="Spiric Sections" b=abs((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)) elseif @trap=="Superellipse" b=abs((x/@a)^@a3+(y/@a2)^@a3-1) elseif @trap=="Superellipse 2" b=abs(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1) elseif @trap=="Swastika Curve" b=abs(2*x*y-x^4+y^4) elseif @trap=="Syntractrix" b=abs(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)) elseif @trap=="Szego Curve" b=abs(x^2+y^2-e^(2*x-2)) elseif @trap=="Tancoid" b=abs(y-@a*tan(x)/x) elseif @trap=="Tangentoid" b=abs(y-@a*tan(x/@a2)) elseif @trap=="Tetracuspid" b=abs(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2) elseif @trap=="Torpedo" b=abs((x^2+y^2)^2-@a*x*(x^2-y^2)) elseif @trap=="Tractrix" b=abs(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)) elseif @trap=="Trident" b=abs(y-x^2-@a/x) elseif @trap=="Trident 2" b=abs(x*y+@a*x^3+@a2*x^2+@a3*x-@a4) elseif @trap=="Trifolium" b=abs((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)) elseif @trap=="Trifolium 2" b=abs((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)) elseif @trap=="Trisectrix of Delange" b=abs((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)) elseif @trap=="Trisectrix of Maclaurin" b=abs(y^2*(@a+x)-x^2*(3*@a-x)) elseif @trap=="Trisectrix of Maclaurin 2" b=abs(2*x^3+2*x*y^2-3*x^2+y^2) elseif @trap=="Trott Curve" b=abs(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81) elseif @trap=="Tschirnhaus' Cubic" b=abs(3*@a*y^2-x*(x-@a)^2) elseif @trap=="Tschirnhaus' Cubic 2" b=abs(27*@a*y^2-(@a-x)*(x+8*@a)^2) elseif @trap=="Visiera" b=abs(x*(x^2+y^2)-@a*(x^2+2*y^2)) elseif @trap=="Viviani's Curve" b=abs(y^2-x^2*(@a^2-x^2)) elseif @trap=="Watt's Curve" b=abs((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)) elseif @trap=="Witch of Agnesi" b=abs(y-8*@a^3/(x^2+4*@a^2)) elseif @trap=="OM1" b=abs((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)) elseif @trap=="OM2" b=abs((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)) elseif @trap=="OM3" b=abs(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)) elseif @trap=="OM4" b=abs(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)) elseif @trap=="OM5" b=abs(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5) elseif @trap=="OM6" b=abs(sin(x)^3+sin(y)^3-@a) elseif @trap=="OM7" b=abs(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3) elseif @trap=="OM8" b=abs((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2) elseif @trap=="OM9" b=abs((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3) elseif @trap=="OM10" b=abs((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2) elseif @trap=="OM11" b=abs(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1) elseif @trap=="OM12" b=abs((x^2+y^2)^2-@a/(x^2-y^2)) elseif @trap=="OM13" b=abs((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)) elseif @trap=="OM14" b=abs((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)) elseif @trap=="OM15" b=abs((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y) elseif @trap=="OM16" b=abs(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))) elseif @trap=="OM17" b=abs((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)) elseif @trap=="OM18" b=abs(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)) elseif @trap=="OM19" b=abs(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))) elseif @trap=="OM20" b=abs(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))) elseif @trap=="OM21" b=abs(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4) elseif @trap=="OM22" b=abs(y-x*(x^4-@a)*(x^2+y^2)^2) elseif @trap=="OM23" b=abs((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p7 index=1000*a else m_Solid=true endif else if 1000*a>@p7 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a float b float b2 int i float index default: title="Diet Traps" int param version caption="Version" default=100 visible=@version<100 endparam param trap caption="Trapshape" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22""OM23" endparam param Fs caption="Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam param a caption="Trapshape Parameter" default=1.0 visible=@trap!="Frequency Curve" \ && @trap!="Arcs of Samothrace" && @trap!="Illumination Curve" \ && @trap!="Logarithmic Sinusoid" \ && @trap!="Elkies Trinomial Curve" && @trap!="Bolza" \ && @trap!="Hyperelliptic Curve" \ && @trap!="Maltese Cross Curve" && @trap!="Ampersand Curve" \ && @trap!="Heart of Eugene Beutel" && @trap!="Heart of Raphael Laporte" \ && @trap!="Butterfly Knot" && @trap!="Trott Curve" && @trap!="Swastika Curve" \ && @trap!="Biquartic" && @trap!="Butterfly Curve" && @trap!="Bean Curve" \ && @trap!="Bean Curve 2" && @trap!="Egg of Columbus" && @trap!="Sinus Chain" \ && @trap!="Szego Curve" && @trap!="Links Curve" && @trap!="Double Egg 2" \ && @trap!="Heart Curve" && @trap!="Cornoid 2" \ && @trap!="Nodal Curve" && @trap!="Trisectrix of Maclaurin 2" \ && @trap!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Trapshape Parameter 2" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Conchoid of de Sluze" \ || @trap=="Ellipse" || @trap=="Folium" || @trap=="Kampyle of Eudoxus" \ || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" \ || @trap=="Bullet-Nose Curve" \ || @trap=="Dwulistne" || @trap=="Cubic Joint" || @trap=="Syntractrix" \ || @trap=="Oblique Strophoid" || @trap=="Superellipse 2" || @trap=="Oblique Cissoid" \ || @trap=="Hippopede" || @trap=="Oblique Pancappa" || @trap=="Oblique Cappa" \ || @trap=="Oblique Bifolium" || @trap=="Lemniscate of Booth" \ || @trap=="Curve of Jefabek" || @trap=="Curve of Cramer" \ || @trap=="OM3" || @trap=="OM4" || @trap=="OM5" || @trap=="Hippopede of Proclus" \ || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Rose Curve" || @trap=="Rose Curve 2" || @trap=="Cassinian Ovals" \ || @trap=="Conchoid of Nicomedes" || @trap=="Devil's Curve" || @trap=="Durer's Conchoid" \ || @trap=="Devil's Curve 2" || @trap=="Durer's Conchoid 2" || @trap=="Hyperbola" \ || @trap=="Parabola" || @trap=="Hyperbola 2" \ || @trap=="Pear-Shaped Quartic" || @trap=="Serpentine Curve" || @trap=="Sinusoid"\ || @trap=="Trident 2" || @trap=="Atriphthaloid" || @trap=="Clairaut Curve" || @trap=="Clinoid" \ || @trap=="Cross Curve" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" || @trap=="Circular Cubic" \ || @trap=="Dumbbell Curve" || @trap=="Kieroid"\ || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" || @trap=="OM13" || @trap=="Ophiuride" \ || @trap=="Klein Quartic" || @trap=="Tangentoid" || @trap=="Beetle" || @trap=="Secantoid" || @trap=="Hyperbolic Secantoid" \ || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" || @trap=="Tetracuspid" || @trap=="Trifolium" \ || @trap=="Trifolium 2" || @trap=="OM14" || @trap=="OM10" || @trap=="Isoptic Curve" || @trap=="Cotangentoid" \ || @trap=="Cosinusoid" || @trap=="Hyperbolic Cosinusoid" || @trap=="Cosecantoid" || @trap=="Hyperbolic Cosecantoid" \ || @trap=="Hyperbolic Sinusoid" || @trap=="Hyperbolic Cotangentoid" || @trap=="OM16" || @trap=="Alain Curve" \ || @trap=="OM19" || @trap=="OM20" || @trap=="Focal Conic Conchoid" || @trap=="Conchoid of a Circle" || @trap=="Satchel" \ || @trap=="Kepler's Folium" || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Scarab" || @trap=="Lissajous Quadratic" \ || @trap=="Watt's Curve" || @trap=="Limacon of Pascal 2" || @trap=="Newton's Diverging Parabolas 2" endparam param a3 caption="Trapshape Parameter 3" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" || @trap=="Superellipse 2" \ || @trap=="Oblique Pancappa" || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Parabola" \ || @trap=="Trident 2" || @trap=="Clinoid" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Kieroid" || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" \ || @trap=="Klein Quartic" || @trap=="Beetle" || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" \ || @trap=="Trifolium" || @trap=="OM16" || @trap=="OM19" || @trap=="OM20" || @trap=="Conchoid of a Circle" \ || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Watt's Curve" endparam param a4 caption="Trapshape Parameter 4" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Superellipse 2" || @trap=="Cissoid of Zahradnik" \ || @trap=="Trident 2" || @trap=="Cartesian Oval" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Spiric Curve" endparam param a5 caption="Trapshape Parameter 5" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Cissoid of Zahradnik" \ || @trap=="Circular Cubic" endparam param p4 caption="Parameter 1" default=1.0 endparam param p5 caption="Parameter 2" default=1.0 endparam param f caption="Parameter 3" default=1.0 endparam param p2 caption="Center" default=(0,0) endparam param p3 caption="Rotation" default=0.0 endparam param pow1 caption="Exponent 1" default=.2 endparam param pow2 caption="Exponent 2" default=1.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_FunctionsTransform(common.ulb:UserTransform) { public: complex func Iterate(complex pz) if @f1=="ident" pz=ident(pz) elseif @f1=="sin" pz=sin(pz) elseif @f1=="sinh" pz=sinh(pz) elseif @f1=="cosh" pz=cosh(pz) elseif @f1=="tan" pz=tan(pz) elseif @f1=="tanh" pz=tanh(pz) elseif @f1=="sqr" pz=sqr(pz) elseif @f1=="exp" pz=exp(pz) elseif @f1=="abs" pz=abs(pz) elseif @f1=="recip" pz=recip(pz) elseif @f1=="sec" pz=1/cos(pz) elseif @f1=="sech" pz=1/cosh(pz) elseif @f1=="cosech" pz=1/sinh(pz) elseif @f1=="exsec" pz=1/cos(pz)-1 elseif @f1=="crd" pz=2*sin(pz/2) elseif @f1=="gd" pz=asin(tanh(pz)) elseif @f1=="sinc" pz=sin(pz)/(pz) elseif @f1=="cosc" pz=cos(pz)/(pz) elseif @f1=="coshc" pz=cosh(pz)/(pz) elseif @f1=="tanc" pz=tan(pz)/(pz) elseif @f1=="cotanc" pz=cotan(pz)/(pz) elseif @f1=="cotanhc" pz=cotanh(pz)/(pz) elseif @f1=="secc" pz=1/(pz*cos(pz)) elseif @f1=="sechc" pz=1/(pz*cosh(pz)) elseif @f1=="cosecc" pz= 1/(pz*sin(pz)) elseif @f1=="cosechc" pz=1/(pz*sinh(pz)) elseif @f1=="cube" pz=pz^3 elseif @f1=="expit" pz=1/(1+exp(-pz)) elseif @f1=="gauss" pz=exp(-sqr(pz)) elseif @f1=="sqr+" pz=sqr(pz)+pz elseif @f1=="cube+sqr+" pz=pz^3+sqr(pz)+pz elseif @f1=="cube+" pz=pz^3+pz elseif @f1=="recip+" pz=recip(pz)+pz elseif @f1=="cotan+" pz=cotan(pz)+pz elseif @f1=="sec+" pz=1/cos(pz)+pz elseif @f1=="cosec+" pz=1/sin(pz)+pz elseif @f1=="cos*" pz=cos(pz)*pz elseif @f1=="tan*" pz=tan(pz)*pz elseif @f1=="sec*" pz=pz/cos(pz) elseif @f1=="cosec*" pz=pz/sin(pz) elseif @f1=="exp*" pz=pz*exp(pz) elseif @f1=="expexp" pz=exp(exp(pz)) elseif @f1=="sinsin" pz=sin(sin(pz)) elseif @f1=="coscos" pz=cos(cos(pz)) elseif @f1=="tantan" pz=tan(tan(pz)) elseif @f1=="cotancotan" pz=cotan(cotan(pz)) elseif @f1=="secsec" pz=1/cos(1/cos(pz)) elseif @f1=="coseccosec" pz=1/sin(1/sin(pz)) elseif @f1=="sin+cos" pz=sin(pz)+cos(pz) elseif @f1=="sin+tan" pz=sin(pz)+tan(pz) else pz=cos(pz)+tan(pz) endif if @f2=="ident" pz=ident(pz) elseif @f2=="sec+cosec" pz=1/cos(pz)+1/sin(pz) elseif @f2=="sec*cosec" pz=1/(cos(pz)*sin(pz)) elseif @f2=="sec/cosec" pz=sin(pz)/cos(pz) elseif @f2=="sqr+recip" pz=sqr(pz)+recip(pz) elseif @f2=="costan+" pz=cosh(tan(pz))+pz elseif @f2=="cotantanh+" pz=cotan(tanh(pz))+pz elseif @f2=="sqr*exp" pz=sqr(pz)*exp(pz) elseif @f2=="sqr+secc" pz=sqr(pz)+1/(pz*cos(pz)) elseif @f2=="sqr*sec" pz=sqr(pz)/cos(pz) elseif @f2=="sqr*cosec" pz=sqr(pz)/sin(pz) elseif @f2=="sqr*gauss" pz=sqr(pz)*exp(-sqr(pz)) elseif @f2=="sqr*expit" pz=sqr(pz)/(1+exp(-pz)) elseif @f2=="cotanhc+recip" pz=cotanh(pz)/pz+1/pz elseif @f2=="secc+recip" pz=1/(pz*cos(pz))+1/pz elseif @f2=="sincosexp" pz=sin(cos(exp(pz))) elseif @f2=="sqrtanhsec" pz=sqr(tanh(1/cos(pz))) elseif @f2=="reciptanhsec" pz=1/(tanh(1/cos(pz))) elseif @f2=="cotanh*cos+" pz=cotanh(pz)*cos(pz)+pz elseif @f2=="cotanh*exp+" pz=cotanh(pz)*exp(pz)+pz elseif @f2=="cotan*cos+" pz=cotan(pz)*cos(pz)+pz elseif @f2=="cotan*exp*cos+" pz=cotanh(pz)*exp(pz)*cos(pz)+pz elseif @f2=="^4+" pz=pz^4+pz elseif @f2=="tan*tanh+" pz=tan(pz)*tanh(pz)+pz elseif @f2=="cotanhflip(recip+)" pz=cotanh(flip(1/pz+pz)) elseif @f2=="cotanflip(recip+)" pz=cotan(flip(1/pz+pz)) elseif @f2=="tanhflip(recip+)" pz=tanh(flip(1/pz+pz)) elseif @f2=="coshflip(recip+)" pz=cosh(flip(1/pz+pz)) elseif @f2=="sinhflip(recip+)" pz=sinh(flip(1/pz+pz)) elseif @f2=="expflip(recip+)" pz=exp(flip(1/pz+pz)) elseif @f2=="sin(recip+)" pz=sin(1/pz+pz) elseif @f2=="recip(recip+)" pz=recip(1/pz+pz) elseif @f2=="recipflip(recip+)" pz=recip(flip(1/pz+pz)) elseif @f2=="flipexsec" pz=flip(1/cos(pz)-1) elseif @f2=="recipexsec" pz=recip(1/cos(pz)-1) elseif @f2=="expexsec" pz=exp(1/cos(pz)-1) elseif @f2=="recipflipexsec" pz=recip(flip(1/cos(pz)-1)) elseif @f2=="recipcotanhexsec" pz=recip(cotanh(1/cos(pz)-1)) elseif @f2=="recipatanhexsec" pz=recip(atanh(1/cos(pz)-1)) elseif @f2=="flipcosexsec" pz=flip(cos(1/cos(pz)-1)) elseif @f2=="flipcoshexsec" pz=pz=flip(cosh(1/cos(pz)-1)) elseif @f2=="flipcotanexsec" pz=flip(cotan(1/cos(pz)-1)) elseif @f2=="exsec/excosec" pz=(1/cos(pz)-1)/(1/sin(pz)-1) elseif @f2=="exsinc" pz=sin(pz)/pz-1 elseif @f2=="excosc" pz=cos(pz)/pz-1 elseif @f2=="extanc" pz=tan(pz)/pz-1 elseif @f2=="exsecc" pz=1/(pz*cos(pz))-1 elseif @f2=="excosecc" pz=1/(pz*sin(pz))-1 elseif @f2=="exsecc*" pz=(1/(pz*cos(pz))-1)*pz elseif @f2=="excosecc*" pz=(1/(pz*sin(pz))-1)*pz elseif @f2=="sqrtrecipcube" pz=sqrt(recip(pz^3)) elseif @f2=="sqrtasinhcube" pz=sqrt(asinh(pz^3)) elseif @f2=="coshccoshc" pz=cosh(cosh(pz)/pz)/(cosh(pz)/pz) elseif @f2=="cosccosc" pz=cos(cos(pz)/pz)/(cos(pz)/pz) elseif @f2=="cotanhccotanhc" pz=cotanh(cotanh(pz)/pz)/(cotanh(pz)/pz) elseif @f2=="seccsecc" pz=cos(1/(pz*cos(pz)))/(1/(pz*cos(pz))) else pz=cosh(1/(pz*cosh(pz)))/(1/(pz*cosh(pz))) endif if @f3=="ident" pz=ident(pz) elseif @f3=="sinsin/i" pz=sin(sin(pz))/1i elseif @f3=="sinsinh/i" pz=sin(sinh(pz))/1i elseif @f3=="costanh/i" pz=cos(tanh(pz))/1i elseif @f3=="recipcotan/i" pz=recip(cotan(pz))/1i elseif @f3=="sqrtan/i" pz=sqr(tan(pz))/1i elseif @f3=="flipcay" pz=flip((pz-1i)/(pz+1i)) elseif @f3=="cotanhcay" pz=cotanh((pz-1i)/(pz+1i)) elseif @f3=="tanhcay" pz=tanh((pz-1i)/(pz+1i)) elseif @f3=="coscay" pz=cos((pz-1i)/(pz+1i)) elseif @f3=="coshcay" pz=cosh((pz-1i)/(pz+1i)) elseif @f3=="sqrcay" pz=sqr((pz-1i)/(pz+1i)) elseif @f3=="recipsincay" pz=recip(sin((pz-1i)/(pz+1i))) elseif @f3=="cotanhcotanhcay" pz=cotanh(cotanh((pz-1i)/(pz+1i))) elseif @f3=="exp+recip+sec+cosec" pz=exp(pz)+recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="recip+sec+cosec" pz=recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan+cotan+sec+cosec" pz=tan(pz)+cotan(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="exp*exp+sec+cosec" pz=exp(pz)*exp(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="cotanh*recip+sec+cosec" pz=cotanh(pz)*recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan*cos+sec+cosec" pz=tan(pz)*cos(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan*cosh+sec+cosec" pz=tan(pz)*cosh(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="sinc*cosc+sec*cosec" pz=(sin(pz)/pz)*(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="expsinc*expcosc+sec*cosec" pz=exp(sin(pz)/pz)*exp(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="sqrsinc*expcosc+sec*cosec" pz=sqr(sin(pz)/pz)*exp(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="recipsinc*cotanhcosc+sec*cosec" pz=recip(sin(pz)/pz)*cotanh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="recipsinc*coshhcosc+sec*cosec" pz=recip(sin(pz)/pz)*cosh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="expsinc*coshhcosc+sec*cosec" pz=exp(sin(pz)/pz)*cosh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="tanc*cotanc+sec*cosec" pz=(tan(pz)/pz)*(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="reciptanc*sqrcotanc +sec*cosec" pz=recip(tan(pz)/pz)*sqr(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="reciptanc*tanhcotanc+sec*cosec" pz=recip(tan(pz)/pz)*tanh(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="exsec/excosec" pz=(1/cos(pz)-1)/(1/sin(pz)-1) elseif @f3=="tanh(exsec/excosec)" pz=tanh((1/cos(pz)-1)/(1/sin(pz)-1)) elseif @f3=="tanh(flip(exsec/excosec))" pz=tanh(flip((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="tanh(exp(exsec/excosec))" pz=tanh(exp((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(flip(exsec/excosec))" pz=recip(flip((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(exp(exsec/excosec))" pz=recip(exp((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(cos(exsec/excosec))" pz=recip(cos((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(cosh(exsec/excosec))" pz=recip(cosh((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(sin(exsec/excosec))" pz=recip(sin((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(sinh(exsec/excosec))" pz=recip(sinh((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="softplus" pz=log(1+exp(pz)) elseif @f3=="sin+" pz=sin(pz)+pz elseif @f3=="cos+" pz=cos(pz)+pz elseif @f3=="tan+" pz=tan(pz)+pz elseif @f3=="versin" pz=1-cos(pz) elseif @f3=="vercos" pz=1+cos(pz) elseif @f3=="coversin" pz=1-sin(pz) elseif @f3=="covercos" pz=1+sin(pz) elseif @f3=="asinh" pz=asinh(pz) elseif @f3=="atanh" pz=atanh(pz) else pz=sqr(log(pz)) endif pz=@p1*pz^@pow+@p2 return pz endfunc default: title="Functions Transform" int param version caption="Version" default=100 visible=@version<100 endparam param f1 caption="Function 1" enum="ident""sin""sinh""cosh""tan""tanh""sqr""exp""abs""recip"\ "sec""sech""cosech""exsec""crd""gd""sinc""cosc""coshc""tanc"\ "cotanc""cotanhc""secc""sechc""cosecc""cosechc""cube""expit""gauss"\ "sqr+""cube+sqr+""cube+""recip+""cotan+""sec+""cosec+""cos*""tan*""sec*"\ "cosec*""exp*""expexp""sinsin""coscos""tantan""cotancotan""secsec""coseccosec""sin+cos"\ "sin+tan""cos+tan" endparam param f2 caption="Function 2" enum="ident""sec+cosec""sec*cosec""sec/cosec""sqr+recip""costan+""cotantanh+""sqr*exp""sqr+secc""sqr*sec"\ "sqr*cosec""sqr*gauss""sqr*expit""cotanhc+recip""secc+recip"\ "sincosexp""sqrtanhsec""reciptanhsec""cotanh*cos+""cotanh*exp+"\ "cotan*cos+""cotan*exp*cos+""^4+""tan*tanh+""cotanhflip(recip+)""cotanflip(recip+)"\ "tanhflip(recip+)""coshflip(recip+)""sinhflip(recip+)""expflip(recip+)"\ "sin(recip+)""recip(recip+)""recipflip(recip+)""flipexsec""recipexsec""expexsec""recipflipexsec"\ "recipcotanhexsec""recipatanhexsec""flipcosexsec"\ "flipcoshexsec""flipcotanexsec""exsec/excosec""exsinc""excosc""extanc""exsecc""excosecc""exsecc*""excosecc*"\ "sqrtrecipcube""sqrtasinhcube""coshccoshc""cosccosc""cotanhccotanhc""seccsecc""sechcsechc" endparam param f3 caption="Function 3" enum="ident""sinsin/i""sinsinh/i""costanh/i""recipcotan/i""sqrtan/i"\ "flipcay""cotanhcay""tanhcay""coscay""coshcay""sqrcay""recipsincay""cotanhcotanhcay"\ "exp+recip+sec+cosec""recip+sec+cosec""tan+cotan+sec+cosec"\ "exp*exp+sec+cosec""cotanh*recip+sec+cosec""tan*cos+sec+cosec""tan*cosh+sec+cosec"\ "sinc*cosc+sec*cosec""expsinc*expcosc+sec*cosec""sqrsinc*expcosc+sec*cosec""recipsinc*cotanhcosc+sec*cosec"\ "recipsinc*coshhcosc+sec*cosec""expsinc*coshhcosc+sec*cosec""tanc*cotanc+sec*cosec"\ "reciptanc*sqrcotanc +sec*cosec""reciptanc*tanhcotanc+sec*cosec""exsec/excosec"\ "tanh(exsec/excosec)""tanh(flip(exsec/excosec))""tanh(exp(exsec/excosec))""recip(flip(exsec/excosec))" \ "recip(exp(exsec/excosec))""recip(cos(exsec/excosec))""recip(cosh(exsec/excosec))""recip(sin(exsec/excosec))""recip(sinh(exsec/excosec))"\ "softplus""sin+""cos+""tan+""versin""vercos""coversin""covercos""asinh""atanh""sqrlog" endparam param p1 default=(1,0) endparam param p2 default=(0,0) endparam param pow caption="Exponent" default=1 endparam } class OM_Moebius(common.ulb:UserTransform) { public: complex func Iterate(complex pz) pz=fn1(pz) return ((@p1*pz+@p2)/(@p3*pz+@p4))^@pow endfunc default: title="Moebius" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Moebius Parameter 1" default=(2,0) endparam param p2 caption="Moebius Parameter 2" default=(0.5,0) endparam param p3 caption="Moebius Parameter 3" default=(-0.7,1) endparam param p4 caption="Moebius Parameter 4" default=(1.5,0) endparam func fn1 caption="Function" default=ident() endfunc param pow caption="Exponent" default=1.0 endparam } class OM_MunsterMap(common.ulb:UserTransform) { public: complex func Iterate(complex pz) if @v==0 return exp(@p2*1i)*pz^@pow*(pz-@p1)/(1-@p1*pz)+@p3 elseif @v==1 return exp(@p2*1i)*pz^@pow*(-@p1-1i*pz-1i*pz^3)/(@p1+pz^2+1i*pz^3)+@p3 elseif @v==2 return exp(@p2*1i)*pz^@pow*(@p1*3/2-pz^2)/(1-@p1*3*pz^2/2)+@p3 else return exp(@p2*1i)*pz^@pow*((1-conj(@p1)*pz)/(pz-@p1))*((1-conj(@p4)*pz)/(pz-@p4))+@p3 endif endfunc default: title="Munster Map" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param p1 caption="Munster Parameter 1" default=(2,0) endparam param p2 caption="Munster Parameter 2" default=0.0 endparam param p3 caption="Munster Parameter 3" default=(0,0) endparam param p4 caption="Munster Parameter 4" default=(1.5,0) visible=@v==3 endparam param pow caption="Exponent" default=(2,0) endparam } class OM_Polylog(common.ulb:UserTransform) { ;https://en.wikipedia.org/wiki/Polylogarithm ;http://oeis.org/A008292 public: complex func Iterate(complex pz) pz=fn1(pz) if @v=="-1" pz=pz/(1-pz)^2 elseif @v=="-2" pz=pz*(1+pz)/(1-pz)^3 elseif @v=="-3" pz=pz*(1+4*pz+pz^2)/(1-pz)^4 elseif @v=="-4" pz=pz*(1+pz)*(1+10*pz+pz^2)/(1-pz)^5 elseif @v=="-5" pz=pz*(pz^4+26*pz^3+66*pz^2+26*pz+1)/(1-pz)^6 elseif @v=="-6" pz=pz*(pz^5+57*pz^4+302*pz^3+302*pz^2+57*pz+1)/(1-pz)^7 elseif @v=="-7" pz=pz*(pz^6+120*pz^5+1191*pz^4++2416*pz^3+1191*pz^2+120*pz+1)/(1-pz)^8 elseif @v=="-8" pz=pz*(pz^7+247*pz^6+4293*pz^5+15619*pz^4+15619*pz^3+4293*pz^2+247*pz+1)/(1-pz)^9 elseif @v=="-9" pz=pz*(pz^8+502*pz^7+14608*pz^6+88234*pz^5+156190*pz^4+88234*pz^3+14608*pz^2+502*pz+1)/(1-pz)^10 elseif @v=="-10" pz=pz*(pz^9+1013*pz^8+47840*pz^7+455192*pz^6+1310354*pz^5+1310354*pz^4+455192*pz^3+47840*pz^2+1013*pz+1)/(1-pz)^11 endif pz=@p1*pz+@p2 return pz endfunc default: title="Polylog" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Polylogarithm" enum="-1""-2""-3""-4""-5""-6""-7""-8""-9""-10" endparam param p1 caption="Parameter 1" default=(1,0) endparam param p2 caption="Parameter 2" default=(0,0) endparam func fn1 caption="Function" default=ident() endfunc } class OM_AttraktorTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) float x=real(fn1(pz)) float y=imag(fn1(pz)) if k2<=k1 if @V=="Brusselator" d=cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3)) elseif @V =="Oscillating Chemical Reaction" d=cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2))) elseif @V=="Buckling Column Model" d=cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4)) elseif @V=="Rayleigh" d=cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3)) elseif @V=="Cathala" d=cabs(@p1*x+y+flip(@p2+x^2)) elseif @V=="Sprott-Elhadj" d=cabs(@p1*x/(1+y^2)+flip(x+@p2*y)) elseif @V=="Modified Lozi" d=cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x)) elseif @V=="Multifold Henon" d=cabs(1-@p1*sin(x)+@p2*y+flip(x)) elseif @V=="Mira" d=cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2))) elseif @V=="Garrote-Mira" d=cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2))) elseif @V=="Hopalong" d=cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x)) elseif @V=="Martin" d=cabs(y+sin(x)+flip(@p1-x)) elseif @V=="Popcorn" d=cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x)))) elseif @V=="Popcorn 2" d=cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x)))) elseif @V=="Ushiki" d=cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y)) elseif @V=="Strelkova-Anishchenko" d=cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y))) elseif @V=="Cat" d=cabs((2*x+y)%1+flip((x+y)%1)) elseif @V=="HCA" d=cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2))) elseif @V=="Coupled Logistic" d=cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x))) elseif @V=="Sine" d=cabs(y+flip(@p1*sin(x)+@p2*y)) elseif @V=="Henon" d=cabs(1-@p1*x^2+y+flip(@p2*x)) elseif @V=="Burgers" d=cabs(@p1*x-y^2+flip(@p2*y+x*y)) elseif @V=="Cao-Lai" d=cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi))) elseif @V=="Marotto-Lorenz" d=cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x)) elseif @V=="de Jong" d=cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y))) elseif @V=="Clifford" d=cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y))) elseif @V=="Svensson" d=cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y))) elseif @V=="Chip" d=cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x)) elseif @V=="Chirikov Mod" d=cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x))) elseif @V=="Duffing" d=cabs(y+flip(-@p2*x+@p1*y-y^3)) elseif @V=="Quadruptwo" d=cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x)) elseif @V=="Ikeda" d=cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1))))) elseif @V=="Gumowski-Mira" d=cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2))) elseif @V=="Gumowski-Mira Mod" d=cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2))) elseif @V=="Gumowski-Mira 2" d=cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2))) elseif @V=="Bogdanov" d=cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y) elseif @V=="Mira 2" d=cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2)) elseif @V=="Mira 3" d=cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3)) elseif @V=="Gingerbread" d=cabs(1-y+cabs(x)+flip(x)) elseif @V=="Hamilton" d=cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y))))) elseif @V=="Kam Torus" d=cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1))) elseif @V=="Lozi" d=cabs(1+y-@p1*cabs(x)+flip(@p2*x)) elseif @V=="Threeply" d=cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x)) elseif @V=="Tinkerbell" d=cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y)) elseif @V=="Van der Pol" d=cabs(@p1*(x-x^3/3-y)+flip(x/@p1)) elseif @V=="Van der Pol 2" d=cabs(y+flip(@p1*(1-x^2)*y-x)) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Attraktor Traps" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Trap" enum="Brusselator""Oscillating Chemical Reaction"\ "Buckling Column Model""Rayleigh""Cathala""Sprott-Elhadj"\ "Modified Lozi""Multifold Henon""Mira""Garrote-Mira"\ "Hopalong""Martin""Popcorn""Popcorn 2""Ushiki"\ "Strelkova-Anishchenko""Cat""HCA""Coupled Logistic"\ "Sine""Henon""Burgers""Cao-Lai""Marotto-Lorenz""de Jong"\ "Clifford""Svensson""Chip""Chirikov Mod""Duffing"\ "Quadruptwo""Ikeda""Gumowski-Mira""Gumowski-Mira Mod"\ "Gumowski-Mira 2""Bogdanov""Mira 2""Mira 3""Gingerbread" \ "Hamilton""Kam Torus""Lozi""Threeply""Tinkerbell" \ "Van der Pol""Van der Pol 2" default=3 endparam param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!=16 && @V!=38 endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!=11 && @V!=16 && @V!=28 && @V!=38 \ && @V!=40 && @V!=44 && @V!=45 endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==10 \ || @V==14 || @V==24 || @V==25 || @V==26 \ || @V==27 || @V==30 || @V==31 || @V==32 \ || @V==34 || @V==35 || @V==37 || @V==42 \ || @V==43 endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V==2 || @V==14 || @V==24 \ || @V==25 || @V==26 || @V==31 || @V==43 endparam param p5 caption="Detail" default=8 endparam func fn1 caption="Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Plasmosis(common.ulb:GradientColoring) { ; This draws on work by Ron Barnett and Damien Jones. Many thanks to them. public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=1e30 d1=(1,0) d2=(0,1)^0.411111111111 f=0.0 g=1.0 i=7 s=ppixel if @F1=="sin" s=sin(s) elseif @F1=="sinh" s=sinh(s) elseif @F1=="cos" s=cos(s) elseif @F1=="cosh" s=cosh(s) elseif @F1=="cotan" s=cotan(s) elseif @F1=="cotanh" s=cotanh(s) elseif @F1=="sqr" s=sqr(s) elseif @F1=="sqrt" s=sqrt(s) elseif @F1=="log" s=log(s) elseif @F1=="exp" s=exp(s) elseif @F1=="abs" s=abs(s) elseif @F1=="conj" s=conj(s) elseif @F1=="flip" s=flip(s) elseif @F1=="ident" s=ident(s) elseif @F1=="recip" s=recip(s) elseif @F1=="versin" s=1-cos(s) elseif @F1=="haversin" s=(1-cos(s))/2 elseif @F1=="coversin" s=1-sin(s) elseif @F1=="hacoversin" s=(1-sin(s))/2 elseif @F1=="vercos" s=1+cos(s) elseif @F1=="havercos" s=(1+cos(s))/2 elseif @F1=="covercos" s=1+sin(s) elseif @F1=="hacovercos" s=(1+sin(s))/2 elseif @F1=="cosec" s=1/sin(s) elseif @F1=="cosech" s=1/sinh(s) elseif @F1=="excosec" s=1/sin(s)-1 elseif @F1=="aexcosec" s=asin(1/(s+1)) elseif @F1=="crd" s=2*sin(s/2) elseif @F1=="acrd" s=2*asin(s/2) elseif @F1=="sinc" s=sin(s)/(s) elseif @F1=="sinhc" s=sinh(s)/(s) elseif @F1=="cosc" s=cos(s)/(s) elseif @F1=="coshc" s=cosh(s)/(s) elseif @F1=="cotanc" s=cotan(s)/(s) elseif @F1=="cotanhc" s=cotanh(s)/(s) elseif @F1=="cosecc" s= 1/(s*sin(s)) elseif @F1=="cosechc" s=1/(s*sinh(s)) elseif @F1=="cube" s=s^3 elseif @F1=="cuberoot" s=s^(1/3) elseif @F1=="colog" s=-log(s) elseif @F1=="expit" s=1/(1+exp(-s)) elseif @F1=="softplus" s=log(1+exp(s)) elseif @F1=="sqr+" s=sqr(s)+s elseif @F1=="cube+" s=s^3+sqr(s)+s elseif @F1=="sin+" s=sin(s)+s elseif @F1=="cos+" s=cos(s)+s elseif @F1=="cotan+" s=cotan(s)+s elseif @F1=="cosec+" s=1/sin(s)+s elseif @F1=="sin*" s=sin(s)*s elseif @F1=="cos*" s=cos(s)*s elseif @F1=="cotan*" s=cotan(s)*s else s=s/sin(s) endif h=s*@p3*d1+@p4 while i>0 j1=floor(real(h))%256 j2=floor(imag(h))%256 if j1<0 j1=j1+256 endif if j2<0 j2=j2+256 endif j3=(j1+1)%256 j4=(j2+1)%256 k1=real(h)-floor(real(h)) k2=imag(h)-floor(imag(h)) k3=k1-1 k4=k2-1 m1=(j1^2%65536+j2)^2%65536 m2=(j3^2%65536+j2)^2%65536 m3=(j1^2%65536+j4)^2%65536 m4=(j3^2%65536+j4)^2%65536 n1=m1^2*0.25%512-256 n2=m2^2*0.25%512-256 n3=m3^2*0.25%512-256 n4=m4^2*0.25%512-256 n5=(m1+1)^2*0.25%512-256 n6=(m2+1)^2*0.25%512-256 n7=(m3+1)^2*0.25%512-256 n8=(m4+1)^2*0.25%512-256 p=0.0 p=1/sqrt(sqr(n1)+sqr(n5)) n1=n1*p n5=n5*p p=1/sqrt(sqr(n2)+sqr(n6)) n2=n2*p n6=n6*p p=1/sqrt(sqr(n3)+sqr(n7)) n3=n3*p n7=n7*p p=1/sqrt(sqr(n4)+sqr(n8)) n4=n4*p n8=n8*p q1=k1*n1+k2*n5 q2=k3*n2+k2*n6 q3=k1*n3+k4*n7 q4=k3*n4+k4*n8 r1=sqr(k1)*(3-k1*2) r2=sqr(k2)*(3-k2*2) r3=q1+r1*(q2-q1) r4=q3+r1*(q4-q3) f=f+(r3+r2*(r4-r3))*g g=g/2 h=h*d2*2 i=i-1 endwhile endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="*pixel" pz=pz*pixel else pz=pz/pixel endif a=cabs(pz) if a@p8 index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) else m_Solid=true endif else if b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7)<@p8 index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) else m_Solid=true endif endif else index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) endif return index endfunc private: float a float b complex d1 complex d2 float f float g int i complex s complex h float j1 float j2 float j3 float j4 float k1 float k2 float k3 float k4 float m1 float m2 float m3 float m4 float n1 float n2 float n3 float n4 float n5 float n6 float n7 float n8 float p float q1 float q2 float q3 float q4 float r1 float r2 float r3 float r4 float index default: title="Plasmosis" int param version caption="Version" default=100 visible=@version<100 endparam param p3 caption="Parameter 1" default=(1,0) endparam param p4 caption="Parameter 2" default=(0,0) endparam param p7 caption="Parameter 3" default = 10.0 endparam param p2 caption="Parameter 4" default=0.99 endparam param F3 caption="Function 1" enum="sin""sinh""asin""asinh"\ "cos""cosh""acos"\ "tanh""atan""atanh"\ "sqr""sqrt""exp""ident"\ "ceil" default=13 endparam param Fs caption="Function 2" enum="sin""sinh""asin""asinh""tan""tanh""atan"\ "atanh""sqr""sqrt"\ "ident""versin""aversin""haversin""ahaversin"\ "avercos"\ "exsec""aexsec"\ "crd""acrd""gd""agd"\ "cube""cuberoot""logit"\ "primecount""sqr+""cube+""sin+""tan+""sin*""cos*"\ "sinsin""+pixel""-pixel"\ "*pixel" default=10 endparam param F1 caption="Function 3" enum="sin""sinh""cos""cosh"\ "cotan""cotanh""sqr""sqrt""log""exp""abs""conj"\ "flip""ident""recip""versin""haversin""coversin"\ "hacoversin""vercos""havercos""covercos"\ "hacovercos"\ "cosec""cosech"\ "excosec""aexcosec""crd""acrd""sinc""sinhc""cosc""coshc"\ "cotanc""cotanhc""cosecc""cosechc"\ "cube""cuberoot""colog""expit""softplus"\ "sqr+""cube+""sin+""cos+""cotan+""cosec+""sin*""cos*""cotan*"\ "cosec*" default=13 endparam param solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=0.875 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AttraktorTraps2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=@p5 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) float x=real(fn1(pz)) float y=imag(fn1(pz)) if @V=="Brusselator" d=b-abs(atan2((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V =="Oscillating Chemical Reaction" d=b-abs(atan2((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Buckling Column Model" d=b-abs(atan2(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Rayleigh" d=b-abs(atan2(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Cathala" d=b-abs(atan2(@p1*x+y+flip(@p2+x^2))) elseif @V=="Sprott-Elhadj" d=b-abs(atan2(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Modified Lozi" d=b-abs(atan2(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Multifold Henon" d=b-abs(atan2(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Mira" d=b-abs(atan2(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Garrote-Mira" d=b-abs(atan2(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Hopalong" d=b-abs(atan2(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Martin" d=b-abs(atan2(y+sin(x)+flip(@p1-x))) elseif @V=="Popcorn" d=b-abs(atan2(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" d=b-abs(atan2(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Ushiki" d=b-abs(atan2((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Strelkova-Anishchenko" d=b-abs(atan2(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Cat" d=b-abs(atan2((2*x+y)%1+flip((x+y)%1))) elseif @V=="HCA" d=b-abs(atan2(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Coupled Logistic" d=b-abs(atan2((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="Sine" d=b-abs(atan2(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Henon" d=b-abs(atan2(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Burgers" d=b-abs(atan2(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" d=b-abs(atan2(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Marotto-Lorenz" d=b-abs(atan2((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="de Jong" d=b-abs(atan2(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Clifford" d=b-abs(atan2(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Svensson" d=b-abs(atan2(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Chip" d=b-abs(atan2(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" d=b-abs(atan2(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Duffing" d=b-abs(atan2(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Quadruptwo" d=b-abs(atan2(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Ikeda" d=b-abs(atan2(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Gumowski-Mira" d=b-abs(atan2(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira Mod" d=b-abs(atan2((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Gumowski-Mira 2" d=b-abs(atan2(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Bogdanov" d=b-abs(atan2(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Mira 2" d=b-abs(atan2(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" d=b-abs(atan2((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Gingerbread" d=b-abs(atan2(1-y+cabs(x)+flip(x))) elseif @V=="Hamilton" d=b-abs(atan2(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="Kam Torus" d=b-abs(atan2(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Lozi" d=b-abs(atan2(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Threeply" d=b-abs(atan2(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" d=b-abs(atan2(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Van der Pol" d=b-abs(atan2(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" d=b-abs(atan2(y+flip(@p1*(1-x^2)*y-x))) endif if d>0 if @Va==0 c=abs(c^(2/3)+d^(2/3)-@p6) elseif @Va==1 c=c+d+1-@p6 elseif @Va==2 c=abs(d-@p6*cosh(c/@p6)) elseif @Va==3 c=sqrt(c+d)+1-@p6 elseif @Va==4 c=|cabs(pz*d)-@p6| endif endif endfunc float func ResultIndex(complex pz) if @solid if @invert if c<@p7 index=c else m_Solid=true endif else if c>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float b float c float d float index default: title="Attraktor Traps 2" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5" default=1 endparam param p6 caption="Variant Parameter" default=1.0 endparam heading endheading param V caption="Trap" enum="Brusselator""Oscillating Chemical Reaction"\ "Buckling Column Model""Rayleigh""Cathala""Sprott-Elhadj"\ "Modified Lozi""Multifold Henon""Mira""Garrote-Mira"\ "Hopalong""Martin""Popcorn""Popcorn 2""Ushiki"\ "Strelkova-Anishchenko""Cat""HCA""Coupled Logistic"\ "Sine""Henon""Burgers""Cao-Lai""Marotto-Lorenz""de Jong"\ "Clifford""Svensson""Chip""Chirikov Mod""Duffing"\ "Quadruptwo""Ikeda""Gumowski-Mira""Gumowski-Mira Mod"\ "Gumowski-Mira 2""Bogdanov""Mira 2""Mira 3""Gingerbread" \ "Hamilton""Kam Torus""Lozi""Threeply""Tinkerbell" \ "Van der Pol""Van der Pol 2" default=0 endparam param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!=16 && @V!=38 endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!=11 && @V!=16 && @V!=28 && @V!=38 \ && @V!=40 && @V!=44 && @V!=45 endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==10 \ || @V==14 || @V==24 || @V==25 || @V==26 \ || @V==27 || @V==30 || @V==31 || @V==32 \ || @V==34 || @V==35 || @V==37 || @V==42 \ || @V==43 endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V==2 || @V==14 || @V==24 \ || @V==25 || @V==26 || @V==31 || @V==43 endparam heading endheading param p5 caption="Parameter" default=0.25 endparam func fn1 caption="Function" default=ident() endfunc heading endheading param @solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.0225 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AttraktorTraps3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 i=0 b=0.0 b2=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if @S==true if i>=0 && i<=1E20 pz=(abs(fn2(fn1(pz)))-@center)/@p5 float x=sqrt(@p6)*real(pz) float y=1/sqrt(@p6)*imag(pz) if @V=="Bogdanov" b=log(cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Bogdanov-Takens" b=log(cabs(y+flip(@p1+@p2*x+x^2-x*y))) elseif @V=="Brusselator" b=log(cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V=="Buckling Column Model" b=log(cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Burgers" b=log(cabs(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" b=log(cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Cat" b=log(cabs((2*x+y)%1+flip((x+y)%1))) elseif @V=="Cathala" b=log(cabs(@p1*x+y+flip(@p2/2+x^2))) elseif @V=="Cathala 2" b=log(cabs((1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3))) elseif @V=="Chip" b=log(cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" b=log(cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Coupled Logistic" b=log(cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="de Jong" b=log(cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Duffing" b=log(cabs(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Garrote-Mira" b=log(cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Gingerbread" b=log(cabs(1-y+cabs(x)+flip(x))) elseif @V=="Gumowski-Mira" b=log(cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira 2" b=log(cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Gumowski-Mira Mod" b=log(cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Hamilton" b=log(cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="HCA" b=log(cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Henon" b=log(cabs(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Hopalong" b=log(cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Horsthemke-Lefever" b=log(cabs(@p1*x*(1-x/@p3)-@p2*x*y+flip(-@p2*x*y+@p4*(@p7-y)))) elseif @V=="Ikeda" b=log(cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Ilhem-Amel" b=log(cabs(x^3+@p1*x+@p2+y+flip(@p3*x))) elseif @V=="Kam Torus" b=log(cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Latoocarfian" b=log(cabs(sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)))) elseif @V=="Lozi" b=log(cabs(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Marotto-Lorenz" b=log(cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="Martin" b=log(cabs(y+sin(x)+flip(@p1-x))) elseif @V=="Mira" b=log(cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Mira 2" b=log(cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" b=log(cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Modified Lozi" b=log(cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Nowicki-Swirszcz" b=log(cabs(3*x*((x-y)^2-@p1)/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)))) elseif @V=="Multifold Henon" b=log(cabs(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Oscillating Chemical Reaction" b=log(cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Pickover 1" b=log(cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Pickover 2" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3))) elseif @V=="Pickover 3" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2))) elseif @V=="Pickover 4" b=log(cabs(cabs(sin(@p1*y))+(sin(@p1*x))^2+flip(cabs(sin(@p2*x))+(sin(@p2*y))^2))) elseif @V=="Polyharmonic Pendulum" b=log(cabs(y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)))) elseif @V=="Popcorn" b=log(cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" b=log(cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Quadruptwo" b=log(cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Rayleigh" b=log(cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Sine" b=log(cabs(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Sine-Sine" b=log(cabs(sin(x)-sin(2*y)+flip(x))) elseif @V=="Sprott" b=log(cabs((1+@p1*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2))) elseif @V=="Sprott-Elhadj" b=log(cabs(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Standard Map" b=log(cabs(x+@p1*sin(y)+flip(y+x+@p1*sin(y)))) elseif @V=="Strelkova-Anishchenko" b=log(cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Svensson" b=log(cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Threeply" b=log(cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" b=log(cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Ushiki" b=log(cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Van der Pol" b=log(cabs(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" b=log(cabs(y+flip(@p1*(1-x^2)*y-x))) elseif @V=="Volterra-Lotka" b=log(cabs(@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y))) elseif @V=="OM1" b=log(cabs(@p1*y-sin(x)+3*y^2+flip(@p2*x^2+cos(y)-3*x))) elseif @V=="OM2" b=log(cabs(@p1+@p2*y*x+y^2+flip(pz+@p3*x^2+y^3))) elseif @V=="OM3" b=log(cabs(@p1*y^2+x-3*x*y+flip(x-3*@p2*x^3-y))) elseif @V=="OM4" b=log(cabs(y-x^2/3+2*@p1*x*y+flip(x^3+2*y+@p2/2))) elseif @V=="OM5" b=log(cabs(y-@p1*x*sin(2*y)+0.001*cos(x)+flip(@p2*y*cos(2*x)+0.001*cos(y)))) elseif @V=="OM6" b=log(cabs(x*sin(2*y)+@p1*cos(x)+flip(y*cos(2*x)+@p2*cos(y)))) elseif @V=="OM7" b=log(cabs(sin(y)+y^3-x/2+flip(@p1*x-x^2-0.3*@p2*y))) elseif @V=="OM8" b=log(cabs(@p1*sinh((x^2-y^2)+2*sqrt(-1)*x*y+@p2-1))) elseif @V=="OM9" b=log(cabs(@p1*x+y+x^2-2*y^2+flip(-x+@p1*y+x^2-x^3))) elseif @V=="OM10" b=log(cabs((x*(1-x)+y*cos(@p1-x)/(@p1+x))/@p2+flip(x-y))) elseif @V=="OM11" b=log(cabs(|sin(@p1*y)|+(sin(@p1*x))^2+flip(|sin(@p2*x)|+(sin(@p2*y))^2))) elseif @V=="OM12" b=log(cabs(1-@p1*y^2-acosh(x)+flip(@p2*x))) elseif @V=="OM13" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sin(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM14" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM15" b=log(cabs(x-y-cotanh(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM16" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-flip(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM17" b=log(cabs(x-y-log(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sqrt(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM18" b=log(cabs(x-y-tan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM19" b=log(cabs(@p1*x+cos(y)+x^2-2*y^2+flip(-cos(x)+@p1*y+x^2-x^3))) elseif @V=="OM20" b=log(cabs(@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2)))) elseif @V=="OM21" b=log(cabs(@p1*(3*y+1)*x*(1-x)+flip((3*y+1)*y*(@p2-y)+@p3))) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif else if i>=0 && i<=1E20 pz=(fn2(fn1(pz))-@center)/@p5 float x=sqrt(@p6)*real(pz) float y=1/sqrt(@p6)*imag(pz) if @V=="Bogdanov" b=log(cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Bogdanov-Takens" b=log(cabs(y+flip(@p1+@p2*x+x^2-x*y))) elseif @V=="Brusselator" b=log(cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V=="Buckling Column Model" b=log(cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Burgers" b=log(cabs(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" b=log(cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Cat" b=log(cabs((2*x+y)%1+flip((x+y)%1))) elseif @V=="Cathala" b=log(cabs(@p1*x+y+flip(@p2/2+x^2))) elseif @V=="Cathala 2" b=log(cabs((1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3))) elseif @V=="Chip" b=log(cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" b=log(cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Coupled Logistic" b=log(cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="de Jong" b=log(cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Duffing" b=log(cabs(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Garrote-Mira" b=log(cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Gingerbread" b=log(cabs(1-y+cabs(x)+flip(x))) elseif @V=="Gumowski-Mira" b=log(cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira 2" b=log(cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Gumowski-Mira Mod" b=log(cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Hamilton" b=log(cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="HCA" b=log(cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Henon" b=log(cabs(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Hopalong" b=log(cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Horsthemke-Lefever" b=log(cabs(@p1*x*(1-x/@p3)-@p2*x*y+flip(-@p2*x*y+@p4*(@p7-y)))) elseif @V=="Ikeda" b=log(cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Ilhem-Amel" b=log(cabs(x^3+@p1*x+@p2+y+flip(@p3*x))) elseif @V=="Kam Torus" b=log(cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Latoocarfian" b=log(cabs(sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)))) elseif @V=="Lozi" b=log(cabs(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Marotto-Lorenz" b=log(cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="Martin" b=log(cabs(y+sin(x)+flip(@p1-x))) elseif @V=="Mira" b=log(cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Mira 2" b=log(cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" b=log(cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Modified Lozi" b=log(cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Nowicki-Swirszcz" b=log(cabs(3*x*((x-y)^2-@p1)/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)))) elseif @V=="Multifold Henon" b=log(cabs(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Oscillating Chemical Reaction" b=log(cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Pickover 1" b=log(cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Pickover 2" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3))) elseif @V=="Pickover 3" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2))) elseif @V=="Pickover 4" b=log(cabs(cabs(sin(@p1*y))+(sin(@p1*x))^2+flip(cabs(sin(@p2*x))+(sin(@p2*y))^2))) elseif @V=="Polyharmonic Pendulum" b=log(cabs(y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)))) elseif @V=="Popcorn" b=log(cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" b=log(cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Quadruptwo" b=log(cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Rayleigh" b=log(cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Sine" b=log(cabs(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Sine-Sine" b=log(cabs(sin(x)-sin(2*y)+flip(x))) elseif @V=="Sprott" b=log(cabs((1+@p1*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2))) elseif @V=="Sprott-Elhadj" b=log(cabs(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Standard Map" b=log(cabs(x+@p1*sin(y)+flip(y+x+@p1*sin(y)))) elseif @V=="Strelkova-Anishchenko" b=log(cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Svensson" b=log(cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Threeply" b=log(cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" b=log(cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Ushiki" b=log(cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Van der Pol" b=log(cabs(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" b=log(cabs(y+flip(@p1*(1-x^2)*y-x))) elseif @V=="Volterra-Lotka" b=log(cabs(@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y))) elseif @V=="OM1" b=log(cabs(@p1*y-sin(x)+3*y^2+flip(@p2*x^2+cos(y)-3*x))) elseif @V=="OM2" b=log(cabs(@p1+@p2*y*x+y^2+flip(pz+@p3*x^2+y^3))) elseif @V=="OM3" b=log(cabs(@p1*y^2+x-3*x*y+flip(x-3*@p2*x^3-y))) elseif @V=="OM4" b=log(cabs(y-x^2/3+2*@p1*x*y+flip(x^3+2*y+@p2/2))) elseif @V=="OM5" b=log(cabs(y-@p1*x*sin(2*y)+0.001*cos(x)+flip(@p2*y*cos(2*x)+0.001*cos(y)))) elseif @V=="OM6" b=log(cabs(x*sin(2*y)+@p1*cos(x)+flip(y*cos(2*x)+@p2*cos(y)))) elseif @V=="OM7" b=log(cabs(sin(y)+y^3-x/2+flip(@p1*x-x^2-0.3*@p2*y))) elseif @V=="OM8" b=log(cabs(@p1*sinh((x^2-y^2)+2*sqrt(-1)*x*y+@p2-1))) elseif @V=="OM9" b=log(cabs(@p1*x+y+x^2-2*y^2+flip(-x+@p1*y+x^2-x^3))) elseif @V=="OM10" b=log(cabs((x*(1-x)+y*cos(@p1-x)/(@p1+x))/@p2+flip(x-y))) elseif @V=="OM11" b=log(cabs(|sin(@p1*y)|+(sin(@p1*x))^2+flip(|sin(@p2*x)|+(sin(@p2*y))^2))) elseif @V=="OM12" b=log(cabs(1-@p1*y^2-acosh(x)+flip(@p2*x))) elseif @V=="OM13" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sin(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM14" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM15" b=log(cabs(x-y-cotanh(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM16" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-flip(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM17" b=log(cabs(x-y-log(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sqrt(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM18" b=log(cabs(x-y-tan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM19" b=log(cabs(@p1*x+cos(y)+x^2-2*y^2+flip(-cos(x)+@p1*y+x^2-x^3))) elseif @V=="OM20" b=log(cabs(@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2)))) elseif @V=="OM21" b=log(cabs(@p1*(3*y+1)*x*(1-x)+flip((3*y+1)*y*(@p2-y)+@p3))) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p8 index=1000*a else m_Solid=true endif else if 1000*a>@p8 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a int i float b float b2 float index default: title="Attraktor Traps 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Trap" enum="Bogdanov""Bogdanov-Takens""Brusselator""Buckling Column Model""Burgers""Cao-Lai""Cat""Cathala""Cathala 2"\ "Chip""Chirikov Mod""Coupled Logistic""de Jong""Duffing"\ "Garrote-Mira""Gingerbread""Gumowski-Mira""Gumowski-Mira 2""Gumowski-Mira Mod"\ "Hamilton""HCA""Henon""Hopalong""Horsthemke-Lefever""Ikeda""Ilhem-Amel""Kam Torus""Latoocarfian""Lozi"\ "Marotto-Lorenz""Martin""Mira""Mira 2""Mira 3""Modified Lozi""Nowicki-Swirszcz""Multifold Henon""Oscillating Chemical Reaction""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Polyharmonic Pendulum""Popcorn""Popcorn 2""Quadruptwo""Rayleigh""Sine"\ "Sine-Sine""Sprott""Sprott-Elhadj""Standard Map""Strelkova-Anishchenko""Svensson"\ "Threeply""Tinkerbell""Ushiki""Van der Pol""Van der Pol 2""Volterra-Lotka"\ "OM1""OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21" default=7 endparam func fn1 default=sqr() endfunc func fn2 default=ident() endfunc param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!="Cat" && @V!="Gingerbread" && @V!="Sine-Sine" endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!="Martin" && @V!="Cat" && @V!="Chirikov Mod" && @V!="Gingerbread" \ && @V!="Kam Torus" && @V!="Van der Pol" && @V!="Van der Pol 2" && @V!="Sine-Sine" \ && @V!="OM9" && @V!="OM19" && @V!="OM20" && @V!="Standard Map" endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V=="Brusselator" || @V=="Buckling Column Model" || @V=="Rayleigh" || @V=="Hopalong" \ || @V=="Ushiki" || @V=="de Jong" || @V=="Pickover 1" || @V=="Svensson" \ || @V=="Chip" || @V=="Quadruptwo" || @V=="Ikeda" || @V=="Gumowski-Mira" \ || @V=="Gumowski-Mira 2" || @V=="Bogdanov" || @V=="Mira 3" || @V=="Threeply" \ || @V=="Tinkerbell" || @V=="OM2" || @V=="Cathala 2" || @V=="Ilhem-Amel" \ || @V=="Latoocarfian" || @V=="Pickover 2" || @V=="Horsthemke-Lefever" || @V=="OM13" \ || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" || @V=="OM18" || @V=="OM21" \ || @V=="Volterra-Lotka" || @V=="Polyharmonic Pendulum" || @V=="Nowicki-Swirszcz" endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V=="Buckling Column Model" || @V=="Ushiki" || @V=="de Jong" \ || @V=="Pickover 1" || @V=="Svensson" || @V=="Ikeda" || @V=="Tinkerbell" \ || @V=="Latoocarfian" || @V=="Horsthemke-Lefever" || @V=="OM13" \ || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" || @V=="OM18" \ || @V=="Volterra-Lotka" || @V=="Polyharmonic Pendulum" || @V=="Nowicki-Swirszcz" endparam param p7 caption="Trap Parameter 5" default=(1,0) visible=@V=="Horsthemke-Lefever" endparam param p5 caption="Parameter 1" default=-2.9 endparam param p6 caption="Parameter 2" default=1.0 endparam param f caption="Parameter 3" default=1.0 endparam param center caption="Parameter 4" default=(0,0) endparam param pow1 caption="Exponent 1" default=.2 endparam param pow2 caption="Exponent2" default=1.0 endparam param S caption="Symmetrise" default=false endparam param @solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=0.14 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Broubly(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="asinh" pz=asinh(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="third" pz=pz/3 elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif pz=@p3*pz+@p4 if @V=="1" pz=fn3(pz*(@p1-pz)+@p2) elseif @V=="2" pz=fn3(pz+@p1*pz/(pz+(@p2+1))^3) elseif @V=="3" pz=fn3(@p1*pz*exp((@p2+1)-exp(pz))) elseif @V=="4" pz=fn3(pz+@p1*abs(flip(pz))+@p2) elseif @V=="5" pz=fn3(pz+@p1*1i*cos(pz)+@p2) elseif @V=="6" pz=fn3(pz+@p1*1i*abs(tanh(pz))+@p2) elseif @V=="7" pz=fn3(pz+@p1*cotanh(flip(pz))+@p2) elseif @V=="8" pz=fn3(pz-@p1*(pz^4-1)/(4*pz^3)+@p2) elseif @V=="9" pz=fn3(pz+@p1*cosh(pz)+@p2) elseif @V=="10" pz=fn3(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2) elseif @V=="11" if |pz|<1 pz=pz/|pz| endif pz=@p1*fn3(pz)+@p2 elseif @V=="12" pz=fn3((pz-@p1)/(pz+@p1)+@p2) elseif @V=="13" pz=pz+@p1/fn3(pz)+@p2 elseif @V=="14" pz=pz+@p1*1i/fn3(pz)+@p2 elseif @V=="15" pz=fn3(pz+@p1*flip(pz)+@p2) elseif @V=="16" pz=fn3(pz+@p1*1i*sqr(pz)+@p2) elseif @V=="17" pz=fn3(pz+@p1*flip(sqr(pz))+@p2) elseif @V=="18" pz=fn3(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2) elseif @V=="19" pz=fn3(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2) elseif @V=="20" pz=fn3(pz+@p1*conj(pz)+@p2) elseif @V=="21" pz=fn3(pz+@p1*1i*flip(pz)+@p2) elseif @V=="22" pz=fn3(pz+@p1*conj(exp(pz))+@p2) elseif @V=="23" pz=fn3(pz+@p1*1i*sqr(sqr(pz))+@p2) elseif @V=="24" pz=fn3(pz+@p1*conj(sqr(pz))+@p2) elseif @V=="25" pz=fn3(@p1*pz*cosh(pz^2)+@p2) elseif @V=="26" pz=fn3(@p1*pz*cos(pz^2)+@p2) elseif @V=="27" pz=fn3(pz*(@p1*1i-pz)+@p2) elseif @V=="28" pz=fn3(@p1*pz*sqrt((@p2+1)-cabs(pz))) elseif @V=="29" pz=fn3(pz+@p1*abs(cotan(pz))+@p2) elseif @V=="30" pz=fn3(pz+@p1*flip(tan(pz))+@p2) elseif @V=="31" pz=fn3(pz+@p1*flip(cosh(pz))+@p2) elseif @V=="32" pz=fn3(pz+@p1*conj(cos(pz))+@p2) elseif @V=="33" pz=@p1*fn3(@p1/(pz-(@p2+1)))+(@p2+1) elseif @V=="34" pz=fn3(pz+@p1*cosh(flip(pz))+@p2) elseif @V=="35" pz=fn3(((pz^2+@p1-1)/(2*pz+@p1-2))^2+(@p2-0.5)) elseif @V=="36" pz=fn3(pz+@p1*cosh(sin(pz))+@p2) elseif @V=="37" pz=fn3(pz+@p1*1i*flip(sinh(pz))+@p2) elseif @V=="38" pz=fn3(pz+@p1*conj(log(pz))+@p2) elseif @V=="39" pz=fn3(pz^2*(pz-4)/(@p1+4*pz)+@p2) elseif @V=="40" pz=fn3(pz+@p1*abs(exp(pz))+@p2) elseif @V=="41" pz=fn3(@p1*pz*log(pz^2)+@p2) elseif @V=="42" pz=fn3(pz+@p1*exp(conj(pz))+@p2) elseif @V=="43" pz=fn3(pz+@p1*flip(sinh(pz))+@p2) elseif @V=="44" pz=fn3(pz-@p1*(pz^3-1)/(3*pz^2)+@p2) elseif @V=="45" pz=fn3(pz+@p1*cabs(tan(pz))+@p2) elseif @V=="46" pz=fn3(pz+@p1*1i*cos(sinh(pz))+@p2) elseif @V=="47" pz=fn3(pz+@p1*1i*cosh(conj(pz))+@p2) elseif @V=="48" pz=fn3(@p1*pz*fn3((@p2+1)-sqrt(pz))) elseif @V=="49" pz=fn3(pz+@p1*1i*cabs(tanh(pz))+@p2) elseif @V=="50" pz=fn3(pz+@p1*1i*flip(cotan(pz))+@p2) elseif @V=="51" pz=fn3(pz+@p1*1i*sqr(sinh(pz))+@p2) elseif @V=="52" pz=fn3((pz-@p1*1i)/(pz+@p1*1i)+@p2) elseif @V=="53" pz=fn3(pz+@p1*1i*cosh(abs(pz))+@p2) elseif @V=="54" pz=fn3(pz+@p1*1i*flip(cos(pz))+@p2) elseif @V=="55" pz=fn3(pz+@p1*1i*abs(sqr(pz))+@p2) elseif @V=="56" pz=fn3(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2) elseif @V=="57" pz=fn3(pz+@p1*1i*flip(recip(pz))+@p2) elseif @V=="58" pz=fn3(pz+@p1*1i*cotan(cosh(pz))+@p2) elseif @V=="59" pz=fn3(pz+@p1*1i*sqr(tan(pz))+@p2) elseif @V=="60" pz=fn3(pz+@p1*1i*sin(cos(pz))+@p2) endif if @Fs2=="sin" pz=sin(pz) elseif @Fs2=="sinh" pz=sinh(pz) elseif @Fs2=="asinh" pz=asinh(pz) elseif @Fs2=="cos" pz=cos(pz) elseif @Fs2=="cosh" pz=cosh(pz) elseif @Fs2=="acosh" pz=acosh(pz) elseif @Fs2=="tan" pz=tan(pz) elseif @Fs2=="tanh" pz=tanh(pz) elseif @Fs2=="atan" pz=atan(pz) elseif @Fs2=="atanh" pz=atanh(pz) elseif @Fs2=="cotan" pz=cotan(pz) elseif @Fs2=="cotanh" pz=cotanh(pz) elseif @Fs2=="sqr" pz=sqr(pz) elseif @Fs2=="sqrt" pz=sqrt(pz) elseif @Fs2=="log" pz=log(pz) elseif @Fs2=="exp" pz=exp(pz) elseif @Fs2=="ident" pz=ident(pz) elseif @Fs2=="recip" pz=recip(pz) elseif @Fs2=="versin" pz=1-cos(pz) elseif @Fs2=="aversin" pz=acos(1-pz) elseif @Fs2=="haversin" pz=(1-cos(pz))/2 elseif @Fs2=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs2=="coversin" pz=1-sin(pz) elseif @Fs2=="acoversin" pz=asin(1-pz) elseif @Fs2=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs2=="vercos" pz=1+cos(pz) elseif @Fs2=="avercos" pz=acos(1+pz) elseif @Fs2=="havercos" pz=(1+cos(pz))/2 elseif @Fs2=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs2=="covercos" pz=1+sin(pz) elseif @Fs2=="acovercos" pz=asin(1+pz) elseif @Fs2=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs2=="acotan" pz=atan(1/(pz)) elseif @Fs2=="acotanh" pz=atanh(1/(pz)) elseif @Fs2=="sec" pz=1/cos(pz) elseif @Fs2=="sech" pz=1/cosh(pz) elseif @Fs2=="asech" pz=acosh(1/pz) elseif @Fs2=="cosec" pz=1/sin(pz) elseif @Fs2=="cosech" pz=1/sinh(pz) elseif @Fs2=="acosec" pz=asin(1/pz) elseif @Fs2=="acosech" pz=asinh(1/pz) elseif @Fs2=="exsec" pz=1/cos(pz)-1 elseif @Fs2=="aexsec" pz= acos(1/(pz+1)) elseif @Fs2=="excosec" pz=1/sin(pz)-1 elseif @Fs2=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs2=="crd" pz=2*sin(pz/2) elseif @Fs2=="gd" pz=asin(tanh(pz)) elseif @Fs2=="agd" pz=asinh(tan(pz)) elseif @Fs2=="sinc" pz=sin(pz)/(pz) elseif @Fs2=="sinhc" pz=sinh(pz)/(pz) elseif @Fs2=="cosc" pz=cos(pz)/(pz) elseif @Fs2=="coshc" pz=cosh(pz)/(pz) elseif @Fs2=="tanc" pz=tan(pz)/(pz) elseif @Fs2=="tanhc" pz=tanh(pz)/(pz) elseif @Fs2=="cotanc" pz=cotan(pz)/(pz) elseif @Fs2=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs2=="secc" pz=1/(pz*cos(pz)) elseif @Fs2=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs2=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs2=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs2=="cube" pz=pz^3 elseif @Fs2=="cuberoot" pz=pz^(1/3) elseif @Fs2=="colog" pz=-log(pz) elseif @Fs2=="logit" pz= log(pz/(1-pz)) elseif @Fs2=="expit" pz=1/(1+exp(-pz)) elseif @Fs2=="gauss" pz=exp(-sqr(pz)) elseif @Fs2=="softplus" pz=log(1+exp(pz)) elseif @Fs2=="primecount" pz=pz/log(pz) elseif @Fs2=="sqr+" pz=sqr(pz)+pz elseif @Fs2=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs2=="sin+" pz=sin(pz)+pz elseif @Fs2=="cos+" pz=cos(pz)+pz elseif @Fs2=="tan+" pz=tan(pz)+pz elseif @Fs2=="cotan+" pz=cotan(pz)+pz elseif @Fs2=="sec+" pz=1/cos(pz)+pz elseif @Fs2=="cosec+" pz=1/sin(pz)+pz elseif @Fs2=="sin*" pz=sin(pz)*pz elseif @Fs2=="cos*" pz=cos(pz)*pz elseif @Fs2=="tan*" pz=tan(pz)*pz elseif @Fs2=="cotan*" pz=cotan(pz)*pz elseif @Fs2=="sec*" pz=pz/cos(pz) elseif @Fs2=="cosec*" pz=pz/sin(pz) elseif @Fs2=="loglog" pz=log(log(pz)) elseif @Fs2=="sinsin" pz=sin(sin(pz)) elseif @Fs2=="coscos" pz=cos(cos(pz)) elseif @Fs2=="+pixel" pz=pz+pixel elseif @Fs2=="-pixel" pz=pz-pixel elseif @Fs2=="*pixel" pz=pz*pixel elseif @Fs2=="/pixel" pz=pz/pixel elseif @Fs2=="third" pz=pz/3 elseif @Fs2=="half" pz=pz/2 elseif @Fs2=="double" pz=pz*2 elseif @Fs2=="triple" pz=pz*3 elseif @Fs2=="ceil" pz=ceil(pz) elseif @Fs2=="floor" pz=floor(pz) elseif @Fs2=="trunc" pz=trunc(pz) else pz=round(pz) endif float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) if @solid if @invert if (atan(c)+1)*0.5<@p7 index=(atan(c)+1)*0.5 else m_Solid=true endif else if (atan(c)+1)*0.5>@p7 index=(atan(c)+1)*0.5 else m_Solid=true endif endif else index=(atan(c)+1)*0.5 endif return index endfunc private: float c float index default: title="Broubly" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param @p2 caption="Variant Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param adj caption="Adjustment" default=1.5 endparam param Fs caption="Z Function" enum="asinh""acosh""atan"\ "sqr""sqrt""log""abs""cabs""conj"\ "flip""ident""recip""avercos"\ "asec""asech""acosec""acosech""aexsec"\ "aexcosec""crd""gd""cosc""coshc"\ "cube""colog""logit""softplus"\ "sqr+""cube+"\ "+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple" default=10 endparam param Fs2 caption="Loop Function" enum="sin""sinh""asinh""cos""cosh""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp"\ "ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple"\ "ceil""floor""trunc""round" default=16 endparam func fn3 caption="Variant Function" default=ident() endfunc param @solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.55 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Tontinibla(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=1.0 c=0.0 d=0.0 f=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @v==0 pz=pz^(10*@pow) elseif @v==1 pz=exp(pz)^(10*@pow) elseif @v==2 pz=sqrt(pz)^(10*@pow) elseif @v==3 pz=sqr(pz)^(10*@pow) elseif @v==4 pz=atan(pz)^(10*@pow) elseif @v==5 pz=tanh(pz)^(10*@pow) elseif @v==6 pz=cos(pz)^(10*@pow) elseif @v==7 pz=asinh(pz)^(10*@pow) elseif @v==8 pz=recip(pz)^(10*@pow) elseif @v==9 pz=trunc(pz)^(10*@pow) elseif @v==10 pz=round(pz)^(10*@pow) elseif @v==11 pz=atan(pz+pz^2)^(10*@pow) elseif @v==12 pz=tanh(pz+pz^2)^(10*@pow) elseif @v==13 pz=tan(pz+pz^2)^(10*@pow) elseif @v==14 pz=cos(pz+pz^2)^(10*@pow) elseif @v==15 pz=asin(pz+pz^2)^(10*@pow) elseif @v==16 pz=sin(pz+pz^2)^(10*@pow) elseif @v==17 pz=trunc(pz+pz^2)^(10*@pow) elseif @v==18 pz=round(pz+pz^2)^(10*@pow) elseif @v==19 pz=cotanh(pz+1/pz)^(10*@pow) elseif @v==20 pz=cotan(pz+1/pz)^(10*@pow) elseif @v==21 pz=atan(pz+1/pz)^(10*@pow) elseif @v==22 pz=tanh(pz+1/pz)^(10*@pow) elseif @v==23 pz=cos(pz+1/pz)^(10*@pow) elseif @v==24 pz=sin(pz+1/pz)^(10*@pow) elseif @v==25 pz=recip(pz+1/pz)^(10*@pow) elseif @v==26 pz=exp(pz-pz^2)^(10*@pow) elseif @v==27 pz=exp(pz-1/pz)^(10*@pow) elseif @v==28 pz=atanh(pz-1/pz)^(10*@pow) elseif @v==29 pz=tan(pz-1/pz)^(10*@pow) elseif @v==30 pz=cosh(pz-1/pz)^(10*@pow) elseif @v==31 pz=sinh(pz-1/pz)^(10*@pow) elseif @v==32 pz=(exp(pz)*tan(pz))^(10*@pow) elseif @v==33 pz=(tanh(pz)*recip(pz))^(10*@pow) elseif @v==34 pz=(cosh(pz)*cos(pz))^(10*@pow) elseif @v==35 pz=(cos(pz)*ceil(pz))^(10*@pow) elseif @v==36 pz=(cos(pz)*round(pz))^(10*@pow) else pz=(sinh(pz)*recip(pz))^(10*@pow) endif pz=pz+@p1*100 float g=cabs(pz) float h=g if g<0 h=-g endif b=b/((h/128)^2+1.0) float m=0.25*f c=c+cos(m)*b d=d+sin(m)*b f=f+10*@p2 endfunc float func ResultIndex(complex pz) float n=cabs(c+1i*d)+@p3 if @solid if @invert if n/(2.0*@p3)>@p7 index=n/(2.0*@p3) else m_Solid=true endif else if n/(2.0*@p3)<@p7 index=n/(2.0*@p3) else m_Solid=true endif endif else index=n/(2.0*@p3) endif return index endfunc private: float b float c float d float f float index default: title="Tontinibla" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param p1 default=(0,0) endparam param p2 caption="Parameter 2" default=0.01 endparam param p3 caption="Parameter 3" default=3.142 endparam param pow caption="Exponent" default=(2,0) endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=cabs(ppixel) d=1/log(@adj1) f=0.0 g=log(log(@adj2*100000000)/2.0) h=0.0 k=0.0 m=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=a pz=@p1*fn1(pz)+@p2 x=real(pz) y=imag(pz) if @v=="Astroid" h=cabs(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @v=="Atriphthaloid" h=cabs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @v=="Cardioid" h=cabs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @v=="Cissoid of Diocles" h=cabs(y^2-x^3/(2*@a-x)) elseif @v=="Cissoid of Diocles 2" h=cabs(y^2*(2*@a-x)-x^8) elseif @v=="Cissoid of Zahradnik" h=cabs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @v=="Clinoid" h=cabs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @v=="Cochleoid" h=cabs((x^2+y^2)*atan(y/x)-@a*y) elseif @v=="Conchoid of a Circle" h=cabs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @v=="Conchoid of Nicomedes" h=cabs((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @v=="Conchoid of de Sluze" h=cabs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @v=="Cornoid" h=cabs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @v=="Cornoid 2" h=cabs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @v=="Coscoid" h=cabs(y-@a*cos(x)/x) elseif @v=="Cosecantoid" h=cabs(y-@a/sin(x/@a2)) elseif @v=="Cosinusoid" h=cabs(y-@a*cos(x/@a2)) elseif @v=="Cotangentoid" h=cabs(y-@a*cotan(x/@a2)) elseif @v=="Cycloid" h=cabs(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y))) elseif @v=="Deltoid" h=cabs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @v=="Deltoid 2" h=cabs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @v=="Durer's Conchoid" h=cabs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @v=="Durer's Conchoid 2" h=cabs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @v=="Focal Conic Conchoid" h=cabs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @v=="Hyperbolic Cosecantoid" h=cabs(y-@a/sinh(x/@a2)) elseif @v=="Hyperbolic Cosinusoid" h=cabs(y-@a*cosh(x/@a2)) elseif @v=="Hyperbolic Cotangentoid" h=cabs(y-@a*cotanh(x/@a2)) elseif @v=="Hyperbolic Secantoid" h=cabs(y-@a/cosh(x/@a2)) elseif @v=="Hyperbolic Sinusoid" h=cabs(y-@a*sinh(x/@a2)) elseif @v=="Hyperbolic Tangentoid" h=cabs(y-tanh(@a*x)) elseif @v=="Inverse Nephroid" h=cabs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @v=="Kieroid" h=cabs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @v=="Logarithmic Sinusoid" h=cabs(y-log(sqrt(1-x^2))) elseif @v=="Nephroid" h=cabs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @v=="Nephroid of Freeth" h=cabs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @v=="Oblique Cissoid" h=cabs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @v=="Oblique Strophoid" h=cabs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @v=="Right Strophoid" h=cabs(y^2-x^2*(@a-x)/(@a+x)) elseif @v=="Scyphoid" h=cabs(x^4-y^4-4*@a*x*y^2) elseif @v=="Secantoid" h=cabs(y-@a/cos(x/@a2)) elseif @v=="Seccoid" h=cabs(y-@a2/(x*cos(x))) elseif @v=="Sincoid" h=cabs(y-@a*sin(x)/x) elseif @v=="Sinusoid" h=cabs(y-@a*sin(x/@a2)) elseif @v=="Tancoid" h=cabs(y-@a*tan(x)/x) elseif @v=="Tangentoid" h=cabs(y-@a*tan(x/@a2)) endif if !m k=abs(h-c) a=a+(h-k)/(h+c-k) else m=false endif endfunc float func ResultIndex(complex pz) a=a/(m_Iterations) b=b/(m_Iterations-1) f=d*g-d*log(log(cabs(h))) if @solid if @invert if b+(a-b)*(f+1)<@p7 index=b+(a-b)*(f+1) else m_Solid=true endif else if b+(a-b)*(f+1)>@p7 index=b+(a-b)*(f+1) else m_Solid=true endif endif else index=b+(a-b)*(f+1) endif return index endfunc private: float a float b float c float d float f float g float h float k bool m float index default: title="Oidery" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(1,0) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=20.0 endparam param adj2 caption="Adjustment 2" default=0.0000001 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.35 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery2(common.ulb:GradientColoring) { public: float func ResultIndex(complex pz) pz=@p1*fn1(pz)+@p2 float x=real(pz) float y=imag(pz) if @v=="Astroid" float a=atan2(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @v=="Atriphthaloid" float a=atan2(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @v=="Cardioid" float a=atan2((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @v=="Cissoid of Diocles" float a=atan2(y^2-x^3/(2*@a-x)) elseif @v=="Cissoid of Diocles 2" float a=atan2(y^2*(2*@a-x)-x^8) elseif @v=="Cissoid of Zahradnik" float a=atan2(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @v=="Clinoid" float a=atan2(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @v=="Cochleoid" float a=atan2((x^2+y^2)*atan(y/x)-@a*y) elseif @v=="Conchoid of a Circle" float a=atan2((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @v=="Conchoid of Nicomedes" float a=atan2((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @v=="Conchoid of de Sluze" float a=atan2(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @v=="Cornoid" float a=atan2((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @v=="Cornoid 2" float a=atan2(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @v=="Coscoid" float a=atan2(y-@a*cos(x)/x) elseif @v=="Cosecantoid" float a=atan2(y-@a/sin(x/@a2)) elseif @v=="Cosinusoid" float a=atan2(y-@a*cos(x/@a2)) elseif @v=="Cotangentoid" float a=atan2(y-@a*cotan(x/@a2)) elseif @v=="Cycloid" float a=atan2(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y))) elseif @v=="Deltoid" float a=atan2((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @v=="Deltoid 2" float a=atan2((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @v=="Durer's Conchoid" float a=atan2((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @v=="Durer's Conchoid 2" float a=atan2(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @v=="Focal Conic Conchoid" float a=atan2((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @v=="Hyperbolic Cosecantoid" float a=atan2(y-@a/sinh(x/@a2)) elseif @v=="Hyperbolic Cosinusoid" float a=atan2(y-@a*cosh(x/@a2)) elseif @v=="Hyperbolic Cotangentoid" float a=atan2(y-@a*cotanh(x/@a2)) elseif @v=="Hyperbolic Secantoid" float a=atan2(y-@a/cosh(x/@a2)) elseif @v=="Hyperbolic Sinusoid" float a=atan2(y-@a*sinh(x/@a2)) elseif @v=="Hyperbolic Tangentoid" float a=atan2(y-tanh(@a*x)) elseif @v=="Inverse Nephroid" float a=atan2((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @v=="Kieroid" float a=atan2(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @v=="Logarithmic Sinusoid" float a=atan2(y-log(sqrt(1-x^2))) elseif @v=="Nephroid" float a=atan2((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @v=="Nephroid of Freeth" float a=atan2((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @v=="Oblique Cissoid" float a=atan2((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @v=="Oblique Strophoid" float a=atan2(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @v=="Right Strophoid" float a=atan2(y^2-x^2*(@a-x)/(@a+x)) elseif @v=="Scyphoid" float a=atan2(x^4-y^4-4*@a*x*y^2) elseif @v=="Secantoid" float a=atan2(y-@a/cos(x/@a2)) elseif @v=="Seccoid" float a=atan2(y-@a2/(x*cos(x))) elseif @v=="Sincoid" float a=atan2(y-@a*sin(x)/x) elseif @v=="Sinusoid" float a=atan2(y-@a*sin(x/@a2)) elseif @v=="Tancoid" float a=atan2(y-@a*tan(x)/x) else float a=atan2(y-@a*tan(x/@a2)) endif if @solid if @invert if 0.01*m_Iterations+(a+pi)/(2*pi)<@p7 index=0.01*m_Iterations+(a+pi)/(2*pi) else m_Solid=true endif else if 0.01*m_Iterations+(a+pi)/(2*pi)>@p7 index=0.01*m_Iterations+(a+pi)/(2*pi) else m_Solid=true endif endif else index=0.01*m_Iterations+(a+pi)/(2*pi) endif return index endfunc private: float index default: title="Oidery 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(0.5,0.5) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.6 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_LegendrePolynomialTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=@adj3/10 b=20*@adj4 c=(b-1)/@adj1 d=0.0 i=0 f=254.0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="3" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="5" if |pz|>1 pz=pz/|pz| endif elseif @Va=="6" pz=pz-1/pz elseif @Va=="7" pz=pz-pz^2 elseif @Va=="8" pz=pz+pz^2 elseif @Va=="9" pz=pz^2*(pz-2)/(1-2*pz) elseif @Va=="10" pz=(pz-1i)/(pz+1i) elseif @Va=="11" pz=pz-(pz^3-1)/(3*pz^2) elseif @Va=="12" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) pz=pz+trunc(pz) elseif @Va=="13" pz=pz^2*(pz^3-1)/(3*pz^2) elseif @Va=="14" pz=real(pz)-imag(pz)*cotan(imag(pz)) elseif @Va=="15" pz=cos(2*real(pz)+flip(2*imag(pz))) elseif @Va=="16" pz=(real(pz)^2-imag(pz)^2)*(real(pz)^2+imag(pz)^2)^2-2*real(pz)*imag(pz)*(real(pz)-1) else pz=-sin(imag(pz))*3+flip(sin(-2*real(pz))) endif if @v=="2" pz=fn2((3*pz^2-1)/2) elseif @v=="3" pz=fn2((5*pz^3-3*pz)/2) elseif @v=="4" pz=fn2((35*pz^4-30*pz^2+3)/8) elseif @v=="5" pz=fn2((63*pz^5-70*pz^3+15*pz)/8) elseif @v=="6" pz=fn2((231*pz^6-315*pz^4+105*pz^2-5)/16) elseif @v=="7" pz=fn2((429*pz^7-693*pz^5+315*pz^3-35*pz)/16) elseif @v=="8" pz=fn2((6435*pz^8-12012*pz^6+6930*pz^4-1260*pz^2+35)/128) elseif @v=="9" pz=fn2((12155*pz^9-25740*pz^7+18018*pz^5-4620*pz^3+315*pz)/128) elseif @v=="10" pz=fn2((46189*pz^10-109395*pz^8+90090*pz^6-30030*pz^4+3465*pz^2-63)/256) endif float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) if !g && (k<@adj1) && (i>=@adj2) g=true d=i%a f=c*k+d*b endif i=i+1 endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if ((real(f)+1)%256)/256>@p7 index=((real(f)+1)%256)/256 else m_Solid=true endif else if ((real(f)+1)%256)/256<@p7 index=((real(f)+1)%256)/256 else m_Solid=true endif endif else index=((real(f)+1)%256)/256 endif return index endfunc private: float a float b float c float d int i float f bool g float index default: title="Legendre Polynomial Traps" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17" default=0 endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8""9""10" default=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=0 endparam param adj3 caption="Adjustment 3" default=20.0 endparam param adj4 caption="Adjustment 4" default=6.25 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.8 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) a=a+0.02 b=b+0.01 pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" pz=pz+cos(pz) elseif @Va=="5" pz=pz-1/exp(pz) elseif @Va=="6" pz=pz+cosh(pz) elseif @Va=="7" if |pz|<1 pz=pz/|pz| endif elseif @Va=="8" if |pz|>1 pz=pz/|pz| endif elseif @Va=="9" pz=pz+0.3*cotanh(pz) elseif @Va=="10" pz=pz+cotan(pz) elseif @Va=="11" pz=pz+0.3*cosh(pz) elseif @Va=="12" pz=pz-1/pz elseif @Va=="13" pz=pz-0.3/exp(pz) elseif @Va=="14" pz=pz-1/log(pz) elseif @Va=="15" pz=pz+0.3*cos(pz) elseif @Va=="16" pz=pz-0.3/sqrt(pz) elseif @Va=="17" pz=pz-1/sqrt(pz) elseif @Va=="18" pz=pz-0.3/sqr(pz) elseif @Va=="19" pz=pz-1/cos(pz) elseif @Va=="20" pz=pz-0.3/log(pz) elseif @Va=="21" pz=pz-0.3/pz elseif @Va=="22" pz=pz+cotanh(pz) elseif @Va=="23" pz=pz+sqrt(pz) elseif @Va=="24" pz=pz+log(pz) elseif @Va=="25" pz=pz-1/sqr(pz) elseif @Va=="26" pz=pz-0.3/cos(pz) elseif @Va=="27" pz=pz+0.3*sqr(pz) elseif @Va=="28" pz=pz+0.3*log(pz) elseif @Va=="29" pz=pz+sqr(pz) elseif @Va=="30" pz=pz+exp(pz) elseif @Va=="31" pz=pz-0.3*cotanh(pz) elseif @Va=="32" pz=pz-cosh(pz) elseif @Va=="33" pz=pz-cos(pz) elseif @Va=="34" pz=pz+1/pz elseif @Va=="35" pz=pz+1/exp(pz) elseif @Va=="36" pz=pz+1/log(pz) elseif @Va=="37" pz=pz-0.3*sqr(pz) elseif @Va=="38" pz=pz-sqrt(pz) elseif @Va=="39" pz=pz-log(pz) elseif @Va=="40" pz=pz-exp(pz) elseif @Va=="41" pz=pz-0.3*log(pz) elseif @Va=="42" pz=pz-sqr(pz) elseif @Va=="43" pz=pz-cotanh(pz) elseif @Va=="44" pz=pz-cotan(pz) elseif @Va=="45" pz=pz-0.3*cosh(pz) elseif @Va=="46" pz=pz-0.3*cos(pz) elseif @Va=="47" pz=pz+0.3/exp(pz) elseif @Va=="48" pz=pz+0.3/log(pz) elseif @Va=="49" pz=pz+1/sqrt(pz) elseif @Va=="50" pz=pz+0.3/sqrt(pz) elseif @Va=="51" pz=pz+1/sqr(pz) elseif @Va=="52" pz=pz+0.3/sqr(pz) elseif @Va=="53" pz=pz+1/cos(pz) elseif @Va=="54" pz=pz+0.3/cos(pz) elseif @Va=="55" if |pz|<1 pz=pz/|pz| endif pz=-cos(pz) elseif @Va=="56" if |pz|<1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="57" if |pz|<1 pz=pz/|pz| endif pz=cosh(pz) elseif @Va=="58" if |pz|<1 pz=pz/|pz| endif pz=sin(pz) endif x=real(pz) y=imag(pz) if @v=="Astroid" pz=@p3*log(x^(2/3)+y^(2/3)-@a^(2/3))+@p4 elseif @v=="Atriphthaloid" pz=@p3*log(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2)+@p4 elseif @v=="Cardioid" pz=@p3*log((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2))+@p4 elseif @v=="Cissoid of Diocles" pz=@p3*log(y^2-x^3/(2*@a-x))+@p4 elseif @v=="Cissoid of Diocles 2" pz=@p3*log(y^2*(2*@a-x)-x^8)+@p4 elseif @v=="Cissoid of zahradnik" pz=@p3*log(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y)+@p4 elseif @v=="Clinoid" pz=@p3*log(y-@a2*e^(x/@a)-@a3*e^(-x/@a))+@p4 elseif @v=="Cochleoid" pz=@p3*log((x^2+y^2)*atan(y/x)-@a*y)+@p4 elseif @v=="Conchoid of a Circle" pz=@p3*log((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2)+@p4 elseif @v=="Conchoid of Nicomedes" pz=@p3*log((x-@a2)^2*(x^2+y^2)-@a^2*x^2)+@p4 elseif @v=="Conchoid of de Sluze" pz=@p3*log(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2)+@p4 elseif @v=="Cornoid" pz=@p3*log((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6)+@p4 elseif @v=="Cornoid 2" pz=@p3*log(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4)+@p4 elseif @v=="Coscoid" pz=@p3*log(y-@a*cos(x)/x)+@p4 elseif @v=="Cosecantoid" pz=@p3*log(y-@a/sin(x/@a2))+@p4 elseif @v=="Cosinusoid" pz=@p3*log(y-@a*cos(x/@a2))+@p4 elseif @v=="Cotangentoid" pz=@p3*log(y-@a*cotan(x/@a2))+@p4 elseif @v=="Cycloid" pz=@p3*log(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y)))+@p4 elseif @v=="Deltoid" pz=@p3*log((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3)+@p4 elseif @v=="Deltoid 2" pz=@p3*log((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2))+@p4 elseif @v=="Durer's Conchoid" pz=@p3*log((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2)+@p4 elseif @v=="Durer's Conchoid 2" pz=@p3*log(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2))+@p4 elseif @v=="Focal Conic Conchoid" pz=@p3*log((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2)+@p4 elseif @v=="Hyperbolic Cosecantoid" pz=@p3*log(y-@a/sinh(x/@a2))+@p4 elseif @v=="Hyperbolic Cosinusoid" pz=@p3*log(y-@a*cosh(x/@a2))+@p4 elseif @v=="Hyperbolic Cotangentoid" pz=@p3*log(y-@a*cotanh(x/@a2))+@p4 elseif @v=="Hyperbolic Secantoid" pz=@p3*log(y-@a/cosh(x/@a2))+@p4 elseif @v=="Hyperbolic Sinusoid" pz=@p3*log(y-@a*sinh(x/@a2))+@p4 elseif @v=="Hyperbolic Tangentoid" pz=@p3*log(y-tanh(@a*x))+@p4 elseif @v=="Inverse Nephroid" pz=@p3*log((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2))+@p4 elseif @v=="Kieroid" pz=@p3*log(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2)+@p4 elseif @v=="Logarithmic Sinusoid" pz=@p3*log(y-log(sqrt(1-x^2)))+@p4 elseif @v=="Nephroid" pz=@p3*log((x^2+y^2-4*@a^2)^3-108*@a^4*x^2)+@p4 elseif @v=="Nephroid of Freeth" pz=@p3*log((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2)+@p4 elseif @v=="Oblique Cissoid" pz=@p3*log((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2)+@p4 elseif @v=="Oblique Strophoid" pz=@p3*log(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y)+@p4 elseif @v=="Right Strophoid" pz=@p3*log(y^2-x^2*(@a-x)/(@a+x))+@p4 elseif @v=="Scyphoid" pz=@p3*log(x^4-y^4-4*@a*x*y^2)+@p4 elseif @v=="Secantoid" pz=@p3*log(y-@a/cos(x/@a2))+@p4 elseif @v=="Seccoid" pz=@p3*log(y-@a2/(x*cos(x)))+@p4 elseif @v=="Sincoid" pz=@p3*log(y-@a*sin(x)/x)+@p4 elseif @v=="Sinusoid" pz=@p3*log(y-@a*sin(x/@a2))+@p4 elseif @v=="Tancoid" pz=@p3*log(y-@a*tan(x)/x)+@p4 else pz=@p3*log(y-@a*tan(x/@a2))+@p4 endif c=c+real(atanh(|pz|*a))*@adj/b endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if (c%1000)/1000<@p7 index=(c%1000)/1000 else m_Solid=true endif else if (c%1000)/1000>@p7 index=(c%1000)/1000 else m_Solid=true endif endif else index=(c%1000)/1000 endif return index endfunc private: float a float b float c float index default: title="Oidery 3" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58" endparam param V caption="Curve" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(1,0) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param p3 caption="Log Curve Parameter 1" default=1.0 endparam param p4 caption="Log Curve Parameter 2" default=0.0 endparam param adj caption="Adjustment" default=2.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.075 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Suvercuys(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 if @Fs=="sin" z=sin(pz) elseif @Fs=="sinh" z=sinh(pz) elseif @Fs=="asin" z=asin(pz) elseif @Fs=="asinh" z=asinh(pz) elseif @Fs=="cos" z=cos(pz) elseif @Fs=="cosh" z=cosh(pz) elseif @Fs=="acos" z=acos(pz) elseif @Fs=="acosh" z=acosh(pz) elseif @Fs=="tan" z=tan(pz) elseif @Fs=="tanh" z=tanh(pz) elseif @Fs=="atan" z=atan(pz) elseif @Fs=="atanh" z=atanh(pz) elseif @Fs=="cotan" z=cotan(pz) elseif @Fs=="cotanh" z=cotanh(pz) elseif @Fs=="sqr" z=sqr(pz) elseif @Fs=="sqrt" z=sqrt(pz) elseif @Fs=="log" z=log(pz) elseif @Fs=="exp" z=exp(pz) elseif @Fs=="abs" z=abs(pz) elseif @Fs=="cabs" z=cabs(pz) elseif @Fs=="conj" z=conj(pz) elseif @Fs=="flip" z=flip(pz) elseif @Fs=="ident" z=ident(pz) elseif @Fs=="recip" z=recip(pz) elseif @Fs=="versin" z=1-cos(pz) elseif @Fs=="aversin" z=acos(1-pz) elseif @Fs=="haversin" z=(1-cos(pz))/2 elseif @Fs=="ahaversin" z=2*asin(sqrt(pz)) elseif @Fs=="coversin" z=1-sin(pz) elseif @Fs=="acoversin" z=asin(1-pz) elseif @Fs=="hacoversin" z=(1-sin(pz))/2 elseif @Fs=="vercos" z=1+cos(pz) elseif @Fs=="avercos" z=acos(1+pz) elseif @Fs=="havercos" z=(1+cos(pz))/2 elseif @Fs=="ahavercos" z=2*acos(sqrt(pz)) elseif @Fs=="covercos" z=1+sin(pz) elseif @Fs=="acovercos" z=asin(1+pz) elseif @Fs=="hacovercos" z=(1+sin(pz))/2 elseif @Fs=="acotan" z=atan(1/(pz)) elseif @Fs=="acotanh" z=atanh(1/(pz)) elseif @Fs=="sec" z=1/cos(pz) elseif @Fs=="sech" z=1/cosh(pz) elseif @Fs=="asec" z=acos(1/pz) elseif @Fs=="asech" z=acosh(1/pz) elseif @Fs=="cosec" z=1/sin(pz) elseif @Fs=="cosech" z=1/sinh(pz) elseif @Fs=="acosec" z=asin(1/pz) elseif @Fs=="acosech" z=asinh(1/pz) elseif @Fs=="exsec" z=1/cos(pz)-1 elseif @Fs=="aexsec" z= acos(1/(pz+1)) elseif @Fs=="excosec" z=1/sin(pz)-1 elseif @Fs=="aexcosec" z=asin(1/(pz+1)) elseif @Fs=="crd" z=2*sin(pz/2) elseif @Fs=="acrd" z=2*asin(pz/2) elseif @Fs=="gd" z=asin(tanh(pz)) elseif @Fs=="agd" z=asinh(tan(pz)) elseif @Fs=="sinc" z=sin(pz)/(pz) elseif @Fs=="sinhc" z=sinh(pz)/(pz) elseif @Fs=="cosc" z=cos(pz)/(pz) elseif @Fs=="coshc" z=cosh(pz)/(pz) elseif @Fs=="tanc" z=tan(pz)/(pz) elseif @Fs=="tanhc" z=tanh(pz)/(pz) elseif @Fs=="cotanc" z=cotan(pz)/(pz) elseif @Fs=="cotanhc" z=cotanh(pz)/(pz) elseif @Fs=="secc" z=1/(pz*cos(pz)) elseif @Fs=="sechc" z=1/(pz*cosh(pz)) elseif @Fs=="cosecc" z= 1/(pz*sin(pz)) elseif @Fs=="cosechc" z=1/(pz*sinh(pz)) elseif @Fs=="cube" z=pz^3 elseif @Fs=="cuberoot" z=pz^(1/3) elseif @Fs=="colog" z=-log(pz) elseif @Fs=="logit" z= log(pz/(1-pz)) elseif @Fs=="expit" z=1/(1+exp(-pz)) elseif @Fs=="gauss" z=exp(-sqr(pz)) elseif @Fs=="softplus" z=log(1+exp(pz)) elseif @Fs=="primecount" z=pz/log(pz) elseif @Fs=="sqr+" z=sqr(pz)+pz elseif @Fs=="cube+" z=pz^3+sqr(pz)+pz elseif @Fs=="sin+" z=sin(pz)+pz elseif @Fs=="cos+" z=cos(pz)+pz elseif @Fs=="tan+" z=tan(pz)+pz elseif @Fs=="cotan+" z=cotan(pz)+pz elseif @Fs=="sec+" z=1/cos(pz)+pz elseif @Fs=="cosec+" z=1/sin(pz)+pz elseif @Fs=="sin*" z=sin(pz)*pz elseif @Fs=="cos*" z=cos(pz)*pz elseif @Fs=="tan*" z=tan(pz)*pz elseif @Fs=="cotan*" z=cotan(pz)*pz elseif @Fs=="sec*" z=pz/cos(pz) elseif @Fs=="cosec*" z=pz/sin(pz) elseif @Fs=="loglog" z=log(log(pz)) elseif @Fs=="sinsin" z=sin(sin(pz)) elseif @Fs=="coscos" z=cos(cos(pz)) elseif @Fs=="+pixel" z=pz+pixel elseif @Fs=="-pixel" z=pz-pixel elseif @Fs=="*pixel" z=pz*pixel elseif @Fs=="/pixel" z=pz/pixel elseif @Fs=="ceil" z=ceil(pz) elseif @Fs=="floor" z=floor(pz) elseif @Fs=="trunc" z=trunc(pz) else z=round(pz) endif x=real(fn2(fn3(z))) y=imag(fn2(fn3(z))) if @trap=="Alain Curve" d=cabs((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2+@p1) elseif @trap=="Ampersand Curve" d=cabs((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2+@p1) elseif @trap=="Arcs of Samothrace" d=cabs(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)+@p1) elseif @trap=="Astroid" d=cabs(x^(2/3)+y^(2/3)-@a^(2/3)+@p1) elseif @trap=="Atriphthaloid" d=cabs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2+@p1) elseif @trap=="Bean Curve" d=cabs((x^2+y^2)^2-x^3-y^3+@p1) elseif @trap=="Bean Curve 2" d=cabs(x^4+x^2*y^2+y^4-x*(x^2+y^2)+@p1) elseif @trap=="Beetle" d=cabs((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2+@p1) elseif @trap=="Biaxial Eight Reverse" d=cabs(@a^2*y^2-x^2*(y^2-x^2)+@p1) elseif @trap=="Bicorn" d=cabs(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2+@p1) elseif @trap=="Bicuspid" d=cabs((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2+@p1) elseif @trap=="Biquartic" d=cabs(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)+@p1) elseif @trap=="Blade's Cubic" d=cabs(x^3+y^3-@a^3+@p1) elseif @trap=="Bolza" d=cabs(y^2-x^5+x+@p1) elseif @trap=="Bow Curve" d=cabs(x^4-(@a+1)*x^2*y+y^3+@p1) elseif @trap=="Bullet-Nose Curve" d=cabs((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2+@p1) elseif @trap=="Butterfly Curve" d=cabs(x^6+y^6-x^2+@p1) elseif @trap=="Butterfly Knot" d=cabs((x^2+y^2)*x^4-(x^2-y^2)^2+@p1) elseif @trap=="Cardioid" d=cabs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)+@p1) elseif @trap=="Cartesian Oval" d=cabs((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4+@p1) elseif @trap=="Cassinian Ovals" d=cabs((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4+@p1) elseif @trap=="Catenary" d=cabs(y-@a*cosh(x/@a)+@p1) elseif @trap=="Cayley's Sextic" d=cabs(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2+@p1) elseif @trap=="Cayley's Sextic 2" d=cabs(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)+@p1) elseif @trap=="Ceva's Trisectrix" d=cabs((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2+@p1) elseif @trap=="Chasles Cubic" d=cabs(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3+@p1) elseif @trap=="Circle" d=cabs(x^2+y^2-@a^2+@p1) elseif @trap=="Circular Cubic" d=cabs(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5+@p1) elseif @trap=="Cissoid of Diocles" d=cabs(y^2-x^3/(2*@a-x)+@p1) elseif @trap=="Cissoid of Diocles 2" d=cabs(y^2*(2*@a-x)-x^8+@p1) elseif @trap=="Cissoid of Zahradnik" d=cabs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y+@p1) elseif @trap=="Clairaut Curve" d=cabs((x^2+y^2)^((@a2+1)/2)-@a*y^@a2+@p1) elseif @trap=="Clinoid" d=cabs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)+@p1) elseif @trap=="Cochleoid" d=cabs((x^2+y^2)*atan(y/x)-@a*y+@p1) elseif @trap=="Conchoid of a Circle" d=cabs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2+@p1) elseif @trap=="Conchoid of Nicomedes" d=cabs((x-@a2)^2*(x^2+y^2)-@a^2*x^2+@p1) elseif @trap=="Conchoid of de Sluze" d=cabs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2+@p1) elseif @trap=="Conic Sections" d=cabs(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2+@p1) elseif @trap=="Cornoid" d=cabs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6+@p1) elseif @trap=="Cornoid 2" d=cabs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4+@p1) elseif @trap=="Coscoid" d=cabs(y-@a*cos(x)/x+@p1) elseif @trap=="Cosecantoid" d=cabs(y-@a/sin(x/@a2)+@p1) elseif @trap=="Cosinusoid" d=cabs(y-@a*cos(x/@a2)+@p1) elseif @trap=="Cotangentoid" d=cabs(y-@a*cotan(x/@a2)+@p1) elseif @trap=="Cross Curve" d=cabs(@a^2*y^2+@a2^2*x^2-x^2*y^2+@p1) elseif @trap=="Cubic Joint" d=cabs(y^2*x-@a*y^2-@a2*x^2+@p1) elseif @trap=="Cubic of Apollonius" d=cabs((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))+@p1) elseif @trap=="Curve of Cramer" d=cabs(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2+@p1) elseif @trap=="Curve of Jefabek" d=cabs((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2+@p1) elseif @trap=="Curve of Loriga" d=cabs(3*x^2-y^2-@a^2+@p1) elseif @trap=="Curve of Rosillo" d=cabs(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)+@p1) elseif @trap=="Deltoid" d=cabs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3+@p1) elseif @trap=="Deltoid 2" d=cabs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)+@p1) elseif @trap=="Devil's Curve" d=cabs(y^4-x^4+@a*y^2+@a2*x^2+@p1) elseif @trap=="Devil's Curve 2" d=cabs(y^4-x^4-@a^2*y^2+@a2^2*x^2+@p1) elseif @trap=="Dipole Curve" d=cabs((x^2+y^2)^3-@a^4*x^2+@p1) elseif @trap=="Double Egg" d=cabs((x^2+y^2)^3-@a^2*x^4+@p1) elseif @trap=="Double Egg 2" d=cabs(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2+@p1) elseif @trap=="Double Folium" d=cabs((x^2+y^2)^2-4*@a*x*y^2+@p1) elseif @trap=="Double U" d=cabs(y^2*(@a^2-x^2)-@a^4+@p1) elseif @trap=="Dumbbell Curve" d=cabs(@a2^4*y^2-x^4*(@a^2-x^2)+@p1) elseif @trap=="Duplicatrix Cubic" d=cabs(@a*y^2-x^2*(x-@a)+@p1) elseif @trap=="Durer's Conchoid" d=cabs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2+@p1) elseif @trap=="Durer's Conchoid 2" d=cabs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)+@p1) elseif @trap=="Dwulistne" d=cabs((x^2+y^2)^2-(@a*x+@a2*y)*x^2+@p1) elseif @trap=="Egg of Columbus" d=cabs(y^4+10*y^2*x^2+5*x^4-y+@p1) elseif @trap=="Egg of Granville" d=cabs(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)+@p1) elseif @trap=="Egg of Granville 2" d=cabs(x^2*y^2-(x-(@a+0.5))*(1-x)+@p1) elseif @trap=="Egg of Kepler" d=cabs((x^2+y^2)^2-@a*x^3+@p1) elseif @trap=="Eight Curve" d=cabs(x^4-@a^2*(x^2-y^2)+@p1) elseif @trap=="Elkies Trinomial Curve" d=cabs(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)+@p1) elseif @trap=="Ellipse" d=cabs(x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="Fish Curve" d=cabs((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)+@p1) elseif @trap=="Focal Conic Conchoid" d=cabs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2+@p1) elseif @trap=="Folium" d=cabs((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2+@p1) elseif @trap=="Folium of Descartes" d=cabs(x^3+y^3-3*@a*x*y+@p1) elseif @trap=="Folium of Durer" d=cabs((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2+@p1) elseif @trap=="Frequency Curve" d=cabs(y-sqrt(2*pi)*exp(-x^2/2)+@p1) elseif @trap=="Heart Curve" d=cabs((x^3+y^2-1)^3-x^2*y^3+@p1) elseif @trap=="Heart of Eugene Beutel" d=cabs((x^2+y^2-1)^3-x^2*y^3+@p1) elseif @trap=="Heart of Raphael Laporte" d=cabs(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6+@p1) elseif @trap=="Hippopede" d=cabs((x^2+y^2)^2-@a*x^2-@a2*y^2+@p1) elseif @trap=="Hippopede of Proclus" d=cabs((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2+@p1) elseif @trap=="Hoerl Curve" d=cabs(y-x^@a*e^x+@p1) elseif @trap=="Humbert's Cubic" d=cabs(x^3-3*x*y^2-@a^3+@p1) elseif @trap=="Hyperbola" d=cabs(x^2/@a^2-y^2/@a2^2-1+@p1) elseif @trap=="Hyperbola 2" d=cabs(x^2/@a^2-y^2/@a2^2+1+@p1) elseif @trap=="Hyperbolic Cosecantoid" d=cabs(y-@a/sinh(x/@a2)+@p1) elseif @trap=="Hyperbolic Cosinusoid" d=cabs(y-@a*cosh(x/@a2)+@p1) elseif @trap=="Hyperbolic Cotangentoid" d=cabs(y-@a*cotanh(x/@a2)+@p1) elseif @trap=="Hyperbolic Secantoid" d=cabs(y-@a/cosh(x/@a2)+@p1) elseif @trap=="Hyperbolic Sinusoid" d=cabs(y-@a*sinh(x/@a2)+@p1) elseif @trap=="Hyperbolic Tangentoid" d=cabs(y-tanh(@a*x)+@p1) elseif @trap=="Hyperelliptic Curve" d=cabs(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)+@p1) elseif @trap=="Illumination Curve" d=cabs(y^2-recip((x^2+1)^3)+@p1) elseif @trap=="Inverse Nephroid" d=cabs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)+@p1) elseif @trap=="Isoptic Curve" d=cabs(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x+@p1) elseif @trap=="Kampyle of Eudoxus" d=cabs(@a^2*x^4-@a2^4*(x^2+y^2)+@p1) elseif @trap=="Kappa Curve" d=cabs(y^2*(x^2+y^2)-@a^2*x^2+@p1) elseif @trap=="Kepler's Folium" d=cabs(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2+@p1) elseif @trap=="Kiepert Curve" d=cabs((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)+@p1) elseif @trap=="Kieroid" d=cabs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2+@p1) elseif @trap=="Kiss Curve" d=cabs(@a^4*y^2-(@a^2-x^2)^3+@p1) elseif @trap=="Klein Quartic" d=cabs((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)+@p1) elseif @trap=="Kulp Quartic" d=cabs(x^2*y^2-@a^2*(@a^2-y^2)+@p1) elseif @trap=="Lemniscate of Bernoulli" d=cabs((x^2+y^2)^2-@a^2*(x^2-y^2)+@p1) elseif @trap=="Lemniscate of Booth" d=cabs((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2+@p1) elseif @trap=="Limacon of Pascal" d=cabs((x^2+y^2-@a*y)^2-(x^2+y^2)+@p1) elseif @trap=="Limacon of Pascal 2" d=cabs((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)+@p1) elseif @trap=="Links Curve" d=cabs((x^2+y^2-3*x)^2-4*x^2*(2-x)+@p1) elseif @trap=="Lissajous Curve" d=cabs(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)+@p1) elseif @trap=="Lissajous Curve 2" d=cabs(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)+@p1) elseif @trap=="Lissajous Quadratic" d=cabs(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4+@p1) elseif @trap=="Logarithmic Lemniscate" d=cabs(y^2-x^2*log(@a^2/x^2)+@p1) elseif @trap=="Logarithmic Sinusoid" d=cabs(y-log(sqrt(1-x^2))+@p1) elseif @trap=="Logistic Growth Curve" d=cabs(y-recip(1+@a*e^x)+@p1) elseif @trap=="Maltese Cross Curve" d=cabs(x*y*(x^2-y^2)-x^2-y^2+@p1) elseif @trap =="Neile's Semi-Cubical Parabola" d=cabs(y^3-@a*x^2+@p1) elseif @trap =="Neile's Semi-Cubical Parabola 2" d=cabs((x-0.5)^3-3*y^2+@p1) elseif @trap=="Nephroid" d=cabs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2+@p1) elseif @trap=="Nephroid of Freeth" d=cabs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2+@p1) elseif @trap=="Newton's Diverging Parabolas" d=cabs(@a*y^2-x*(x^2-2*@a2*x+@a3)+@p1) elseif @trap=="Newton's Diverging Parabolas 2" d=cabs(y^2-x*(x^2+2*@a*x+@a2)+@p1) elseif @trap=="Nodal Curve" d=cabs(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2+@p1) elseif @trap=="Oblique Bifolium" d=cabs((x^2+y^2)^2-x^2*(@a*x+@a2*y)+@p1) elseif @trap=="Oblique Cappa" d=cabs((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2+@p1) elseif @trap=="Oblique Cissoid" d=cabs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2+@p1) elseif @trap=="Oblique Pancappa" d=cabs((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2+@p1) elseif @trap=="Oblique Strophoid" d=cabs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y+@p1) elseif @trap=="Ophiuride" d=cabs(x*(x^2+y^2)-@a2*x*y-@a*y^2+@p1) elseif @trap=="Parabola" d=cabs(4*@a*(x-@a2)-(y-@a3)^2+@p1) elseif @trap=="Parabola 2" d=cabs(x-@a*(y-@a2)^2-@a3+@p1) elseif @trap=="Parabola 3" d=cabs(y-@a*x^2-@a2*x-@a3+@p1) elseif @trap=="Parabolic Trifolium" d=cabs(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)+@p1) elseif @trap=="Pear-Shaped Quartic" d=cabs(@a2^2*y^2-x^3*(@a-x)+@p1) elseif @trap=="Pearls of Sluze" d=cabs(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5+@p1) elseif @trap=="Pursuit Curve" d=cabs(y-@a*x^2+log(x)+@p1) elseif @trap=="Pursuit Curve 2" d=cabs(y-@a*x+log(x)+@p1) elseif @trap=="Quadratix of Hippias" d=cabs(x-y*cotan(y/@a)+@p1) elseif @trap=="Quadrifolium" d=cabs((x^2+y^2)^3-4*@a^2*x^2*y^2+@p1) elseif @trap=="Regular Trifolium" d=cabs((x^2+y^2)^2-@a*x*(x^2-3*y^2)+@p1) elseif @trap=="Right Strophoid" d=cabs(y^2-x^2*(@a-x)/(@a+x)+@p1) elseif @trap=="Rose Curve" d=cabs(x-@a*sin(@a2*y)+@p1) elseif @trap=="Rose Curve 2" d=cabs(x-@a*cos(@a2*y)+@p1) elseif @trap=="Satchel" d=cabs((x^2-@a2*y)^2-@a^2*(x^2-y^2)+@p1) elseif @trap=="Scarab" d=cabs((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2+@p1) elseif @trap=="Scyphoid" d=cabs(x^4-y^4-4*@a*x*y^2+@p1) elseif @trap=="Secantoid" d=cabs(y-@a/cos(x/@a2)+@p1) elseif @trap=="Seccoid" d=cabs(y-@a2/(x*cos(x))+@p1) elseif @trap=="Semi-Trident" d=cabs(x*y^2-@a*x+@p1) elseif @trap=="Serpentine Curve" d=cabs(y-@a*@a2*x/(x^2+@a^2)+@p1) elseif @trap=="Sincoid" d=cabs(y-@a*sin(x)/x+@p1) elseif @trap=="Sinus Chain" d=cabs(y^2-abs(sin(x)+0.1*sin(2*x))+@p1) elseif @trap=="Sinusoid" d=cabs(y-@a*sin(x/@a2)+@p1) elseif @trap=="Spiric Curve" d=cabs((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4+@p1) elseif @trap=="Spiric of Perseus" d=cabs((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3+@p1) elseif @trap=="Spiric Sections" d=cabs((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)+@p1) elseif @trap=="Superellipse" d=cabs((x/@a)^@a3+(y/@a2)^@a3-1+@p1) elseif @trap=="Superellipse 2" d=cabs(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1+@p1) elseif @trap=="Swastika Curve" d=cabs(2*x*y-x^4+y^4+@p1) elseif @trap=="Syntractrix" d=cabs(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)+@p1) elseif @trap=="Szego Curve" d=cabs(x^2+y^2-e^(2*x-2)+@p1) elseif @trap=="Tancoid" d=cabs(y-@a*tan(x)/x+@p1) elseif @trap=="Tangentoid" d=cabs(y-@a*tan(x/@a2)+@p1) elseif @trap=="Tetracuspid" d=cabs(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2+@p1) elseif @trap=="Torpedo" d=cabs((x^2+y^2)^2-@a*x*(x^2-y^2)+@p1) elseif @trap=="Tractrix" d=cabs(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)+@p1) elseif @trap=="Trident" d=cabs(y-x^2-@a/x+@p1) elseif @trap=="Trident 2" d=cabs(x*y+@a*x^3+@a2*x^2+@a3*x-@a4+@p1) elseif @trap=="Trifolium" d=cabs((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)+@p1) elseif @trap=="Trifolium 2" d=cabs((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)+@p1) elseif @trap=="Trisectrix of Delange" d=cabs((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)+@p1) elseif @trap=="Trisectrix of Maclaurin" d=cabs(y^2*(@a+x)-x^2*(3*@a-x)+@p1) elseif @trap=="Trisectrix of Maclaurin 2" d=cabs(2*x^3+2*x*y^2-3*x^2+y^2+@p1) elseif @trap=="Trott Curve" d=cabs(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81+@p1) elseif @trap=="Tschirnhaus' Cubic" d=cabs(3*@a*y^2-x*(x-@a)^2+@p1) elseif @trap=="Tschirnhaus' Cubic 2" d=cabs(27*@a*y^2-(@a-x)*(x+8*@a)^2+@p1) elseif @trap=="Visiera" d=cabs(x*(x^2+y^2)-@a*(x^2+2*y^2)+@p1) elseif @trap=="Viviani's Curve" d=cabs(y^2-x^2*(@a^2-x^2)+@p1) elseif @trap=="Watt's Curve" d=cabs((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)+@p1) elseif @trap=="Witch of Agnesi" d=cabs(y-8*@a^3/(x^2+4*@a^2)+@p1) elseif @trap=="OM1" d=cabs((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)+@p1) elseif @trap=="OM2" d=cabs((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)+@p1) elseif @trap=="OM3" d=cabs(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)+@p1) elseif @trap=="OM4" d=cabs(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)+@p1) elseif @trap=="OM5" d=cabs(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5+@p1) elseif @trap=="OM6" d=cabs(sin(x)^3+sin(y)^3-@a) elseif @trap=="OM7" d=cabs(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3+@p1) elseif @trap=="OM8" d=cabs((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2+@p1) elseif @trap=="OM9" d=cabs((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3+@p1) elseif @trap=="OM10" d=cabs((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2+@p1) elseif @trap=="OM11" d=cabs(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1+@p1) elseif @trap=="OM12" d=cabs((x^2+y^2)^2-@a/(x^2-y^2)+@p1) elseif @trap=="OM13" d=cabs((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)+@p1) elseif @trap=="OM14" d=cabs((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)+@p1) elseif @trap=="OM15" d=cabs((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y+@p1) elseif @trap=="OM16" d=cabs(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))+@p1) elseif @trap=="OM17" d=cabs((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)+@p1) elseif @trap=="OM18" d=cabs(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)+@p1) elseif @trap=="OM19" d=cabs(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))+@p1) elseif @trap=="OM20" d=cabs(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))+@p1) elseif @trap=="OM21" d=cabs(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4+@p1) elseif @trap=="OM22" d=cabs(y-x*(x^4-@a)*(x^2+y^2)^2+@p1) elseif @trap=="OM23" d=cabs((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)+@p1) elseif @trap=="OM24" d=cabs(@a*fn2(fn3(z))+@p1) elseif @trap=="OM25" d=cabs(@a*z+x^2+y^3+@p1) elseif @trap=="OM26" d=cabs(@a*z^2+x^2+y^3+@p1) elseif @trap=="OM27" d=cabs((x^2+y^2)*sin(z)-2*@a*x*y+@p1) elseif @trap=="OM28" d=cabs((x^2+y^2)*log(z)-2*@a*x*y+@p1) elseif @trap=="OM29" d=cabs(sinh(z)+x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="OM30" d=cabs(cotanh(z)+x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="OM31" d=cabs(sqr(z)-@a2*sin(@a3)+y-@a*cos(@a3)+x+@p1) elseif @trap=="OM32" d=cabs(cosh(z)-@a2*sin(@a3)+y-@a*cos(@a3)+x+@p1) elseif @trap=="OM33" d=cabs((x^2+y^2+z^2)^2-@a^2*(x^2+y^2)+x^2+y^2-@a*x+@p1) elseif @trap=="OM34" d=cabs((x^2+y^2+flip(z)^2)^2-@a^2*(x^2+y^2)+x^2+y^2-@a*x+@p1) elseif @trap=="OM35" d=cabs(x*y+y*cos(z)+cos(z)*x-@a*(x+y+cos(z))+1+@p1) elseif @trap=="OM36" d=cabs(x*y+y*cosh(z)+cosh(z)*x-@a*(x+y+cosh(z))+1+@p1) elseif @trap=="OM37" d=cabs(x^2+(exp(z)-@a3)^2-@a^2+y^2+(exp(z)-@a3)^2-@a2^2+@p1) elseif @trap=="OM38" d=cabs(x^2+(cos(z)-@a3)^2-@a^2+y^2+(cos(z)-@a3)^2-@a2^2+@p1) elseif @trap=="OM39" d=cabs(x^2+sin(z)^2-2*@a*x+@a2*sin(z)-x*y+@p1) elseif @trap=="OM40" d=cabs(x^2+y^2+(cos(z)-@a*tan(@a2/2))^2-@a^2/cos(@a2/2)^2+@p1) elseif @trap=="OM41" d=cabs(x^2+y^2+(atanh(z)-@a*tan(@a2/2))^2-@a^2/cos(@a2/2)^2+@p1) elseif @trap=="OM42" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+sin(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*sin(z)-x^2-y^2+@p1) elseif @trap=="OM43" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+sqr(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*sqr(z)-x^2-y^2+@p1) elseif @trap=="OM44" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+exp(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*exp(z)-x^2-y^2+@p1) elseif @trap=="OM45" d=cabs(2*x^2+2*y^2+sin(z)^2-@a^2-@a*@a2+@p1) elseif @trap=="OM46" d=cabs(2*x^2+2*y^2+flip(z)^2-@a^2-@a*@a2+@p1) elseif @trap=="OM47" d=cabs(x^2+2*y^2+sqr(z)^2-@a2^2+(x-@a)^2-(@a2-@a)^2+@p1) elseif @trap=="OM48" d=cabs(x^2+y^2+acosh(z)^2*@a2^2/(1+@a2^2)-2*@a*x*y+@p1) elseif @trap=="OM49" d=cabs(@a*y-x^2+@a^2*z-x^3+@p1) elseif @trap=="OM50" d=cabs(x^2+y^2-sqr(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM51" d=cabs(x^2+y^2-atanh(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM52" d=cabs(x^2+y^2-tan(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM53" d=cabs(x^2+y^2-sqrt(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM54" d=cabs(x^2+y^2-cos(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM55" d=cabs(@a*y-x^2+@a^2*asin(z)-x^3+@p1) elseif @trap=="OM56" d=cabs(@a^2*y^2*z^2*(1/(@a2+1)^2+1/@a3^2)^2+(@a2+1)^2*z^2*x^2*(1/@a3^2+1/@a^2)^2-@a3^2*x^2*y^2*(1/@a^2-1/(@a2+1)^2)^2+@p1) elseif @trap=="OM57" d=cabs(z-@a*(x^2-y^2)/sqrt(x^2+y^2)+@p1) elseif @trap=="OM58" d=cabs(sqr(z)-x*cos(y)/(@a-sin(y))+@p1) endif if d>=@p2 && d<=@p3 && a==0 a=b c=(d-@p2)*(@p4/(@p3-@p2)) endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Suvercuys" int param version caption="Version" default=100 visible=@version<100 endparam param trap caption="Trapshape" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18"\ "OM19""OM20""OM21""OM22""OM23""OM24""OM25""OM26""OM27""OM28""OM29""OM30""OM31""OM32""OM33""OM34""OM35"\ "OM36""OM37""OM38""OM39""OM40""OM41""OM42""OM43""OM44""OM45""OM46""OM47""OM48""OM49""OM50""OM51""OM52""OM53""OM54""OM55" \ "OM56""OM57""OM58" endparam param a caption="Trapshape Parameter" default=1.0 visible=@trap!="Frequency Curve" \ && @trap!="Arcs of Samothrace" && @trap!="Illumination Curve" \ && @trap!="Logarithmic Sinusoid" \ && @trap!="Elkies Trinomial Curve" && @trap!="Bolza" \ && @trap!="Hyperelliptic Curve" \ && @trap!="Maltese Cross Curve" && @trap!="Ampersand Curve" \ && @trap!="Heart of Eugene Beutel" && @trap!="Heart of Raphael Laporte" \ && @trap!="Butterfly Knot" && @trap!="Trott Curve" && @trap!="Swastika Curve" \ && @trap!="Biquartic" && @trap!="Butterfly Curve" && @trap!="Bean Curve" \ && @trap!="Bean Curve 2" && @trap!="Egg of Columbus" && @trap!="Sinus Chain" \ && @trap!="Szego Curve" && @trap!="Links Curve" && @trap!="Double Egg 2" \ && @trap!="Heart Curve" && @trap!="Cornoid 2" \ && @trap!="Nodal Curve" && @trap!="Trisectrix of Maclaurin 2" \ && @trap!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Trapshape Parameter 2" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Conchoid of de Sluze" \ || @trap=="Ellipse" || @trap=="Folium" || @trap=="Kampyle of Eudoxus" \ || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" \ || @trap=="Bullet-Nose Curve" \ || @trap=="Dwulistne" || @trap=="Cubic Joint" || @trap=="Syntractrix" \ || @trap=="Oblique Strophoid" || @trap=="Superellipse 2" || @trap=="Oblique Cissoid" \ || @trap=="Hippopede" || @trap=="Oblique Pancappa" || @trap=="Oblique Cappa" \ || @trap=="Oblique Bifolium" || @trap=="Lemniscate of Booth" \ || @trap=="Curve of Jefabek" || @trap=="Curve of Cramer" \ || @trap=="OM3" || @trap=="OM4" || @trap=="OM5" || @trap=="Hippopede of Proclus" \ || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Rose Curve" || @trap=="Rose Curve 2" || @trap=="Cassinian Ovals" \ || @trap=="Conchoid of Nicomedes" || @trap=="Devil's Curve" || @trap=="Durer's Conchoid" \ || @trap=="Devil's Curve 2" || @trap=="Durer's Conchoid 2" || @trap=="Hyperbola" \ || @trap=="Parabola" || @trap=="Hyperbola 2" \ || @trap=="Pear-Shaped Quartic" || @trap=="Serpentine Curve" || @trap=="Sinusoid"\ || @trap=="Trident 2" || @trap=="Atriphthaloid" || @trap=="Clairaut Curve" || @trap=="Clinoid" \ || @trap=="Cross Curve" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" || @trap=="Circular Cubic" \ || @trap=="Dumbbell Curve" || @trap=="Kieroid"\ || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" || @trap=="OM13" || @trap=="Ophiuride" \ || @trap=="Klein Quartic" || @trap=="Tangentoid" || @trap=="Beetle" || @trap=="Secantoid" || @trap=="Hyperbolic Secantoid" \ || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" || @trap=="Tetracuspid" || @trap=="Trifolium" \ || @trap=="Trifolium 2" || @trap=="OM14" || @trap=="OM10" || @trap=="Isoptic Curve" || @trap=="Cotangentoid" \ || @trap=="Cosinusoid" || @trap=="Hyperbolic Cosinusoid" || @trap=="Cosecantoid" || @trap=="Hyperbolic Cosecantoid" \ || @trap=="Hyperbolic Sinusoid" || @trap=="Hyperbolic Cotangentoid" || @trap=="OM16" || @trap=="Alain Curve" \ || @trap=="OM19" || @trap=="OM20" || @trap=="Focal Conic Conchoid" || @trap=="Conchoid of a Circle" || @trap=="Satchel" \ || @trap=="Kepler's Folium" || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Scarab" || @trap=="Lissajous Quadratic" \ || @trap=="Watt's Curve" || @trap=="Limacon of Pascal 2" || @trap=="Newton's Diverging Parabolas 2" || @trap=="OM29" \ || @trap=="OM30" || @trap=="OM31" || @trap=="OM32" || @trap=="OM37" || @trap=="OM38" || @trap=="OM39" || @trap=="OM40" \ || @trap=="OM41" || @trap=="OM42" || @trap=="OM43" || @trap=="OM44" || @trap=="OM45" || @trap=="OM46" || @trap=="OM47" \ || @trap=="OM48" || @trap=="OM50" || @trap=="OM51" || @trap=="OM52" || @trap=="OM53" || @trap=="OM54" || @trap=="OM56" endparam param a3 caption="Trapshape Parameter 3" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" || @trap=="Superellipse 2" \ || @trap=="Oblique Pancappa" || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Parabola" \ || @trap=="Trident 2" || @trap=="Clinoid" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Kieroid" || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" \ || @trap=="Klein Quartic" || @trap=="Beetle" || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" \ || @trap=="Trifolium" || @trap=="OM16" || @trap=="OM19" || @trap=="OM20" || @trap=="Conchoid of a Circle" \ || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Watt's Curve" || @trap=="OM31" || @trap=="OM32" \ || @trap=="OM37" || @trap=="OM38" || @trap=="OM42" || @trap=="OM43" || @trap=="OM44" || @trap=="OM56" endparam param a4 caption="Trapshape Parameter 4" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Superellipse 2" || @trap=="Cissoid of Zahradnik" \ || @trap=="Trident 2" || @trap=="Cartesian Oval" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Spiric Curve" endparam param a5 caption="Trapshape Parameter 5" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Cissoid of Zahradnik" \ || @trap=="Circular Cubic" endparam heading endheading param Fs caption="Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 default=ident() endfunc func fn3 default=ident() endfunc heading endheading param p1 caption="Parameter 1" default=1.0 endparam param p2 caption="Parameter 2" default=0.1 endparam param p3 caption="Parameter 3" default=1.0 endparam param p4 caption="Parameter 4" default=2.0 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.965 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_LegendrePolynomialTraps2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="6" pz=pz+cos(pz) elseif @Va=="7" pz=pz+flip(pz) elseif @Va=="8" pz=pz+conj(pz) elseif @Va=="9" pz=pz+cabs(pz) elseif @Va=="10" pz=pz+abs(pz) elseif @Va=="11" pz=pz+exp(pz) elseif @Va=="12" pz=pz+sqr(pz) elseif @Va=="13" pz=pz+cotanh(pz) elseif @Va=="14" pz=pz+tan(pz) elseif @Va=="15" pz=pz+cosh(pz) elseif @Va=="16" pz=pz-conj(pz) elseif @Va=="17" pz=pz-cabs(pz) elseif @Va=="18" pz=pz-abs(pz) elseif @Va=="19" pz=pz-exp(pz) elseif @Va=="20" pz=pz-sqr(pz) elseif @Va=="21" pz=pz-cotanh(pz) elseif @Va=="22" pz=pz-tanh(pz) elseif @Va=="23" pz=pz-tan(pz) elseif @Va=="24" pz=pz-cosh(pz) elseif @Va=="25" pz=pz-cos(pz) elseif @Va=="26" pz=pz-sinh(pz) elseif @Va=="27" pz=pz-sin(pz) elseif @Va=="28" pz=pz-recip(pz) endif pz=flip(pz) pz=@p1*fn2(pz)+@p2 if @v=="2" pz=cabs((3*pz^2-1)/2) elseif @v=="3" pz=cabs((5*pz^3-3*pz)/2) elseif @v=="4" pz=cabs((35*pz^4-30*pz^2+3)/8) elseif @v=="5" pz=cabs((63*pz^5-70*pz^3+15*pz)/8) elseif @v=="6" pz=cabs((231*pz^6-315*pz^4+105*pz^2-5)/16) elseif @v=="7" pz=cabs((429*pz^7-693*pz^5+315*pz^3-35*pz)/16) elseif @v=="8" pz=cabs((6435*pz^8-12012*pz^6+6930*pz^4-1260*pz^2+35)/128) elseif @v=="9" pz=cabs((12155*pz^9-25740*pz^7+18018*pz^5-4620*pz^3+315*pz)/128) elseif @v=="10" pz=cabs((46189*pz^10-109395*pz^8+90090*pz^6-30030*pz^4+3465*pz^2-63)/256) endif pz=log(pz) float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if (log(c)+@adj2)*0.5<@p7 index=(log(c)+@adj2)*0.5 else m_Solid=true endif else if (log(c)+@adj2)*0.5>=@p7 index=(log(c)+@adj2)*0.5 else m_Solid=true endif endif else index=(log(c)+@adj2)*0.5 endif return index endfunc private: float c float index default: title="Legendre Polynomial Traps 2" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" default=0 endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8""9""10" default=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param adj caption="Adjustment 1" default=1.5 endparam param adj2 caption="Adjustment 2" default=1.0 endparam param Fs caption="Z Function 1" enum="acos""acosh""atan"\ "sqr""sqrt""log""abs""cabs""conj"\ "flip""ident""recip"\ "asec""asech""aexsec"\ "crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "cube""colog""softplus"\ "sqr+""cube+""sin+""cos+""sin*""cos*"\ "+pixel""-pixel"\ "*pixel""/pixel""double""triple" default=10 endparam func fn2 caption="Z Function 2" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.57 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_OrgumaLocus2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) b=(0,0) c=(0,0) d=0.0 fpixel=pz f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if f if @V=="ident" a=@p1*fn1(pz)+@p2 elseif @V=="+pixel" a=@p1*fn1(pz+fpixel)+@p2 elseif @V=="*pixel" a=@p1*fn1(pz*fpixel)+@p2 elseif @V=="sqr+pixel" a=@p1*fn1(pz^2+fpixel)+@p2 elseif @V=="loglog" a=@p1*fn1(log(log(pz)))+@p2 elseif @V=="sin" a=@p1*fn1(sin(pz))+@p2 elseif @V=="sinh" a=@p1*fn1(sinh(pz))+@p2 elseif @V=="cosh" a=@p1*fn1(cosh(pz))+@p2 elseif @V=="acos" a=@p1*fn1(acos(pz))+@p2 elseif @V=="tan" a=@p1*fn1(tan(pz))+@p2 elseif @V=="cotanh" a=@p1*fn1(cotanh(pz))+@p2 elseif @V=="sqrt" a=@p1*fn1(sqrt(pz))+@p2 elseif @V=="exp" a=@p1*fn1(exp(pz))+@p2 elseif @V=="flip" a=@p1*fn1(flip(pz))+@p2 elseif @V=="recip" a=@p1*fn1(recip(pz))+@p2 elseif @V=="third" a=@p1*fn1(pz/3)+@p2 elseif @V=="half" a=@p1*fn1(pz/2)+@p2 elseif @V=="double" a=@p1*fn1(2*pz)+@p2 elseif @V=="triple" a=@p1*fn1(3*pz)+@p2 elseif @V=="mf1" a=@p1*fn1(sqr(pz)+2*pz)+@p2 elseif @V=="mf2" a=@p1*fn1(pz^3+2*sqr(pz)+3*pz)+@p2 elseif @V=="mf3" a=@p1*fn1(pz-(pz^3-1)/(3*pz^2))+@p2 elseif @V=="mf4" a=@p1*fn1(conj(1/(pz-1))+1)+@p2 elseif @V=="mf5" a=@p1*fn1(pz^2*(pz-2)/(1-2*pz))+@p2 elseif @V=="mf6" a=@p1*fn1(((pz^2-0.5)/(2*pz-1.5))^2)+@p2 elseif @V=="mf7" a=@p1*fn1(pz^3+3*pz^2+3*pz+1)+@p2 elseif @V=="mf8" a=@p1*fn1((pz^3-0.5)/(3*pz^2))+@p2 elseif @V=="mf9" a=@p1*fn1((3*pz^2)/(pz^3-1))+@p2 elseif @V=="sin+" a=@p1*fn1(sin(pz)+pz)+@p2 elseif @V=="sin*" a=@p1*fn1(sin(pz)*pz)+@p2 elseif @V=="sinc" a=@p1*fn1(sin(pz)/pz)+@p2 elseif @V=="cosh+" a=@p1*fn1(cosh(pz)+pz)+@p2 elseif @V=="cosh*" a=@p1*fn1(cosh(pz)*pz)+@p2 elseif @V=="coshc" a=@p1*fn1(cosh(pz)/pz)+@p2 elseif @V=="tan+" a=@p1*fn1(tan(pz)+pz)+@p2 elseif @V=="tan*" a=@p1*fn1(tan(pz)*pz)+@p2 elseif @V=="tanc" a=@p1*fn1(tan(pz)/pz)+@p2 elseif @V=="sec" a=@p1*fn1(1/cos(pz))+@p2 elseif @V=="sec+" a=@p1*fn1(1/cos(pz)+pz)+@p2 elseif @V=="sec*" a=@p1*fn1(pz/cos(pz))+@p2 elseif @V=="secc" a=@p1*fn1(1/(pz*cos(pz)))+@p2 endif d=cabs(a) c=a/d d=recip(sqrt(imag(c)^(-2))) b=d*c d=20*sqr(cabs(sqr(fn2(b-a)))) if d<1 f=false endif endif endfunc float func ResultIndex(complex pz) if f m_Solid=true else if |a|>|b| d=1+d else d=1-d endif index=d/2 endif return index endfunc private: complex a complex b complex c float d bool f complex fpixel float index default: title="Orguma Locus 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Function 1" enum="ident""+pixel""*pixel""sqr+pixel""loglog"\ "sin""sinh""cosh""acos""tan""cotanh"\ "sqrt""exp""flip""recip""third""half""double""triple"\ "mf1""mf2""mf3""mf4""mf5""mf6""mf7""mf8""mf9""sin+""sin*""sinc""cosh+""cosh*""coshc"\ "tan+""tan*""tanc""sec" "sec+""sec*""secc" endparam func fn1 caption="Function 2" default=ident () endfunc func fn2 caption="Function 3" default=ident() endfunc param p1 default=(1,0) endparam param p2 default=(0,0) endparam } class OM_OrgumaLocus3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=(0,0) c=(0,0) d=(0,0) f=0 g=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if g if @V=="1" b=fn2(log(pz+@p3/fn3(pz))) elseif @V=="2" b=fn2(log(pz+@p3*fn3(pz))) elseif @V=="3" b=fn2(log(pz^2*fn3((pz-(@p3+1))/(1-(@p3+1)*pz)))) elseif @V=="4" b=fn2(log(pz^2*fn3((pz-4)/(@p3+4*pz)))) elseif @V=="5" if |pz|<1 pz=pz/|pz| endif b=fn2(log(-@p3*fn3(pz))) elseif @V=="6" if |pz|>1 pz=pz/|pz| endif b=fn2(log(@p3*fn3(pz))) elseif @V=="7" if real(pz)imag(pz) pz=flip(pz) endif b=fn2(log(@p3*fn3(pz))) elseif @V=="9" b=fn2(log(-@p3*fn3((pz-1i)/(pz+1i)))) elseif @V=="10" b=fn2(log(-@p3*fn3((pz-1)/(pz+1)))) elseif @V=="11" b=fn2(log(pz-@p3*(fn3(pz)^3-1)/(3*fn3(pz)^2))) elseif @V=="12" b=fn2(log(fn3((pz^2-@p3-1)/(2*pz-@p3-2))^2)) endif b=(b-@p1)*@p4 f=cabs(fn1(b)) if f>1e-10 d=b/f f=@p2*0.5/(0.25+(@p2^2-0.25)*imag(d)^2) c=f*d f=cabs((c-b)^3)/0.05 if f<=1 g=false endif endif endif endfunc float func ResultIndex(complex pz) if g m_Solid=true else if |b|>|c| f=1+f else f=1-f endif endif index=f/2 return index endfunc private: complex b complex c complex d float f bool g float index default: title="Orguma Locus 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12" endparam func fn1 default=recip() endfunc func fn2 default=ident() endfunc func fn3 default=ident() endfunc param p1 default=(0,0) endparam param p2 caption="Parameter 2" default=0.5 endparam param p3 default=(1,0) endparam param p4 caption="Parameter 4" default=1.0 endparam } class OM_GromShigLumati(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=cabs(d)/cabs(cos(tanh(fn1(pz)))) d=pz+1-sin(fn2(pz)) if b<1 && f>0 g=true c=(imag(@adj1)-1)*b+a*imag(@adj1) endif f=f+1 a=f%real(@adj1) endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if g index=((real(c)+1)%@adj2)/@adj2 else m_Solid=true endif else index=((real(c)+1)%@adj2)/@adj2 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Grom Shig Lumati" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func fn1 caption="GSL Function 1" default=ident() endfunc func fn2 caption="GSL Function 2" default=ident() endfunc param adj1 caption="Adjustment 1" default=(3.5,1.03) endparam param adj2 caption="Adjustment 2" default=0.15 endparam param solid caption="Solid Color" default=true endparam } class OM_MagmaGrolthius(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=|d|/|fn1(fn2(tanh(pz+@p1)))| d=pz if b<@adj2&&f>0 g=true c=((imag(@adj1)-1)/@adj2)*b+a*imag(@adj1) endif f=f+1 a=f%real(@adj1) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%@adj3)/@adj3 else m_Solid=true endif else index=((real(c)+1)%@adj3)/@adj3 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func fn1 caption="MG Function 1" default=ident() endfunc func fn2 caption="MG Function 2" default=sqr() endfunc param p1 caption="MG Parameter" default=(0,0) endparam param adj1 caption="Adjustment 1" default=(-25,132) endparam param adj2 caption="Adjustment 2" default=0.2 endparam param adj3 caption="Adjustment 3" default=289.0 endparam param solid caption="Solid Color" default=true endparam } class OM_MagmaGrolthius2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=|d|/|fn1(sin(pz))+@p1| if @F2=="sqr" d=fn3(sqr(pz))+@p2 elseif @F2=="sqr+" d=fn3(sqr(pz)+pz)+@p2 elseif @F2=="flip+" d=fn3(pz+flip(pz))+@p2 elseif @F2=="conj+" d=fn3(pz+conj(pz))+@p2 elseif @F2=="cabs+" d=fn3(pz+cabs(pz))+@p2 elseif @F2=="abs+" d=fn3(pz+abs(pz))+@p2 elseif @F2=="trunc+" d=fn3(pz+trunc(pz))+@p2 elseif @F2=="conj-" d=fn3(pz-conj(pz))+@p2 elseif @F2=="cabs-" d=fn3(pz-cabs(pz))+@p2 elseif @F2=="sqrt-" d=fn3(pz-sqrt(pz))+@p2 elseif @F2=="cotanh-" d=fn3(pz-cotanh(pz))+@p2 elseif @F2=="round-" d=fn3(pz-round(pz))+@p2 elseif @F2=="cube+" d=fn3(pz^3+sqr(pz)+pz)+@p2 elseif @F2=="+pixel" d=fn3(pz+pixel)+@p2 elseif @F2=="*pixel" d=fn3(pz*pixel)+@p2 elseif @F2=="/pixel" d=fn3(pz/pixel)+@p2 elseif @F2=="exp" d=fn3(exp(pz))+@p2 elseif @F2=="asinh" d=fn3(asinh(pz))+@p2 elseif @F2=="sqrexp" d=fn3(sqr(exp(pz)))+@p2 elseif @F2=="sqrtan" d=fn3(sqr(tan(pz)))+@p2 elseif @F2=="sqrtanh" d=fn3(sqr(tanh(pz)))+@p2 elseif @F2=="sqrsqr" d=fn3(sqr(sqr(pz)))+@p2 elseif @F2=="sqrlog" d=fn3(sqr(log(pz)))+@p2 elseif @F2=="recipcabs+" d=fn3(pz+recip(cabs(pz)))+@p2 elseif @F2=="recipabs+" d=fn3(pz+recip(abs(pz)))+@p2 elseif @F2=="reciplog+" d=fn3(pz+recip(log(pz)))+@p2 elseif @F2=="recipconj-" d=fn3(pz-recip(conj(pz)))+@p2 elseif @F2=="recipacosh-" d=fn3(pz-recip(acosh(pz)))+@p2 elseif @F2=="mf1" d=fn3(pz-(pz^3-1)/(3*pz^2))+@p2 elseif @F2=="mf2" d=fn3(conj(1/(pz-1))+1)+@p2 elseif @F2=="mf3" d=fn3(pz^2/(pz-1))+@p2 elseif @F2=="mf4" d=fn3(pz^2/(pz^3-1))+@p2 elseif @F2=="mf5" d=fn3(pz^3*(pz-3)/(1-3*pz))+@p2 elseif @F2=="mf6" d=fn3((pz-0.5i)/(pz+0.5i))+@p2 endif if b<@adj && f>0 g=true c=((imag((-50,150)-1))/@adj)*b+a*imag((-50,150)) endif f=f+1 a=f%(-50) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%300)/300 else m_Solid=true endif else index=((real(c)+1)%300)/300 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius 2" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param F2 caption="MG Function 1" enum="sqr""sqr+""flip+""conj+""cabs+""abs+""trunc+""cube+"\ "conj-""cabs-""sqrt-""cotanh-""round-""+pixel""*pixel""/pixel"\ "exp""asinh""sqrexp""sqrtan""sqrtanh""sqrsqr""sqrlog"\ "recipcabs+""recipabs+""reciplog+""recipconj-""recipacosh-"\ "mf1""mf2""mf3""mf4""mf5""mf6" endparam func fn1 caption="MG Function 2" default=ident() endfunc func fn3 caption="MG Function 3" default=ident() endfunc param p1 caption="MG Parameter 1" default=(0,0) endparam param p2 caption="MG Parameter 2" default=(0,0) endparam param adj caption="Adjustment" default=0.2 endparam param solid caption="Solid Color" default=true endparam } class OM_TormSpaw(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz a=0.0 c=0.01 d=(0,0) f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v=="1" d=pz+@p3*fn2(pz)+@p4 elseif @v=="2" d=pz+@p3/fn2(pz)+@p4 elseif @v=="3" d=pz^2*fn2((pz-(@p3+1))/(1-(@p3+1)*pz))+@p4 elseif @v=="4" d=pz^2*fn2((pz-4)/(@p3+4*pz))+@p4 elseif @v=="5" d=fn2((pz^2+@p3-1)/(2*pz+@p3-2))^2+@p4 elseif @v=="6" d=fn2((pz^2+@p3-1i)/(2*pz+@p3-2i))^2+@p4 elseif @v=="7" d=pz^2*fn2((pz-(@p3+1))/(1i-(@p3+1)*pz))+@p4 elseif @v=="8" d=pz+@p3*fn2(pz)^3+@p4 elseif @v=="9" if real(pz)imag(pz) pz=flip(pz) endif d=@p3*fn2(pz)+@p4 elseif @v=="13" d=@p3*fn2((pz^3-3)/(3*pz^2))+@p4 elseif @v=="14" d=@p3*fn2(pz-(pz^3-1)/(3*pz^2))+@p4 elseif @v=="15" d=@p3*fn2((pz-1i)/(pz+1i))+@p4 elseif @v=="16" d=@p3*fn2((pz+0.5i)/(pz-0.5i))+@p4 elseif @v=="17" d=@p3*fn2((2*pz-1i)/(pz-1i))+@p4 elseif @v=="18" d=@p3*fn2((-0.1*pz-1i)/(pz-1i))+@p4 elseif @v=="19" d=@p3*fn2((pz-fpixel)/(pz+fpixel))+@p4 elseif @v=="20" d=@p3*fn2((pz-1i)/(pz+fpixel))+@p4 elseif @v=="21" d=@p3*fn2((pz-1)/(pz+1))+@p4 elseif @v=="22" d=@p3*fn2((pz+1)/(pz-1))+@p4 elseif @v=="23" if |pz|<1 pz=pz/|pz| endif if real(pz)1 pz=pz/|pz| endif d=@p3*fn2(2*pz)+@p4 elseif @v=="53" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+exp(pz))+@p4 elseif @v=="54" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+log(pz))+@p4 elseif @v=="55" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+sqrt(pz))+@p4 elseif @v=="56" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+cotan(pz))+@p4 elseif @v=="57" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+atanh(pz))+@p4 elseif @v=="58" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+acosh(pz))+@p4 elseif @v=="59" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+cosh(pz))+@p4 elseif @v=="60" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+round(pz))+@p4 elseif @v=="61" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz-log(pz))+@p4 else if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz-cosh(pz))+@p4 endif a=cabs(d-@p5*fpixel) if f && 1@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float a float c complex d bool f complex fpixel float index default: title="Torm Spaw" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Variant Parameter 1" default=(1,0) endparam param p4 caption="Variant Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Variant Function" default=ident() endfunc param p5 default=(0,0) endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Kozmod2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) c=0.0 d=0.0 i=0 f=0.0 k=false h=1e20 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) a=pz pz=@p1*fn2(pz)+@p2 if @V=="1" pz=pz elseif @V=="2" pz=pz+sqrt(pz) elseif @V=="3" pz=pz+acosh(pz) elseif @V=="4" pz=pz+cos(pz) elseif @V=="5" pz=pz+cabs(pz) elseif @V=="6" pz=pz+tanh(pz) elseif @V=="7" pz=pz+exp(pz) elseif @V=="8" pz=pz+conj(pz) elseif @V=="9" pz=pz+abs(pz) elseif @V=="10" pz=pz+log(pz) elseif @V=="11" pz=pz+sqr(pz) elseif @V=="12" pz=pz+tan(pz) elseif @V=="13" pz=pz+cosh(pz) else pz=pz+trunc(pz) endif if @V2=="1" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="2" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="3" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="4" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="5" c=@adj1*real(cos(10*cos(imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="6" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(10*cos(real(fn3(pz)))))+@adj2 elseif @V2=="7" c=@adj1*real(cos(cos(10*cos(imag(fn3(pz))))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="8" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*cos(real(fn3(pz)))))+@adj2 elseif @V2=="9" c=@adj1*real(cos(10*cos(imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="10" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(cos(10*cos(real(fn3(pz))))))+@adj2 elseif @V2=="11" c=@adj1*real(cos(cos(10*cos(imag(fn3(pz))))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="12" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*cos(real(fn3(pz))))))+@adj2 endif j=c+flip(d) f=cabs(a-j) if i>=@adj3 if !k && f<=@adj4 k=true h=f endif endif i=i+1 endfunc float func ResultIndex(complex pz) if @solid if !k m_Solid=true else index=h endif else index=h endif return index endfunc private: complex a float c float d int i float f bool k float h float index default: title="Kozmod 2" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function" default=ident() endfunc param V caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param V2 caption="Kozmod Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12" endparam func fn3 caption="Kozmod Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=0.5 endparam param adj2 caption="Adjustment 2" default=0.0 endparam param adj3 caption="Adjustment 3" default=0 endparam param adj4 caption="Adjustment 4" default=0.75 endparam param solid caption="Solid Color" default=true endparam } class OM_EulerPolynomialTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz a=0.0 b=0.0 c=0.01 d=(0,0) f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @pzv==0 pz=pz elseif @pzv==1 pz=pz+exp(pz) elseif @pzv==2 pz=pz+sqrt(pz) elseif @pzv==3 pz=pz+sqr(pz) elseif @pzv==4 pz=pz+acos(pz) elseif @pzv==5 pz=pz+cos(pz) elseif @pzv==6 pz=pz+flip(pz) elseif @pzv==7 pz=pz+acosh(pz) elseif @pzv==8 pz=pz+conj(pz) elseif @pzv==9 pz=pz-1/acosh(pz) elseif @pzv==10 pz=pz-cabs(pz) elseif @pzv==11 pz=pz-ceil(pz) elseif @pzv==12 pz=pz-asinh(pz) elseif @pzv==13 pz=pz-abs(pz) elseif @pzv==14 pz=pz-sin(pz) elseif @pzv==15 pz=pz-acosh(pz) elseif @pzv==16 pz=pz+ceil(pz) elseif @pzv==17 pz=pz+floor(pz) elseif @pzv==18 pz=pz+trunc(pz) elseif @pzv==19 pz=pz+1/cos(pz) elseif @pzv==20 pz=pz+1/pz elseif @pzv==21 pz=pz+1/cabs(pz) elseif @pzv==22 pz=pz+1/log(pz) elseif @pzv==23 pz=pz+1/sqr(pz) elseif @pzv==24 pz=pz+1/cotanh(pz) elseif @pzv==25 pz=pz+1/tan(pz) elseif @pzv==26 pz=pz+1/acosh(pz) elseif @pzv==27 pz=pz+1/acos(pz) elseif @pzv==28 pz=pz+1/cosh(pz) elseif @pzv==29 pz=pz-1/cos(pz) elseif @pzv==30 pz=pz-1/pz elseif @pzv==31 pz=pz-1/conj(pz) elseif @pzv==32 pz=pz-1/exp(pz) elseif @pzv==33 pz=pz-1/log(pz) elseif @pzv==34 pz=pz-1/cotanh(pz) elseif @pzv==35 pz=pz-1/cotan(pz) elseif @pzv==36 pz=pz-1/tanh(pz) else pz=pz-1/tan(pz) endif if @v=="2" d=@p3*fn2(pz^2-pz)+@p4 elseif @v=="3" d=@p3*fn2(pz^3-1.5*pz^2+0.25)+@p4 elseif @v=="4" d=@p3*fn2(pz^4-2*pz^3+pz)+@p4 elseif @v=="5" d=@p3*fn2(pz^5-2.5*pz^4+2.5*pz^2-0.5)+@p4 elseif @v=="6" d=@p3*fn2(pz^6-3*pz^5+5*pz^3-3*pz)+@p4 elseif @v=="7" d=@p3*fn2(pz^7-3.5*pz^6+8.75*pz^4-10.5*pz^2+2.125)+@p4 else d=@p3*fn2(pz^8-4*pz^7+14*pz^5-28 *pz^3+17*pz)+@p4 endif a=cabs(fn3(d)-fn3(fpixel)) b=cabs(fn4(d)-@fn5(fpixel)) if f && @adj1=@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float a float b float c complex d bool f complex fpixel float index default: title="Euler Polynomial Traps" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param pzv caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8" endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(1,0) endparam func fn2 caption="Polynomial Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=1.7 endparam func fn3 default=ident() endfunc func fn4 default=ident() endfunc func fn5 caption="Function 5" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Blengrundesiwo(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 d=cabs(fn1(fn2(pz)*cabs(pz))-@p1) if d>=@p2 && d<=1 && a==0 a=b c=cabs((d-@p2)*(2/(pz-@p2))) endif endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Blengrundesiwo" int param version caption="Version" default=100 visible=@version<100 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc param p1 default=(1,0) endparam param p2 caption="Parameter 2" default=0.75 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Blengrundesiwo2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 if @V=="1" pz=@p3*sqr(pz) elseif @V=="2" pz=@p3*pz elseif @V=="3" pz=@p3*flip(pz) elseif @V=="4" pz=@p3*atanh(pz) elseif @V=="5" pz=@p3*atan(pz) elseif @V=="6" pz=@p3*tanh(pz) elseif @V=="7" pz=@p3*tan(pz) elseif @V=="8" pz=@p3*sin(pz) elseif @V=="9" pz=@p3*sinh(pz) elseif @V=="10" pz=@p3*asinh(pz) elseif @V=="11" pz=@p3*flip(sqr(pz)) elseif @V=="12" pz=@p3*sqr(sqr(pz)) elseif @V=="13" pz=@p3*atanh(sqr(pz)) elseif @V=="14" pz=@p3*atan(sqr(pz)) elseif @V=="15" pz=@p3*tanh(sqr(pz)) elseif @V=="16" pz=@p3*tan(sqr(pz)) elseif @V=="17" pz=@p3*asinh(sqr(pz)) elseif @V=="18" pz=@p3*sqr(tan(pz)) elseif @V=="19" pz=@p3*sinh(sqr(pz)) elseif @V=="20" pz=@p3*sin(sqr(pz)) elseif @V=="21" pz=@p3*sqr(atanh(pz)) elseif @V=="22" pz=@p3*sqr(atan(pz)) elseif @V=="23" pz=@p3*(sqr(pz)/flip(pz)) elseif @V=="24" pz=@p3*(sqr(pz)/conj(pz)) elseif @V=="25" pz=@p3*(sqr(pz)/cabs(pz)) elseif @V=="26" pz=@p3*(sqr(pz)/log(pz)) elseif @V=="27" pz=@p3*(pz*abs(pz)/flip(pz)) elseif @V=="28" pz=@p3*(pz*abs(pz)/cosh(pz)) elseif @V=="29" pz=@p3*(pz*abs(pz)/cos(pz)) elseif @V=="30" pz=@p3*(pz^3/abs(pz)) elseif @V=="31" pz=@p3*(pz^3/tanh(pz)) elseif @V=="32" pz=@p3*(pz^3/cos(pz)) elseif @V=="33" pz=@p3*(pz*tanh(pz)/flip(pz)) elseif @V=="34" pz=@p3*(pz*tanh(pz)/conj(pz)) elseif @V=="35" pz=@p3*(pz*tanh(pz)/log(pz)) elseif @V=="36" pz=@p3*(pz*tanh(pz)/atanh(pz)) elseif @V=="37" pz=@p3*(pz*tanh(pz)/tan(pz)) elseif @V=="38" pz=@p3*(pz*tanh(pz)/asinh(pz)) elseif @V=="39" pz=@p3*(pz*tanh(pz)/sin(pz)) elseif @V=="40" pz=@p3*(pz*tan(pz)/flip(pz)) elseif @V=="41" pz=@p3*(pz*tan(pz)/conj(pz)) elseif @V=="42" pz=@p3*(pz*tan(pz)/cabs(pz)) elseif @V=="43" pz=@p3*(pz*tan(pz)/tanh(pz)) elseif @V=="44" pz=@p3*(pz*flip(pz)/atan(pz)) elseif @V=="45" pz=@p3*(pz*flip(pz)/tanh(pz)) elseif @V=="46" pz=@p3*(pz*flip(pz)/tan(pz)) elseif @V=="47" pz=@p3*(pz*flip(pz)/cos(pz)) elseif @V=="48" pz=@p3*(pz*flip(pz)/sinh(pz)) elseif @V=="49" pz=@p3*(pz*flip(pz)/sin(pz)) elseif @V=="50" pz=@p3*(pz*sqrt(pz)/cabs(pz)) elseif @V=="51" pz=@p3*(pz*sqrt(pz)/cos(pz)) elseif @V=="52" pz=@p3*(pz*atanh(pz)/cabs(pz)) else pz=@p3*(pz*tan(pz)/cabs(pz)) endif d=cabs(fn2(pz)*fn1(pz)+1) if d>=@p2 && d<=1 && a==0 a=b c=cabs((d-@p2)*(2/(pz-@p2))) endif endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Blengrundesiwo 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53" endparam func fn1 default=cabs() endfunc func fn2 default=ident() endfunc param p3 caption="Parameter 1" default=(-1,0) endparam param p2 caption="Parameter 2" default=0.75 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Krommen(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e20 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v2==0 pz=pz elseif @v2==1 pz=pz+sqr(pz) elseif @v2==2 pz=pz-sqr(pz) elseif @v2==3 pz=pz+pz^3 elseif @v2==4 pz=pz-pz^3 elseif @v2==5 pz=pz+conj(pz) elseif @v2==6 pz=pz+cabs(pz) elseif @v2==7 pz=pz+exp(pz) elseif @v2==8 pz=pz+log(pz) elseif @v2==9 pz=pz+sqrt(pz) elseif @v2==10 pz=pz+atanh(pz) elseif @v2==11 pz=pz+atan(pz) elseif @v2==12 pz=pz+tanh(pz) elseif @v2==13 pz=pz+tan(pz) elseif @v2==14 pz=pz+cosh(pz) elseif @v2==15 pz=pz+cos(pz) elseif @v2==16 pz=pz+sinh(pz) elseif @v2==17 pz=pz+sin(pz) elseif @v2==18 pz=pz+ceil(pz) elseif @v2==19 pz=pz+floor(pz) elseif @v2==20 pz=pz-conj(pz) elseif @v2==21 pz=pz-cabs(pz) elseif @v2==22 pz=pz-exp(pz) elseif @v2==23 pz=pz-sqrt(pz) elseif @v2==24 pz=pz-cotanh(pz) elseif @v2==25 pz=pz-tan(pz) elseif @v2==26 pz=pz-cos(pz) elseif @v2==27 pz=pz-ceil(pz) elseif @v2==28 pz=pz-round(pz) elseif @v2==29 pz=pz+1/flip(pz) elseif @v2==30 pz=pz+1/cabs(pz) elseif @v2==31 pz=pz+1/abs(pz) elseif @v2==32 pz=pz+1/sqrt(pz) elseif @v2==33 pz=pz+1/sqr(pz) elseif @v2==34 pz=pz+1/acos(pz) elseif @v2==35 pz=pz+1/cosh(pz) elseif @v2==36 pz=pz+1/cos(pz) elseif @v2==37 pz=pz-1/pz elseif @v2==38 pz=pz-1/conj(pz) elseif @v2==39 pz=pz-1/exp(pz) elseif @v2==40 pz=pz-1/cosh(pz) elseif @v2==41 pz=pz-1/cos(pz) elseif @v2==42 pz=pz-1/sin(pz) else pz=pz-1/round(pz) endif x=real(pz) y=imag(pz) if @V=="Alain Curve" pz=((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2) elseif @V=="Ampersand Curve" pz=((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2) elseif @V=="Arcs of Samothrace" pz=(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)) elseif @V=="Astroid" pz=(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @V=="Atriphthaloid" pz=(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @V=="Bean Curve" pz=((x^2+y^2)^2-x^3-y^3) elseif @V=="Bean Curve 2" pz=(x^4+x^2*y^2+y^4-x*(x^2+y^2)) elseif @V=="Beetle" pz=((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2) elseif @V=="Biaxial Eight Reverse" pz=(@a^2*y^2-x^2*(y^2-x^2)) elseif @V=="Bicorn" pz=(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2) elseif @V=="Bicuspid" pz=((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2) elseif @V=="Biquartic" pz=(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)) elseif @V=="Blade's Cubic" pz=(x^3+y^3-@a^3) elseif @V=="Bolza" pz=(y^2-x^5+x) elseif @V=="Bow Curve" pz=(x^4-(@a+1)*x^2*y+y^3) elseif @V=="Bullet-Nose Curve" pz=((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2) elseif @V=="Butterfly Curve" pz=(x^6+y^6-x^2) elseif @V=="Butterfly Knot" pz=((x^2+y^2)*x^4-(x^2-y^2)^2) elseif @V=="Cardioid" pz=((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @V=="Cartesian Oval" pz=((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4) elseif @V=="Cassinian Ovals" pz=((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4) elseif @V=="Catenary" pz=(y-@a*cosh(x/@a)) elseif @V=="Cayley's Sextic" pz=(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2) elseif @V=="Cayley's Sextic 2" pz=(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)) elseif @V=="Ceva's Trisectrix" pz=((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2) elseif @V=="Chasles Cubic" pz=(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3) elseif @V=="Circle" pz=(x^2+y^2-@a^2) elseif @V=="Circular Cubic" pz=(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5) elseif @V=="Cissoid of Diocles" pz=(y^2-x^3/(2*@a-x)) elseif @V=="Cissoid of Diocles 2" pz=(y^2*(2*@a-x)-x^8) elseif @V=="Cissoid of zahradnik" pz=(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @V=="Clairaut Curve" pz=((x^2+y^2)^((@a2+1)/2)-@a*y^@a2) elseif @V=="Clinoid" pz=(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @V=="Cochleoid" pz=((x^2+y^2)*atan(y/x)-@a*y) elseif @V=="Conchoid of a Circle" pz=((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @V=="Conchoid of Nicomedes" pz=((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @V=="Conchoid of de Sluze" pz=(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @V=="Conic Sections" pz=(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2) elseif @V=="Cornoid" pz=((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @V=="Cornoid 2" pz=(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @V=="Coscoid" pz=(y-@a*cos(x)/x) elseif @V=="Cosecantoid" pz=(y-@a/sin(x/@a2)) elseif @V=="Cosinusoid" pz=(y-@a*cos(x/@a2)) elseif @V=="Cotangentoid" pz=(y-@a*cotan(x/@a2)) elseif @V=="Cross Curve" pz=(@a^2*y^2+@a2^2*x^2-x^2*y^2) elseif @V=="Cubic Joint" pz=(y^2*x-@a*y^2-@a2*x^2) elseif @V=="Cubic of Apollonius" pz=((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))) elseif @V=="Curve of Cramer" pz=(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2) elseif @V=="Curve of Jefabek" pz=((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2) elseif @V=="Curve of Loriga" pz=(3*x^2-y^2-@a^2) elseif @V=="Curve of Rosillo" pz=(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)) elseif @V=="Deltoid" pz=((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @V=="Deltoid 2" pz=((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @V=="Devil's Curve" pz=(y^4-x^4+@a*y^2+@a2*x^2) elseif @V=="Devil's Curve 2" pz=(y^4-x^4-@a^2*y^2+@a2^2*x^2) elseif @V=="Dipole Curve" pz=((x^2+y^2)^3-@a^4*x^2) elseif @V=="Double Egg" pz=((x^2+y^2)^3-@a^2*x^4) elseif @V=="Double Egg 2" pz=(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2) elseif @V=="Double Folium" pz=((x^2+y^2)^2-4*@a*x*y^2) elseif @V=="Double U" pz=(y^2*(@a^2-x^2)-@a^4) elseif @V=="Dumbbell Curve" pz=(@a2^4*y^2-x^4*(@a^2-x^2)) elseif @V=="Duplicatrix Cubic" pz=(@a*y^2-x^2*(x-@a)) elseif @V=="Durer's Conchoid" pz=((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @V=="Durer's Conchoid 2" pz=(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @V=="Dwulistne" pz=((x^2+y^2)^2-(@a*x+@a2*y)*x^2) elseif @V=="Egg of Columbus" pz=(y^4+10*y^2*x^2+5*x^4-y) elseif @V=="Egg of Granville" pz=(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)) elseif @V=="Egg of Granville 2" pz=(x^2*y^2-(x-(@a+0.5))*(1-x)) elseif @V=="Egg of Kepler" pz=((x^2+y^2)^2-@a*x^3) elseif @V=="Eight Curve" pz=(x^4-@a^2*(x^2-y^2)) elseif @V=="Elkies Trinomial Curve" pz=(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)) elseif @V=="Ellipse" pz=(x^2/@a^2+y^2/@a2^2-1) elseif @V=="Fish Curve" pz=((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)) elseif @V=="Focal Conic Conchoid" pz=((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @V=="Folium" pz=((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2) elseif @V=="Folium of Descartes" pz=(x^3+y^3-3*@a*x*y) elseif @V=="Folium of Durer" pz=((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2) elseif @V=="Frequency Curve" pz=(y-sqrt(2*pi)*exp(-x^2/2)) elseif @V=="Heart Curve" pz=((x^3+y^2-1)^3-x^2*y^3) elseif @V=="Heart of Eugene Beutel" pz=((x^2+y^2-1)^3-x^2*y^3) elseif @V=="Heart of Raphael Laporte" pz=(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6) elseif @V=="Hippopede" pz=((x^2+y^2)^2-@a*x^2-@a2*y^2) elseif @V=="Hippopede of Proclus" pz=((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2) elseif @V=="Hoerl Curve" pz=(y-x^@a*e^x) elseif @V=="Humbert's Cubic" pz=(x^3-3*x*y^2-@a^3) elseif @V=="Hyperbola" pz=(x^2/@a^2-y^2/@a2^2-1) elseif @V=="Hyperbola 2" pz=(x^2/@a^2-y^2/@a2^2+1) elseif @V=="Hyperbolic Cosecantoid" pz=(y-@a/sinh(x/@a2)) elseif @V=="Hyperbolic Cosinusoid" pz=(y-@a*cosh(x/@a2)) elseif @V=="Hyperbolic Cotangentoid" pz=(y-@a*cotanh(x/@a2)) elseif @V=="Hyperbolic Secantoid" pz=(y-@a/cosh(x/@a2)) elseif @V=="Hyperbolic Sinusoid" pz=(y-@a*sinh(x/@a2)) elseif @V=="Hyperbolic Tangentoid" pz=(y-tanh(@a*x)) elseif @V=="Hyperelliptic Curve" pz=(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)) elseif @V=="Illumination Curve" pz=(y^2-recip((x^2+1)^3)) elseif @V=="Inverse Nephroid" pz=((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @V=="Isoptic Curve" pz=(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x) elseif @V=="Kampyle of Eudoxus" pz=(@a^2*x^4-@a2^4*(x^2+y^2)) elseif @V=="Kappa Curve" pz=(y^2*(x^2+y^2)-@a^2*x^2) elseif @V=="Kepler's Folium" pz=(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2) elseif @V=="Kiepert Curve" pz=((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)) elseif @V=="Kieroid" pz=(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @V=="Kiss Curve" pz=(@a^4*y^2-(@a^2-x^2)^3) elseif @V=="Klein Quartic" pz=((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)) elseif @V=="Kulp Quartic" pz=(x^2*y^2-@a^2*(@a^2-y^2)) elseif @V=="Lemniscate of Bernoulli" pz=((x^2+y^2)^2-@a^2*(x^2-y^2)) elseif @V=="Lemniscate of Booth" pz=((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2) elseif @V=="Limacon of Pascal" pz=((x^2+y^2-@a*y)^2-(x^2+y^2)) elseif @V=="Limacon of Pascal 2" pz=((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)) elseif @V=="Links Curve" pz=((x^2+y^2-3*x)^2-4*x^2*(2-x)) elseif @V=="Lissajous Curve" pz=(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)) elseif @V=="Lissajous Curve 2" pz=(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)) elseif @V=="Lissajous Quadratic" pz=(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4) elseif @V=="Logarithmic Lemniscate" pz=(y^2-x^2*log(@a^2/x^2)) elseif @V=="Logarithmic Sinusoid" pz=(y-log(sqrt(1-x^2))) elseif @V=="Logistic Growth Curve" pz=(y-recip(1+@a*e^x)) elseif @V=="Maltese Cross Curve" pz=(x*y*(x^2-y^2)-x^2-y^2) elseif @V=="Neile's Semi-Cubical Parabola" pz=(y^3-@a*x^2) elseif @V=="Neile's Semi-Cubical Parabola 2" pz=((x-0.5)^3-3*y^2) elseif @V=="Nephroid" pz=((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @V=="Nephroid of Freeth" pz=((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @V=="Newton's Diverging Parabolas" pz=(@a*y^2-x*(x^2-2*@a2*x+@a3)) elseif @V=="Newton's Diverging Parabolas 2" pz=(y^2-x*(x^2+2*@a*x+@a2)) elseif @V=="Nodal Curve" pz=(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2) elseif @V=="Oblique Bifolium" pz=((x^2+y^2)^2-x^2*(@a*x+@a2*y)) elseif @V=="Oblique Cappa" pz=((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2) elseif @V=="Oblique Cissoid" pz=((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @V=="Oblique Pancappa" pz=((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2) elseif @V=="Oblique Strophoid" pz=(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @V=="Ophiuride" pz=(x*(x^2+y^2)-@a2*x*y-@a*y^2) elseif @V=="Parabola" pz=(4*@a*(x-@a2)-(y-@a3)^2) elseif @V=="Parabola 2" pz=(x-@a*(y-@a2)^2-@a3) elseif @V=="Parabola 3" pz=(y-@a*x^2-@a2*x-@a3) elseif @V=="Parabolic Trifolium" pz=(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)) elseif @V=="Pear-Shaped Quartic" pz=(@a2^2*y^2-x^3*(@a-x)) elseif @V=="Pearls of Sluze" pz=(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5) elseif @V=="Pursuit Curve" pz=(y-@a*x^2+log(x)) elseif @V=="Pursuit Curve 2" pz=(y-@a*x+log(x)) elseif @V=="Quadratix of Hippias" pz=(x-y*cotan(y/@a)) elseif @V=="Quadrifolium" pz=((x^2+y^2)^3-4*@a^2*x^2*y^2) elseif @V=="Regular Trifolium" pz=((x^2+y^2)^2-@a*x*(x^2-3*y^2)) elseif @V=="Right Strophoid" pz=(y^2-x^2*(@a-x)/(@a+x)) elseif @V=="Rose Curve" pz=(x-@a*sin(@a2*y)) elseif @V=="Rose Curve 2" pz=(x-@a*cos(@a2*y)) elseif @V=="Satchel" pz=((x^2-@a2*y)^2-@a^2*(x^2-y^2)) elseif @V=="Scarab" pz=((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2) elseif @V=="Scyphoid" pz=(x^4-y^4-4*@a*x*y^2) elseif @V=="Secantoid" pz=(y-@a/cos(x/@a2)) elseif @V=="Seccoid" pz=(y-@a2/(x*cos(x))) elseif @V=="Semi-Trident" pz=(x*y^2-@a*x) elseif @V=="Serpentine Curve" pz=(y-@a*@a2*x/(x^2+@a^2)) elseif @V=="Sincoid" pz=(y-@a*sin(x)/x) elseif @V=="Sinus Chain" pz=(y^2-abs(sin(x)+0.1*sin(2*x))) elseif @V=="Sinusoid" pz=(y-@a*sin(x/@a2)) elseif @V=="Spiric Curve" pz=((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4) elseif @V=="Spiric of Perseus" pz=((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3) elseif @V=="Spiric Sections" pz=((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)) elseif @V=="Superellipse" pz=((x/@a)^@a3+(y/@a2)^@a3-1) elseif @V=="Superellipse 2" pz=(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1) elseif @V=="Swastika Curve" pz=(2*x*y-x^4+y^4) elseif @V=="Syntractrix" pz=(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)) elseif @V=="Szego Curve" pz=(x^2+y^2-e^(2*x-2)) elseif @V=="Tancoid" pz=(y-@a*tan(x)/x) elseif @V=="Tangentoid" pz=(y-@a*tan(x/@a2)) elseif @V=="Tetracuspid" pz=(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2) elseif @V=="Torpedo" pz=((x^2+y^2)^2-@a*x*(x^2-y^2)) elseif @V=="Tractrix" pz=(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)) elseif @V=="Trident" pz=(y-x^2-@a/x) elseif @V=="Trident 2" pz=(x*y+@a*x^3+@a2*x^2+@a3*x-@a4) elseif @V=="Trifolium" pz=((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)) elseif @V=="Trifolium 2" pz=((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)) elseif @V=="Trisectrix of Delange" pz=((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)) elseif @V=="Trisectrix of Maclaurin" pz=(y^2*(@a+x)-x^2*(3*@a-x)) elseif @V=="Trisectrix of Maclaurin 2" pz=(2*x^3+2*x*y^2-3*x^2+y^2) elseif @V=="Trott Curve" pz=(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81) elseif @V=="Tschirnhaus' Cubic" pz=(3*@a*y^2-x*(x-@a)^2) elseif @V=="Tschirnhaus' Cubic 2" pz=(27*@a*y^2-(@a-x)*(x+8*@a)^2) elseif @V=="Visiera" pz=(x*(x^2+y^2)-@a*(x^2+2*y^2)) elseif @V=="Viviani's Curve" pz=(y^2-x^2*(@a^2-x^2)) elseif @V=="Watt's Curve" pz=((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)) elseif @V=="Witch of Agnesi" pz=(y-8*@a^3/(x^2+4*@a^2)) elseif @V=="OM1" pz=((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)) elseif @V=="OM2" pz=((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)) elseif @V=="OM3" pz=(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)) elseif @V=="OM4" pz=(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)) elseif @V=="OM5" pz=(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5) elseif @V=="OM6" pz=(sin(x)^3+sin(y)^3-@a) elseif @V=="OM7" pz=(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3) elseif @V=="OM8" pz=((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2) elseif @V=="OM9" pz=((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3) elseif @V=="OM10" pz=((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2) elseif @V=="OM11" pz=(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1) elseif @V=="OM12" pz=((x^2+y^2)^2-@a/(x^2-y^2)) elseif @V=="OM13" pz=((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)) elseif @V=="OM14" pz=((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)) elseif @V=="OM15" pz=((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y) elseif @V=="OM16" pz=(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))) elseif @V=="OM17" pz=((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)) elseif @V=="OM18" pz=(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)) elseif @V=="OM19" pz=(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))) elseif @V=="OM20" pz=(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))) elseif @V=="OM21" pz=(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4) elseif @V=="OM22" pz=(y-x*(x^4-@a)*(x^2+y^2)^2) elseif @V=="OM23" pz=((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)) endif if @v3==0 float b=|pz|+cabs(pz) elseif @v3==1 float b=|pz|+real(pz) elseif @v3==2 float b=|pz|+sqr(real(exp(pz))) elseif @v3==3 float b=|pz|+sqr(real(recip(pz))) elseif @v3==4 float b=|pz|+cabs(log(pz)) elseif @v3==5 float b=|pz|+sqr(imag(log(pz))) elseif @v3==6 float b=|pz|+cabs(pz)*real(pz)+imag(pz) elseif @v3==7 float b=cabs(log(pz))*cabs(pz) elseif @v3==8 float b=|pz|*|cotan(pz)|+real(pz) elseif @v3==9 float b=|pz|*real(atanh(pz))+real(pz) elseif @v3==10 float b=|pz|*real(recip(pz))+real(pz) elseif @v3==11 float b=cabs(log(pz))+|imag(pz)*real(pz)| elseif @v3==12 float b=cabs(sqrt(pz))+|imag(pz)*real(pz)| elseif @v3==13 float b=cabs(cotanh(pz))+|imag(pz)*real(pz)| elseif @v3==14 float b=|cotan(pz)|+cabs(pz) elseif @v3==15 float b=real(log(pz))*real(pz) elseif @v3==16 float b=|tanh(pz)|+imag(pz) else float b=|recip(pz)|+imag(pz) endif if b=@p7 index=3^(@adj2*m_Iterations+@adj1*a) else m_Solid=true endif endif else index=3^(@adj2*m_Iterations+@adj1*a) endif return index endfunc private: float a float index default: title="Krommen" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param V caption="Curve" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22""OM23" endparam param v2 caption="Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44" endparam param v3 caption="Variant 2" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param a caption="Curve Parameter" default=(1,0) visible=@V!="Frequency Curve" \ && @V!="Arcs of Samothrace" && @V!="Illumination Curve" \ && @V!="Logarithmic Sinusoid" \ && @V!="Elkies Trinomial Curve" && @V!="Bolza" \ && @V!="Hyperelliptic Curve" \ && @V!="Maltese Cross Curve" && @V!="Ampersand Curve" \ && @V!="Heart of Eugene Beutel" && @V!="Heart of Raphael Laporte" \ && @V!="Butterfly Knot" && @V!="Trott Curve" && @V!="Swastika Curve" \ && @V!="Biquartic" && @V!="Butterfly Curve" && @V!="Bean Curve" \ && @V!="Bean Curve 2" && @V!="Egg of Columbus" && @V!="Sinus Chain" \ && @V!="Szego Curve" && @V!="Links Curve" && @V!="Double Egg 2" \ && @V!="Heart Curve" && @V!="Cornoid 2" \ && @V!="Nodal Curve" && @V!="Trisectrix of Maclaurin 2" \ && @V!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Curve Parameter 2" default=(1,0) visible=@V=="Cartesian Oval" || @V=="Conchoid of de Sluze" \ || @V=="Ellipse" || @V=="Folium" || @V=="Kampyle of Eudoxus" \ || @V=="Superellipse" || @V=="Newton's Diverging Parabolas" \ || @V=="Pearls of Sluze" || @V=="Spiric Sections" \ || @V=="Bullet-Nose Curve" \ || @V=="Dwulistne" || @V=="Cubic Joint" || @V=="Syntractrix" \ || @V=="Oblique Strophoid" || @V=="Superellipse 2" || @V=="Oblique Cissoid" \ || @V=="Hippopede" || @V=="Oblique Pancappa" || @V=="Oblique Cappa" \ || @V=="Oblique Bifolium" || @V=="Lemniscate of Booth" \ || @V=="Curve of Jefabek" || @V=="Curve of Cramer" \ || @V=="OM3" || @V=="OM4" || @V=="OM5" || @V=="Hippopede of Proclus" \ || @V=="OM11" || @V=="Cissoid of Zahradnik" \ || @V=="Rose Curve" || @V=="Rose Curve 2" || @V=="Cassinian Ovals" \ || @V=="Conchoid of Nicomedes" || @V=="Devil's Curve" || @V=="Durer's Conchoid" \ || @V=="Devil's Curve 2" || @V=="Durer's Conchoid 2" || @V=="Hyperbola" \ || @V=="Parabola" || @V=="Hyperbola 2" \ || @V=="Pear-Shaped Quartic" || @V=="Serpentine Curve" || @V=="Sinusoid"\ || @V=="Trident 2" || @V=="Atriphthaloid" || @V=="Clairaut Curve" || @V=="Clinoid" \ || @V=="Cross Curve" || @V=="Cubic of Apollonius" || @V=="Chasles Cubic" || @V=="Circular Cubic" \ || @V=="Dumbbell Curve" || @V=="Kieroid"\ || @V=="Egg of Granville" || @V=="Curve of Rosillo" || @V=="OM13" || @V=="Ophiuride" \ || @V=="Klein Quartic" || @V=="Tangentoid" || @V=="Beetle" || @V=="Secantoid" || @V=="Hyperbolic Secantoid" \ || @V=="Spiric Curve" || @V=="Spiric of Perseus" || @V=="Tetracuspid" || @V=="Trifolium" \ || @V=="Trifolium 2" || @V=="OM14" || @V=="OM10" || @V=="Isoptic Curve" || @V=="Cotangentoid" \ || @V=="Cosinusoid" || @V=="Hyperbolic Cosinusoid" || @V=="Cosecantoid" || @V=="Hyperbolic Cosecantoid" \ || @V=="Hyperbolic Sinusoid" || @V=="Hyperbolic Cotangentoid" || @V=="OM16" || @V=="Alain Curve" \ || @V=="OM19" || @V=="OM20" || @V=="Focal Conic Conchoid" || @V=="Conchoid of a Circle" || @V=="Satchel" \ || @V=="Kepler's Folium" || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Scarab" || @V=="Lissajous Quadratic" \ || @V=="Watt's Curve" || @V=="Limacon of Pascal 2" || @V=="Newton's Diverging Parabolas 2" endparam param a3 caption="Curve Parameter 3" default=(1,0) visible=@V=="Cartesian Oval" || @V=="Superellipse" || @V=="Newton's Diverging Parabolas" \ || @V=="Pearls of Sluze" || @V=="Spiric Sections" || @V=="Superellipse 2" \ || @V=="Oblique Pancappa" || @V=="OM11" || @V=="Cissoid of Zahradnik" \ || @V=="Parabola" \ || @V=="Trident 2" || @V=="Clinoid" || @V=="Cubic of Apollonius" || @V=="Chasles Cubic" \ || @V=="Circular Cubic" || @V=="Kieroid" || @V=="Egg of Granville" || @V=="Curve of Rosillo" \ || @V=="Klein Quartic" || @V=="Beetle" || @V=="Spiric Curve" || @V=="Spiric of Perseus" \ || @V=="Trifolium" || @V=="OM16" || @V=="OM19" || @V=="OM20" || @V=="Conchoid of a Circle" \ || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Watt's Curve" endparam param a4 caption="Curve Parameter 4" default=(1,0) visible=@V=="Pearls of Sluze" || @V=="Superellipse 2" || @V=="Cissoid of Zahradnik" \ || @V=="Trident 2" || @V=="Cartesian Oval" || @V=="Chasles Cubic" \ || @V=="Circular Cubic" || @V=="Spiric Curve" endparam param a5 caption="Curve Parameter 5" default=(1,0) visible=@V=="Pearls of Sluze" || @V=="Cissoid of Zahradnik" \ || @V=="Circular Cubic" endparam param adj1 caption="Adjustment 1" default=-0.8 endparam param @adj2 caption="Adjustment 2" default=0.01 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.035 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_FristobensDanxoda(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 i=-1 i2=-1 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="ident" pz=ident(pz) elseif @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="log" pz=log(pz) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+cabs(pz) elseif @v==2 pz=pz+exp(pz) elseif @v==3 pz=pz+sqr(pz) elseif @v==4 pz=pz+atanh(pz) elseif @v==5 pz=pz+atan(pz) elseif @v==6 pz=pz+cosh(pz) elseif @v==7 pz=pz+cos(pz) elseif @v==8 pz=pz-cabs(pz) elseif @v==9 pz=pz-exp(pz) elseif @v==10 pz=pz-sqrt(pz) elseif @v==11 pz=pz-sqr(pz) elseif @v==12 pz=pz-atanh(pz) elseif @v==13 pz=pz-atan(pz) elseif @v==14 pz=pz-cos(pz) elseif @v==15 pz=pz-cosh(pz) elseif @v==16 pz=pz-round(pz) elseif @v==17 pz=pz+1/exp(pz) elseif @v==18 pz=pz+1/log(pz) elseif @v==19 pz=pz+1/sqr(pz) elseif @v==20 pz=pz+1/cos(pz) elseif @v==21 pz=pz-1/pz elseif @v==22 pz=pz-1/conj(pz) elseif @v==23 pz=pz-1/exp(pz) elseif @v==24 pz=pz-1/log(pz) elseif @v==25 pz=pz-1/acosh(pz) elseif @v==26 pz=pz-1/acos(pz) elseif @v==27 pz=pz-1/cosh(pz) elseif @v==28 pz=pz-1/cos(pz) endif pz=abs(pz) x=real(pz) y=imag(pz) i=i+1 float b=|x+@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x))| if b@p7 index=@adj*a*i2/28 else m_Solid=true endif endif else index=@adj*a*i2/28 endif return index endfunc private: float a int i int i2 float index default: title="Fristobens Danxoda" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29" endparam param Fs caption="Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="FD Parameter 1" default=(1,0) endparam param p2 caption="FD Parameter 2" default=(1,0) endparam param p3 caption="FD Parameter 3" default=(1,0) endparam param adj caption="Adjustment" default=1.0 endparam param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.04 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_MagmaGrolthius4(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if !g if @V2=="1" b=@p5*|d|/|fn2(pz)|+@p6 elseif @V2=="2" b=@p5*|d|/|fn2(pz+0.65/exp(pz))|+@p6 elseif @V2=="3" b=@p5*|d|/|fn2(pz-0.5/conj(pz))|+@p6 elseif @V2=="4" b=@p5*|d|/|fn2(pz-2*tanh(pz))|+@p6 elseif @V2=="5" b=@p5*|d|/|fn2(pz-cotanh(pz))|+@p6 elseif @V2=="6" b=@p5*|d|/|fn2(pz+flip(pz))|+@p6 elseif @V2=="7" b=@p5*|d|/|fn2(pz+cosh(pz))|+@p6 elseif @V2=="8" b=@p5*|d|/|fn2(pz+0.3/sqr(pz))|+@p6 elseif @V2=="9" b=@p5*|d|/|fn2(pz-cotan(pz))|+@p6 elseif @V2=="10" b=@p5*|d|/|fn2(pz+0.5/abs(pz))|+@p6 elseif @V2=="11" b=@p5*|d|/|fn2(pz-2*sinh(pz))|+@p6 elseif @V2=="12" b=@p5*|d|/|fn2(pz+1/cosh(pz))|+@p6 elseif @V2=="13" b=@p5*|d|/|fn2(pz+1/cos(pz))|+@p6 elseif @V2=="14" b=@p5*|d|/|fn2(pz-cosh(pz))|+@p6 elseif @V2=="15" b=@p5*|d|/|fn2(pz-1/pz)|+@p6 elseif @V2=="16" b=@p5*|d|/|fn2(pz+cos(pz))|+@p6 elseif @V2=="17" b=@p5*|d|/|fn2(pz-exp(pz))|+@p6 elseif @V2=="18" b=@p5*|d|/|fn2(pz+0.5/flip(pz))|+@p6 elseif @V2=="19" b=@p5*|d|/|fn2(pz-cos(pz))|+@p6 elseif @V2=="20" b=@p5*|d|/|fn2(pz-0.3/sqr(pz))|+@p6 elseif @V2=="21" b=@p5*|d|/|fn2(pz-1/cos(pz))|+@p6 elseif @V2=="22" b=@p5*|d|/|fn2(pz+cotanh(pz))|+@p6 elseif @V2=="23" b=@p5*|d|/|fn2(pz-1/cosh(pz))|+@p6 elseif @V2=="24" b=@p5*|d|/|fn2(pz+conj(pz))|+@p6 elseif @V2=="25" b=@p5*|d|/|fn2(pz+1/exp(pz))|+@p6 elseif @V2=="26" b=@p5*|d|/|fn2(pz-0.5/abs(pz))|+@p6 elseif @V2=="27" b=@p5*|d|/|fn2(pz+cotan(pz))|+@p6 elseif @V2=="28" b=@p5*|d|/|fn2(pz-2*tan(pz))|+@p6 elseif @V2=="29" b=@p5*|d|/|fn2(pz-2*sin(pz))|+@p6 elseif @V2=="30" b=@p5*|d|/|fn2(pz+1/pz)|+@p6 elseif @V2=="31" b=@p5*|d|/|fn2(pz+0.3/exp(pz))|+@p6 endif if @V=="1" d=pz+@p1*sqr(fn1(pz)) elseif @V=="2" d=pz+@p1*sqr(fn1(pz-pz^2)) elseif @V=="3" d=pz+@p1*sqr(fn1(pz+pz^2)) elseif @V=="4" d=pz+@p1*sqr(fn1(pz+flip(pz))) elseif @V=="5" d=pz+@p1*sqr(fn1(pz+abs(pz))) elseif @V=="6" d=pz+@p1*sqr(fn1(pz-cosh(pz))) elseif @V=="7" d=pz+@p1*sqr(fn1(flip(pz)/pz)) elseif @V=="8" d=pz+@p1*sqr(fn1(conj(pz)/pz)) elseif @V=="9" d=pz+@p1*sqr(fn1(pz^3)) elseif @V=="10" d=pz+@p1*sqr(fn1(conj(pz)*pz)) elseif @V=="11" d=pz+@p1*sqr(fn1(abs(pz)*pz)) elseif @V=="12" d=pz+@p1*sqr(fn1(exp(pz)*pz)) elseif @V=="13" d=pz+@p1*sqr(fn1(pz+3.4*pz*flip(pz))) elseif @V=="14" d=pz+@p1*sqr(fn1(pz+1.5*pz*conj(pz))) elseif @V=="15" d=pz+@p1*sqr(fn1(pz+2.25*pz*abs(pz))) elseif @V=="16" d=pz+@p1*sqr(fn1(pz-0.65*pz*exp(pz))) elseif @V=="17" d=pz+@p1*sqr(fn1(pz-2.67*pz^3)) elseif @V=="18" d=pz+@p1*sqr(fn1(pz-0.67*pz*cotan(pz))) elseif @V=="19" d=pz+@p1*sqr(fn1(pz-2.8*pz*tanh(pz))) elseif @V=="20" d=pz+@p1*sqr(fn1(pz-2.8*pz*cosh(pz))) elseif @V=="21" d=pz+@p1*sqr(fn1(pz-2.8*pz*cos(pz))) elseif @V=="22" d=pz+@p1*sqr(fn1((flip(pz)+0.3)/(1+0.3*flip(pz)))) elseif @V=="23" d=pz+@p1*sqr(fn1((conj(pz)+0.8)/(1+0.8*conj(pz)))) elseif @V=="24" d=pz+@p1*sqr(fn1((abs(pz)-0.9)/(1-0.9*abs(pz)))) elseif @V=="25" d=pz+@p1*sqr(fn1((exp(pz)-0.55)/(1-0.55*exp(pz)))) elseif @V=="26" d=pz+@p1*sqr(fn1((sqr(pz)+0.45)/(1+0.45*sqr(pz)))) elseif @V=="27" d=pz+@p1*sqr(fn1((cotanh(pz)+3.5)/(1+3.5*cotanh(pz)))) elseif @V=="28" d=pz+@p1*sqr(fn1((recip(pz)+2)/(1+2*recip(pz)))) endif if b<@adj2 && f>0 g=true c=((imag(@adj1*100)-1)/@adj2)*b+a*imag(@adj1*100) endif f=f+1 a=f%real(@adj1*100) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%(@adj3*289))/(@adj3*289) else m_Solid=true endif else index=((real(c)+1)%(@adj3*289))/(@adj3*289) endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius 4" int param version caption="Version" default=100 visible=@version<100 endparam param V2 caption="MG Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30""31" endparam param V caption="MG Variant 2" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" endparam func fn2 caption="MG Function 1" default=ident() endfunc func fn1 caption="MG Function 2" default=ident() endfunc param p5 caption="MG Parameter 1" default=1.0 endparam param p6 caption="MG Parameter 2" default=0.0 endparam param p1 caption="MG Parameter 3" default=(1,0) endparam param adj1 caption="Adjustment 1" default=(-0.25,1.32) endparam param adj2 caption="Adjustment 2" default=0.5 endparam param adj3 caption="Adjustment 3" default=1.0 endparam param solid caption="Solid Color" default=true endparam } class OM_NIC(common.ulb:GradientColoring) { ;Normalized iteration count, as given here: ;http://math.unipa.it/~grim/Jbarrallo.PDF ;Try Sqrt, CubeRoot, Log or Arctan transfer function. ;This does not seem to work well with the default Linear public: float func ResultIndex(complex pz) z=@p1*fn1(pz)^@pow+@p2 a=m_Iterations+(log(log(@p3))-log(log(cabs(z))))/log(2) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: complex z float a float index default: title="NIC" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param pow caption="Z Exponent" default=(1,0) endparam param p3 caption="Adjustment" default=7.5 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.85 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Chettre(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p3*fn1(pz)+@p4 if k2<=k1 if @V=="1" d=cabs(fn2(pz*(@p1-pz)+@p2)) elseif @V =="2" d=cabs(fn2(pz*(@p1*1i-pz)+@p2)) elseif @V=="3" d=cabs(fn2(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2)) elseif @V=="4" d=cabs(fn2(pz^2*(pz-4)/(@p1+4*pz)+@p2)) elseif @V=="5" d=cabs(fn2(((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2)) elseif @V=="6" d=cabs(fn2(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2)) elseif @V=="7" d=cabs(fn2(pz-@p1*(pz^3-1)/(3*pz^2)+@p2)) elseif @V=="8" d=cabs(fn2(pz-@p1*(pz^4-1)/(4*pz^3)+@p2)) elseif @V=="9" d=cabs(fn2(pz+pz^2/(pz+@p1)+@p2)) elseif @V=="10" d=cabs(fn2(pz+pz^2/(pz+@p1*1i)+@p2)) elseif @V=="11" d=cabs(fn2((pz-@p1*1i)/(pz+@p1*1i)+@p2)) elseif @V=="12" d=cabs(fn2((pz-@p1)/(pz+@p1)+@p2)) elseif @V=="13" d=cabs(pz+@p1/fn2(pz)+@p2) elseif @V=="14" d=cabs(pz+@p1*1i/fn2(pz)+@p2) elseif @V=="15" d=cabs(pz+@p1*fn2(pz)+@p2) elseif @V=="16" d=cabs(pz+@p1*1i*fn2(pz)+@p2) elseif @V=="17" d=cabs(@p1*fn2(@p1/(pz-(@p2+1)))+(@p2+1)) elseif @V=="18" d=cabs(fn2(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2)) elseif @V=="19" d=cabs(fn2(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2)) elseif @V=="20" d=cabs(fn2((pz^2-@p1*1i)/(pz^2+@p1*1i)+@p2)) elseif @V=="21" d=cabs(fn2((pz^2-@p1)/(pz^2+@p1)+@p2)) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Chettre" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Variant Function" default=ident() endfunc param p5 caption="Detail" default=3 endparam param p6 caption="Fuzziness" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Breplumou(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 i=0 b=0.0 b2=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if i>=0 && i<=1E20 if @S==true pz=(abs(fn2(fn1(pz)))-@p3)/@p5 else pz=(fn2(fn1(pz))-@p3)/@p5 endif if @V=="1" b=log(cabs(fn3(pz*(@p1-pz)+@p2))) elseif @V=="2" b=log(cabs(fn3(pz*(@p1*1i-pz)+@p2))) elseif @V=="3" b=log(cabs(fn3(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2))) elseif @V=="4" b=log(cabs(fn3(pz^2*(pz-4)/(@p1+4*pz)+@p2))) elseif @V=="5" b=log(cabs(fn3(((pz^2+@p1-1)/(2*pz+@p1-2))^2+(@p2-0.5)))) elseif @V=="6" b=log(cabs(fn3(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2))) elseif @V=="7" b=log(cabs(fn3(pz-@p1*(pz^3-1)/(3*pz^2)+@p2))) elseif @V=="8" b=log(cabs(fn3(pz-@p1*(pz^4-1)/(4*pz^3)+@p2))) elseif @V=="9" b=log(cabs(fn3(pz+pz^2/(pz+@p1)+@p2))) elseif @V=="10" b=log(cabs(fn3(pz+pz^2/(pz+@p1*1i)+@p2))) elseif @V=="11" b=log(cabs(fn3((pz-@p1*1i)/(pz+@p1*1i)+@p2))) elseif @V=="12" b=log(cabs(fn3((pz-@p1)/(pz+@p1)+@p2))) elseif @V=="13" b=log(cabs(pz+@p1/fn3(pz)+@p2)) elseif @V=="14" b=log(cabs(pz+@p1*1i/fn3(pz)+@p2)) elseif @V=="15" b=log(cabs(pz+@p1*fn3(pz)+@p2)) elseif @V=="16" b=log(cabs(pz+@p1*1i*fn3(pz)+@p2)) elseif @V=="17" b=log(cabs(@p1*fn3(@p1/(pz-(@p2+1)))+(@p2+1))) elseif @V=="18" b=log(cabs(fn3(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2))) elseif @V=="19" b=log(cabs(fn3(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2))) elseif @V=="20" b=log(cabs(fn3((pz^2-@p1*1i)/(pz^2+@p1*1i)+@p2))) elseif @V=="21" b=log(cabs(fn3((pz^2-@p1)/(pz^2+@p1)+@p2))) elseif @V=="22" b=log(cabs(fn3(@p1*pz^3/(pz^2+@p2)))) elseif @V=="23" b=log(cabs(fn3(@p1*1i*pz^3/(pz^2-@p2)))) endif b2=cabs(pz)+1 b=abs(b^0.002-b2^0.01)^2 a=b/(cabs(pz)+1)+a endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p7 index=1000*a else m_Solid=true endif else if 1000*a>@p7 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a int i float b float b2 float index default: title="Breplumou" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23" endparam param p5 caption="Z Parameter 1" default=(-2.9,0) endparam param p3 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function 1" default=sqr() endfunc func fn2 caption="Z Function 2" default=ident() endfunc param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam func fn3 caption="Variant Function" default=ident() endfunc param S caption="Abs(z)" default=false endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.08 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_InforsticChaneJulia(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) c=@c return pz endfunc private: complex c complex func Iterate(complex pz) m_ZOld=pz return ((@p1-1)*@p2*pz^4-@p1*(@p2-1))/((@p1-1)*pz^2-(@p2-1))+c endfunc default: title="Inforstic Chane Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="IC Parameter 1" default=(2,0) endparam param p2 caption="IC Parameter 2" default=(-0.2,0) endparam param c caption="Julia Seed" default=(-1.25,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarX56(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pz=pz+@asp*pz^2 pk=pk+@asp*pk^2 pk=@p1*@bf(pz*pk)+@p2 pz=pk^2/pz+pz^3/pk+c return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar X 56" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param asp caption="Add Sqr Parameter" default=(-0.6,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0.75,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(-0.2,0) endparam func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarX57(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=@p1*@bf(pz/pk)+@p2+c pz=c*pz^2+@p1*a^2 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar X 57" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.65,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=1 endfunc param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(1.7,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarX58(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pk=@p1*@bf(pz/pk)+@p2 pk=pk^2+c pz=pk*pz+@p3*c pk=pz*pk+@p4*c return pz return pk endfunc default: title="Bivar X 58" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam param p3 caption="Pixel Parameter 1" default=(1,0) endparam param p4 caption="Pixel Parameter 2" default=(1,0) endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorBoxLite(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=fn1(fn2(pz)) c=fn2(@c) else fpixel=pz c=fn3(fn4(fpixel)) if @st==0 pz=fn4(@sp) else pz=fn4(pz) endif endif i2=0 i3=0 return pz endfunc private: float values[#maxiter] int i int seed complex c int i2 int i3 complex func Iterate(complex pz) while i3<@iter i3=i3+1 if @a==true && @av==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) else pz=@zp1*pz+@zp2 endif pz=pz+@afp*@aff(pz) if @a==true && @av==4 float x=real(pz)+values[i2] float y=imag(pz)+values[i2] else float x=real(pz) float y=imag(pz) endif if x>@p2 x=2*@p2-x elseif x<-@p2 x=-2*@p2-x endif if y>@p3 y=2*@p3-y elseif y<-@p3 y=-2*@p3-y endif if @a==true && @av==5 x=x*@p4+values[i2] y=y*@p4+values[i2] else x=x*@p4 y=y*@p4 endif if @a==true && @av==3 pz=(x+flip(y))+@ap*@af(values[i2]) else pz=x+flip(y) endif if @a==true && @av==0 pz=(@p1*pz)^@pow+c+@ap*@af(values[i2]) elseif @a==true && @av==2 pz=(@p1*pz)^@pow+c*@ap*@af(values[i2]) else pz=(@p1*pz)^@pow+c endif i2=i2+1 endwhile pz=@adj*pz return pz endfunc default: title="Aleator Box Lite" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param a caption="Aleator" default=false endparam param av caption="Aleator Variant" enum="1""2""3""4""5""6" visible=@a==true endparam param ap caption="Aleator Parameter" default=(1,0) visible=@a==true && @av!=4 && @av!=5 endparam func af caption="Aleator Function" default=ident() visible=@a==true && @av!=4 && @av!=5 endfunc param seed caption="Random Seed" default=12345678 visible=@a==true endparam param iter caption="Iterations" default=5 endparam param c caption="Julia Seed" default=(1,1) visible=@jm==0 endparam param p1 caption="Box Parameter 1" default=(1,1) endparam param p2 caption="Box Parameter 2" default=1.0 endparam param p3 caption="Box Parameter 3" default=1.0 endparam param p4 caption="Box Parameter 4" default=2.0 endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@jm==1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 && @st==0 endparam func fn1 caption="Start Function 1" visible=@jm==0 default=ident() endfunc func fn2 caption="Start Function 2" default=ident() visible=@jm==0 endfunc func fn3 caption="Pixel Function 1" visible=@jm==1 default=ident() endfunc func fn4 caption="Pixel Function 2" default=ident() visible=@jm==1 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(1,0) endparam param @afp caption="Add Func Parameter" default=(0,0) endparam func aff caption="Add Func Function" default=recip() visible=@afp!=0 endfunc param adj caption="Adjustment" default=1.02 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) pz=pz+@sp1/pz+@sp2*(pz-1i)/(pz+1i) i2=0 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex func Iterate(complex pz) pz=@p3*fn2(pz)+@p4 pz=pz+@p5/pz pz=pz+@p6*sqr(pz) pz=pz+@p7*pz^2*(pz-@p8)/(1-@p8*pz) if @v==0 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2)*@p1+values[i2] else pz=(pz+@p2)*@p1-values[i2] endif elseif @v==1 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2)*@p1-values[i2] else pz=(pz+@p2)*@p1+values[i2] endif elseif @v==2 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1+values[i2] else pz=(pz+@p2-values[i2])*@p1-values[i2] endif elseif @v==3 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1-values[i2] else pz=(pz+@p2+values[i2])*@p1+values[i2] endif elseif @v==4 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1+values[i2] else pz=(pz+@p2+values[i2])*@p1-values[i2] endif elseif @v==5 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1-values[i2] else pz=(pz+@p2-values[i2])*@p1+values[i2] endif elseif @v==6 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1 else pz=(pz+@p2-values[i2])*@p1 endif elseif @v==7 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1 else pz=(pz+@p2+values[i2])*@p1 endif endif i2=i2+1 return pz endfunc default: title="Aleator Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp1 caption="Start Parameter 1" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn4 caption="Barnsley Function" default=ident() endfunc param p1 caption="Barnsley Parameter 1" default=(1,1) endparam param p2 caption="Barnsley Parameter 2" default=(0.65,1) endparam param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param p5 caption="Add Recip Parameter" default=(0,0) endparam param p6 caption="Add Sqr Parameter" default=(0,0) endparam param p7 caption="Add Munster Parameter 1" default=(0,0) endparam param p8 caption="Add Munster Parameter 2" default=(2,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Alizogorshment2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1/log(@pow) b=log(log(@bail)) endfunc float func ResultIndex(complex pz) float c=0.0 pz=@zp1*(fn1(pz))+@zp2 if @V=="Chirikov Mod" pz=real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))+flip(real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))-real(pz)) elseif @V=="Circle Map" pz=pz+(@p1-3)-@p2*sin(pz) elseif @V=="Cissoid of Zahradnik" pz=@p3*real(pz)^2+2*@p4*real(pz)*imag(pz)+(@p5+1)*imag(pz)^2-2*@p1*real(pz)-2*@p2*imag(pz) elseif @V=="Clifford" pz=sin((@p1+1)*imag(pz))+@p2*cos((@p1+1)*real(pz))+flip(sin(@p3*real(pz))+@p4*cos(@p3*imag(pz))) elseif @V=="Cubic of Apollonius" pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+(@p2+2)^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @V=="Curve of Rosillo" pz=imag(pz)^2*(@p3-real(pz))^2-(@p2-real(pz))^2*((@p1+1.5)^2-real(pz)^2) elseif @V=="de Jong" pz=sin(@p1*imag(pz))-cos(@p2*real(pz))+flip(sin((@p3-3)*real(pz))-cos(@p4*imag(pz))) elseif @V=="Devil's Curve" pz=imag(pz)^4-real(pz)^4-@p1^2*imag(pz)^2+@p2^2*real(pz)^2 elseif @V=="Hamilton" pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V=="Hamilton Torus" pz=-sin(imag(pz))*(2-@p1)+flip(sin(real(pz))*@p1) elseif @V=="Kam Torus" pz=real(pz)*cos(@p1)+(real(pz)^2-imag(pz))*sin(@p1)+flip(real(pz)*sin(@p1)-(real(pz)^2-imag(pz))*cos(@p1)) elseif @V=="Kan" x=@p3*sin(imag(pz)+sin(@p1*imag(pz))) y=@p4*sin(real(pz)+sin((@p2+1)*real(pz))) pz=x+flip(y) elseif @V=="Kaplan-Yorke" pz=real(@p1)*real(pz)%1+flip(-@p2*imag(pz)+cos(2*pi*real(pz))) elseif @V=="Latoocarfian" pz=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*sin(@p3*imag(pz))) elseif @v=="Magus 1" pz=(@p1*cos(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*cos(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) elseif @V=="Magus 2" pz=(@p1*tan(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*tan(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) elseif @V=="Magus 3" pz=(real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))+flip((real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))-(real(pz)%(2*pi))) elseif @V=="Magus 4" if imag(pz)>0.5 pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz)-2*@p3)) elseif real(pz)>0.5 pz=cos(2*@p1*real(pz)-2*@p3+flip(2*@p2*imag(pz))) else pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz))) endif elseif @V=="Magus 5" pz=@p1^2*(real(pz)^2-imag(pz)^2)^2-@p1*sin(real(pz)^2+imag(pz)^2)^2-real(pz)^2*imag(pz)^2 elseif @V=="Magus 6" x=@p1*sin(real(pz)*cos(imag(pz)))-@p2*cos(real(pz)*sin(imag(pz))) y=@p1*cos(imag(pz)*sin(real(pz)))+@p2*sin(imag(pz)*cos(real(pz))) pz=x+flip(y) elseif @V=="Magus 7" x=real(pz)+@p1+(@p2+1)*sin(real(pz)^2-imag(pz)^2) y=imag(pz)+@p3+(@p2+1)*sin(real(pz)^2+imag(pz)^2) pz=x+flip(y) elseif @V=="Magus 8" x=tan(sin(@p1*imag(pz)))+(sin(@p1*real(pz)))^2 y=tan(sin(@p2*real(pz)))+(sin(@p2*imag(pz)))^2 pz=x+flip(y) elseif @V=="Magus 9" pz=real(pz)*sin(2*imag(pz))+@p1*cos(real(pz))+flip(imag(pz)*cos(2*real(pz))+@p2*cos(imag(pz))) elseif @V=="Magus 10" pz=@p3*real(pz)-imag(pz)-cotan(real(pz))*(@p1*real(pz)^2+@p2*imag(pz)^2)+flip(real(pz)+@p4*imag(pz)-cotan(imag(pz))*(@p2*real(pz)^2+@p1*imag(pz)^2)) elseif @V=="Magus 11" pz=sin(@p1*imag(pz))+(cos(@p1*real(pz)))^2+(sin(@p1*imag(pz)))^3+flip(sin(@p2*real(pz))+(cos(@p2*imag(pz)))^2+(sin(@p2*real(pz)))^3) elseif @V=="Magus 12" x=tan(cos(@p1*imag(pz)))+(cos(@p1*real(pz)))^2 y=tan(cos(@p2*real(pz)))+(cos(@p2*imag(pz)))^2 pz=x+flip(y) elseif @V=="Pharaoh" x=-imag(pz)+@p1*cos(real(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p3 y=real(pz)+@p2*cos(imag(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p4-2 pz=x+flip(y) elseif @V=="Polyharmonic Pendulum" pz=imag(pz)+flip(-@p1*sin(real(pz))-@p2*sin(3*real(pz))+@p3*sin(@p4)) elseif @V=="Popcorn" pz=real(pz)-@p1*sin(imag(pz)+tan((@p2+(-1,1))*imag(pz)))+flip(imag(pz)-@p1*sin(real(pz)+tan((@p2+(-1,1))*real(pz)))) elseif @V=="Sine-Sine" pz=sin(real(pz))-sin(2*imag(pz))+flip(real(pz)) elseif @V=="Sinus Chain" pz=imag(pz)^2-abs(sin(real(pz))+@p1*sin(2*real(pz))) elseif @V=="Svensson" pz=(@p1+1)*sin(@p2*real(pz))-sin(@p3*imag(pz))+flip(@p4*cos(@p2*real(pz))-cos(@p3*imag(pz))) elseif @V=="Thorn 3" x=real(pz)/cos(imag(pz))*sin(imag(pz))+real(@p1) y=imag(pz)/sin(real(pz))*cos(real(pz))+imag(@p1) pz=x+flip(y) endif c=real(m_Iterations+a*b-a*log(log(cabs(pz)))) float d=@first float f=@last if @trans=="Power" c=c^(1/@transpow) d=d^(1/@transpow) f=f^(1/@transpow) else c=log(c) d=log(d) f=log(f) endif if c@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float b complex a float index default: title="Alizogorshment 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="Chirikov Mod""Circle Map""Cissoid of Zahradnik"\ "Clifford""Cubic of Apollonius""Curve of Rosillo""de Jong"\ "Devil's Curve""Hamilton""Hamilton Torus""Kam Torus""Kan""Kaplan-Yorke"\ "Latoocarfian""Magus 1""Magus 2""Magus 3"\ "Magus 4""Magus 5""Magus 6""Magus 7""Magus 8""Magus 9""Magus 10"\ "Magus 11""Magus 12""Pharaoh""Polyharmonic Pendulum""Popcorn"\ "Sine-Sine""Sinus Chain""Svensson""Thorn 3" default=0 endparam param p1 caption="Variant Parameter" default=(1,0) visible=@V!="Sinus Chain" && @V!="Sine-Sine" endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V=="Circle Map" || @V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Cubic of Apollonius" \ || @V=="Curve of Rosillo" || @V=="de Jong" || @V=="Devil's Curve" || @V=="Hamilton" || @V=="Kan" || @V=="Kaplan-Yorke" || @V=="Latoocarfian" \ || @V=="Magus 1"|| @V=="Magus 2"|| @V=="Magus 4" || @V=="Magus 6" || @V=="Magus 7" || @V=="Magus 8" || @V=="Magus 9" || @V=="Magus 10" \ || @V=="Magus 11" || @V=="Magus 12" || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Popcorn" || @V=="Svensson" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Cubic of Apollonius" || @V=="Curve of Rosillo" \ || @V=="de Jong" || @V=="Kan" || @V=="Latoocarfian" || @V=="Magus 4" || @V=="Magus 7" || @V=="Magus 10" \ || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Svensson" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="de Jong"|| @V=="Kan" || @V=="Latoocarfian" \ || @V=="Magus 10" || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Svensson" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Cissoid of Zahradnik" endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param rep caption="Repetitions" default=8.0 endparam param first caption="First Iteration" default=1 endparam param last caption="Last Iteration" default=1000 endparam param trans caption="Transfer" enum="Power""Log" default=1 endparam param transpow caption="Transfer Power" default=3.0 visible=@trans==0 endparam param bail caption="Bailout" default=100000.0 endparam param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=1.4 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Yeortion(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1) elseif @jm==1 pz=(@p2+2.5)*((1-(@p1+2.75))*(pz^3-@pf(fpixel))+(@p1+2.75)*pz^2)/((1-(@p1+2.75))*3*pz^2+(@p1+2.75)) else pz=(@p1+2.5)*((1-@pf(fpixel))*(pz^3-@p2)+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel)) endif return pz endfunc private: complex fpixel default: title="Yeortion" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Yeortion Parameter 1" default=(-1.5,0) endparam param p2 caption="Yeortion Parameter 2" default=(-1.5,0) endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_AleatorDemmond(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile i2=0 a=-1.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp2*@zf(pz)+@zp1+@ap*@af(values[i2]) if @F1=="ident" float b=|ident(pz)| elseif @F1=="sin" float b=|sin(pz)| elseif @F1=="sinh" float b=|sinh(pz)| elseif @F1=="asin" float b=|asin(pz)| elseif @F1=="asinh" float b=|asinh(pz)| elseif @F1=="versin" float b=|1-cos(pz)| elseif @F1=="aversin" float b=|acos(1-pz)| elseif @F1=="haversin" float b=|(1-cos(pz))/2| elseif @F1=="ahaversin" float b=|2*asin(sqrt(pz))| elseif @F1=="coversin" float b=|1-sin(pz)| elseif @F1=="acoversin" float b=|asin(1-pz)| elseif @F1=="hacoversin" float b=|(1-sin(pz))/2| elseif @F1=="cos" float b=|cos(pz)| elseif @F1=="cosh" float b=|cosh(pz)| elseif @F1=="acos" float b=|acos(pz)| elseif @F1=="acosh" float b=|acosh(pz)| elseif @F1=="vercos" float b=|1+cos(pz)| elseif @F1=="avercos" float b=|acos(1+pz)| elseif @F1=="havercos" float b=|(1+cos(pz))/2| elseif @F1=="ahavercos" float b=|2*acos(sqrt(pz))| elseif @F1=="covercos" float b=|1+sin(pz)| elseif @F1=="acovercos" float b=|asin(1+pz)| elseif @F1=="hacovercos" float b=|(1+sin(pz))/2| elseif @F1=="tan" float b=|tan(pz)| elseif @F1=="tanh" float b=|tanh(pz)| elseif @F1=="atan" float b=|atan(pz)| elseif @F1=="atanh" float b=|atanh(pz)| elseif @F1=="cotan" float b=|cotan(pz)| elseif @F1=="cotanh" float b=|cotanh(pz)| elseif @F1=="acotan" float b=|atan(1/(pz))| elseif @F1=="acotanh" float b=|atanh(1/(pz))| elseif @F1=="sec" float b=|1/cos(pz)| elseif @F1=="sech" float b=|1/cosh(pz)| elseif @F1=="asec" float b=|acos(1/pz)| elseif @F1=="asech" float b=|acosh(1/pz)| elseif @F1=="cosec" float b=|1/sin(pz)| elseif @F1=="cosech" float b=|1/sinh(pz)| elseif @F1=="acosec" float b=|asin(1/pz)| elseif @F1=="acosech" float b=|asinh(1/pz)| elseif @F1=="exsec" float b=|1/cos(pz)-1| elseif @F1=="aexsec" float b=| acos(1/(pz+1))| elseif @F1=="excosec" float b=|1/sin(pz)-1| elseif @F1=="aexcosec" float b=|asin(1/(pz+1))| elseif @F1=="crd" float b=|2*sin(pz/2)| elseif @F1=="acrd" float b=|2*asin(pz/2)| elseif @F1=="gd" float b=|asin(tanh(pz))| elseif @F1=="agd" float b=|asinh(tan(pz))| elseif @F1=="sinc" float b=|sin(pz)/(pz)| elseif @F1=="sinhc" float b=|sinh(pz)/(pz)| elseif @F1=="cosc" float b=|cos(pz)/(pz)| elseif @F1=="coshc" float b=|cosh(pz)/(pz)| elseif @F1=="tanc" float b=|tan(pz)/(pz)| elseif @F1=="tanhc" float b=|tanh(pz)/(pz)| elseif @F1=="cotanc" float b=|cotan(pz)/(pz)| elseif @F1=="cotanhc" float b=|cotanh(pz)/(pz)| elseif @F1=="secc" float b=|1/(pz*cos(pz))| elseif @F1=="sechc" float b=|1/(pz*cosh(pz))| elseif @F1=="cosecc" float b=| 1/(pz*sin(pz))| elseif @F1=="cosechc" float b=|1/(pz*sinh(pz))| elseif @F1=="sqr" float b=|sqr(pz)| elseif @F1=="sqrt" float b=|sqrt(pz)| elseif @F1=="cube" float b=|pz^3| elseif @F1=="cuberoot" float b=|pz^(1/3)| elseif @F1=="log" float b=|log(pz)| elseif @F1=="colog" float b=|-log(pz)| elseif @F1=="exp" float b=|exp(pz)| elseif @F1=="abs" float b=|abs(pz)| elseif @F1=="cabs" float b=|cabs(pz)| elseif @F1=="conj" float b=|conj(pz)| elseif @F1=="flip" float b=|flip(pz)| elseif @F1=="recip" float b=|recip(pz)| elseif @F1=="logit" float b=| log(pz/(1-pz))| elseif @F1=="expit" float b=|1/(1+exp(-pz))| elseif @F1=="gauss" float b=|exp(-sqr(pz))| elseif @F1=="softplus" float b=|log(1+exp(pz))| elseif @F1=="primecount" float b=|pz/log(pz)| elseif @F1=="ceil" float b=|ceil(pz)| elseif @F1=="floor" float b=|floor(pz)| elseif @F1=="trunc" float b=|trunc(pz)| else float b=|round(pz)| endif b=@adj3*b if b<@adj1 a=b endif i2=i2+1 endfunc float func ResultIndex(complex pz) if @solid if @invert if a>=0 m_Solid=true else index=a/@adj1+@adj2 endif else if a<0 m_Solid=true else index=a/@adj1+@adj2 endif endif else index=a/@adj1+@adj2 endif return index endfunc private: float values[#maxiter] int i int seed int i2 float a float index default: title="Aleator Demmond" int param version caption="Version" default=100 visible=@version<100 endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(0,0) endparam param zp2 caption="Z Parameter 2" default=(1,0) endparam func zf caption="Z Function" default=ident() endfunc param F1 caption="Demmond Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=0.0 endparam param adj3 caption="Adjustment 3" default=1.0 endparam param solid caption="Solid Color" default=true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_AleatorGrinn(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile a=0 b=1 c=0.0 d=0.0 i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @a && @av==0 pz=pz+@ap*@af(values[i2]) endif if @a && @av==3 pz=pz*@ap*@af(values[i2]) endif b=b+1 if @v==0 d=cabs(pz) elseif @v==1 d=cabs(pz+flip(pz)) elseif @v==2 d=cabs(pz-flip(pz)) elseif @v==3 d=cabs(pz-2*flip(pz)) elseif @v==4 d=cabs(pz+conj(pz)) elseif @v==5 d=cabs(pz-2*conj(pz)) elseif @v==6 d=cabs(pz-exp(pz)) elseif @v==7 d=cabs(pz+log(pz)) elseif @v==8 d=cabs(pz+1/acos(pz)) elseif @v==9 d=cabs(pz+1/acosh(pz)) elseif @v==10 d=cabs(pz-2*sqr(pz)) elseif @v==11 d=cabs(pz+cotanh(pz)) elseif @v==12 d=cabs(pz-2*cotanh(pz)) elseif @v==13 d=cabs(pz-2*cotan(pz)) elseif @v==14 d=cabs(pz+atanh(pz)) elseif @v==15 d=cabs(pz+tan(pz)) elseif @v==16 d=cabs(pz-tan(pz)) elseif @v==17 d=cabs(pz-2*tan(pz)) elseif @v==18 d=cabs(pz-cosh(pz)) elseif @v==19 d=cabs(pz-2*cosh(pz)) elseif @v==20 d=cabs(pz+3*cos(pz)) elseif @v==21 d=cabs(pz-sinh(pz)) elseif @v==22 d=cabs(pz-2*sinh(pz)) elseif @v==23 d=cabs(pz-2*sin(pz)) elseif @v==24 d=cabs(pz-3*sin(pz)) elseif @v==25 d=cabs(pz-1/cos(pz)) elseif @v==26 d=cabs(pz-1/acos(pz)) elseif @v==27 d=cabs(pz+1/sqr(pz)) elseif @v==28 d=cabs(pz+log(pz)-flip(pz)) elseif @v==29 d=cabs(pz+log(pz)-cabs(pz)) elseif @v==30 d=cabs(pz+log(pz)-abs(pz)) elseif @v==31 d=cabs(pz+log(pz)-exp(pz)) elseif @v==32 d=cabs(pz+log(pz)-ceil(pz)) elseif @v==33 d=cabs(pz+sqrt(pz)-exp(pz)) elseif @v==34 d=cabs(pz+sqr(pz)-exp(pz)) elseif @v==35 d=cabs(pz+sqr(pz)-sqrt(pz)) elseif @v==36 d=cabs(pz+recip(pz)-exp(pz)) elseif @v==37 d=cabs(pz+recip(pz)-sqr(pz)) elseif @v==38 d=cabs(pz-conj(pz)-sqr(pz)) elseif @v==39 d=cabs(pz-conj(pz)-log(pz)) elseif @v==40 d=cabs(pz-conj(pz)-flip(pz)) elseif @v==41 d=cabs(pz-cabs(pz)-flip(pz)) elseif @v==42 d=cabs(pz-cabs(pz)-log(pz)) elseif @v==43 d=cabs(pz-log(pz)-flip(pz)) endif if @a && @av==1 d=d+cabs(@ap*@af(values[i2])) endif if d>=@adj1 && d<=@adj2 && a==0 a=b c=(d-@adj1)*(@adj3/(@adj2-@adj1)) endif if @a && @av==2 c=c+cabs(@ap*@af(values[i2])) endif i2=i2+1 endfunc float func ResultIndex(complex pz) if @solid if @invert if a<=0 index=c else m_Solid=true endif else if a>0 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float values[#maxiter] int i int seed int a int b float c float d int i2 float index default: title="Aleator Grinn" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Grinn Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44" endparam param a caption="Aleator" default=true endparam param av caption="Aleator Variant" enum="1""2""3""4" visible=@a==true endparam param seed caption="Random Seed" default=12345678 visible=@a==true endparam param ap caption="Aleator Parameter" default=(1,0) visible=@a==true endparam func af caption="Aleator Function" default=ident() visible=@a==true endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(1,0) endparam func zf caption="Z Function" default=abs() endfunc param @adj1 caption="Adjustment 1" default=0.75 endparam param @adj2 caption="Adjustment 2" default=2.5 endparam param @adj3 caption="Adjustment 3" default=2.0 endparam param solid caption="Solid Color" default=true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SnumLocret(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if k2<=k1 if @v=="1" d=cabs(pz^2*fn3((flip(pz)-@p3)/(1-@p3*flip(pz)))+@p4) elseif @v=="2" d=cabs(pz^2*fn3((cabs(pz)-@p3)/(1-@p3*cabs(pz)))+@p4) elseif @v=="3" d=cabs(pz-fn3((sqr(pz)^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) elseif @v=="4" d=cabs(pz^2*fn3((exp(pz)-@p3)/(1-@p3*exp(pz)))+@p4) elseif @v=="5" d=cabs(pz^2*fn3((sqr(pz)-@p3)/(1-@p3*sqr(pz)))+@p4) elseif @v=="6" d=cabs(pz-fn3((conj(pz)^2-@p3/2)/(2*pz))+@p4) elseif @v=="7" d=cabs(pz^2*fn3((cos(pz)-@p3)/(1-@p3*cos(pz)))+@p4) elseif @v=="8" d=cabs(pz-0.5*fn3((tanh(pz)^4-@p3/2)/(4*sqrt(pz)^3))+@p4) elseif @v=="9" d=cabs(pz+pz^2*fn3((flip(pz)-@p3)/(1-@p3*flip(pz)))+@p4) elseif @v=="10" d=cabs(pz-fn3((pz^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) elseif @v=="11" d=cabs(pz+pz^2*fn3((abs(pz)-@p3)/(1-@p3*abs(pz)))+@p4) elseif @v=="12" d=cabs(pz+pz^2*fn3((cosh(pz)-@p3)/(1-@p3*cosh(pz)))+@p4) elseif @v=="13" d=cabs(pz+pz^2*fn3((cos(pz)-@p3)/(1-@p3*cos(pz)))+@p4) elseif @v=="14" d=cabs(pz^2*fn3((log(pz)-@p3)/(1-@p3*sin(pz)))+@p4) elseif @v=="15" d=cabs(pz^2*fn3((cotanh(pz)-@p3)/(1-@p3*sin(pz)))+@p4) elseif @v=="16" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*cos(pz)+@p3-2))^2+@p4) elseif @v=="17" d=cabs(fn3((pz^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="18" d=cabs(fn3((flip(pz)^2+@p3-1)/(2*exp(pz)+@p3-2))^2+@p4) elseif @v=="19" d=cabs(fn3((flip(pz)^2+@p3-1)/(2*cotanh(pz)+@p3-2))^2+@p4) elseif @v=="20" d=cabs(fn3((exp(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="21" d=cabs(fn3((log(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="22" d=cabs(fn3((sqr(pz)^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="23" d=cabs(fn3((sqr(pz)^2+@p3-1)/(2*cos(pz)+@p3-2))^2+@p4) elseif @v=="24" d=cabs(fn3((tanh(pz)^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="25" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="26" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*cosh(pz)+@p3-2))^2+@p4) elseif @v=="27" d=cabs(pz-fn3((pz^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="28" d=cabs(pz-fn3((flip(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="29" d=cabs(pz-fn3((conj(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="30" d=cabs(pz-fn3((abs(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="31" d=cabs(pz-fn3((log(pz)^4-@p3/2)/(4*log(pz)^3))+@p4) elseif @v=="32" d=cabs(pz-fn3((pz^4-@p3/2)/(4*log(pz)^3))+@p4) elseif @v=="33" d=cabs(pz+pz^2*fn3((recip(pz)-@p3)/(1-@p3*recip(pz)))+@p4) elseif @v=="34" d=cabs(pz-2*fn3((exp(pz)^4-@p3/2)/(4*cotanh(pz)^3))+@p4) elseif @v=="35" d=cabs(pz-2*fn3((cotanh(pz)^4-5*@p3/2)/(4*recip(pz)^3))+@p4) elseif @v=="36" d=cabs(pz^2*fn3((cosh(pz)-@p3)/(1-@p3*cosh(pz)))+@p4) elseif @v=="37" d=cabs(pz+pz^2*fn3((conj(pz)-@p3)/(1-@p3*conj(pz)))+@p4) elseif @v=="38" d=cabs(pz^2*fn3((abs(pz)-@p3)/(1-@p3*abs(pz)))+@p4) elseif @v=="39" d=cabs(pz-fn3((recip(pz)^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif else if sqrt(a)/(1+c-b)>=@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Snum Locret" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" default=3 endparam param p1 caption="Z Parameter 1" default=(0.5,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Variant Parameter 1" default=(2,0) endparam param p4 caption="Variant Parameter 2" default=(0,0) endparam param p5 caption="Detail" default=4 endparam func fn1 caption="Z Function" default=ident() endfunc func fn3 caption="Variant Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.01 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Yomplad(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=1.0 c=0.0 d=1/log(real(@adj)) f=log(log(100)/2) g=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @S==false pz=@zp1*@zf(pz)+@zp2 else pz=@zp1*abs(@zf(pz))+@zp2 endif if @V==0 pz=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*sin(@p3*imag(pz))) elseif @V==1 pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V==2 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+(sin(@p1*real(pz)))^3+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2+(sin(@p3*imag(pz)))^3) elseif @V==3 pz=@p3*real(pz)^2+2*@p4*real(pz)*imag(pz)+(@p5+1)*imag(pz)^2-2*@p1*real(pz)-2*@p2*imag(pz) elseif @V==4 if imag(pz)>0.5 pz=sin(flip(2*(@p2-1)*imag(pz)-2*@p3)) elseif real(pz)>0.5 pz=sin(2*@p1*real(pz)-2*@p3+flip(2*(@p2-1)*imag(pz))) else pz=sin(2*@p1*real(pz)+flip(2*(@p2-1)*imag(pz))) endif elseif @V==5 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2) elseif @V==6 pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+@p2^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @V==7 pz=sin(@p1*imag(pz))+@p2*cos(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*cos(@p3*imag(pz))) elseif @V==8 pz=@p1*imag(pz)^2-@p2*abs(sin(@p3*real(pz))+0.1*sin(2*real(pz))) elseif @V==9 pz=real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))+flip(real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))-real(pz)) elseif @v==10 pz=real(pz)*(@p1-real(pz)-@p2*imag(pz)+@p3*real(pz)*imag(pz)+imag(pz)^2)+flip(imag(pz)*(-@p1+imag(pz)+@p2*real(pz)-@p3*real(pz)^2-real(pz)*imag(pz))) elseif @V==11 pz=real(pz)-sin(imag(pz)+@p1*sin(@p2*imag(pz)+@p3*sin(@p4*imag(pz))))+flip(imag(pz)-sin(real(pz)+@p1*sin(@p2*real(pz)+@p3*sin(@p4*real(pz))))) elseif @V==12 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+(sin(@p1*imag(pz)))^3+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2+(sin(@p2*real(pz)))^3) elseif @V==13 pz=sin(@p1*real(pz))-tan((@p2-1.5)*imag(pz))+flip(tan(@p3*real(pz))+sin(@p4*imag(pz))) elseif @V==14 pz=(real(pz)^2-(@p1+0.5)^2)*(real(pz)-(@p1+0.5))^2+(imag(pz)^2-(@p1+0.5)^2)^2 elseif @V==15 pz=(real(pz)^2+imag(pz)^2-2*@p1*real(pz))^2-4*@p1^2*(real(pz)^2+imag(pz)^2) elseif @V==16 pz=(@p2-3.2)*sqrt((real(pz)-@p1)^2+imag(pz)^2)+@p3*sqrt((real(pz)+@p1)^2+imag(pz)^2)-@p4 elseif @V==17 pz=@p1*pz^2*(pz-(@p2+2))/(1-(@p2+2)*pz) elseif @V==18 x=imag(pz) y=-@p1*real(pz)-(@p2+1)*real(pz)^3+@p3 pz=x+flip(y) elseif @V==19 if 0<=real(pz) && real(pz)<0.5 x=2*@p1*real(pz) y=@p2*imag(pz)/2 else x=@p1*(2-2*real(pz)) y=@p2*(1-imag(pz)/2) endif pz=x+flip(y) elseif @V==20 pz=(@p1-3)*(pz-sqrt(-1))/(pz+sqrt(-1))+@p2-0.5 else x=sin(real(pz))-@p1*cos(imag(pz)+@p2*sin(imag(pz)+cos(imag(pz)))) y=sin(imag(pz))+@p1*cos(real(pz)+@p2*sin(real(pz)+cos(real(pz)))) pz=x+flip(y) endif c=cabs(pz) a=b b=b*(abs(2*c)) k=pz endfunc float func ResultIndex(complex pz) a=log(a) b=log(b) b=abs(b/m_Iterations) a=abs(a/(m_Iterations-1)) g=d*f-d*log(log(cabs(k))) if @solid if @invert if g<=b-a+@sca index=a+(b-a)*(g+1) else m_Solid=true endif else if g>b-a+@sca index=a+(b-a)*(g+1) else m_Solid=true endif endif else index=a+(b-a)*(g+1) endif return index endfunc private: complex k float a float b float c float d float f float g float index default: title="Yomplad" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param p1 caption="Variant Parametr 1" default=(1,0) endparam param p2 caption="Variant Parametr 2" default=(1,0) visible=@V!=9 && @V!=14 && @V!=15 endparam param p3 caption="Variant Parametr 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==4 || @V==6 || @V==7 || \ @V==8 || @V==10 || @V==11 || @V==13 || @V==16 || @V==18 endparam param p4 caption="Variant Parametr 4" default=(1,0) visible=@V==0 || @V==3 || @V==7 || @V==11 || @V==13 || @V==16 endparam param p5 caption="Variant Parametr 5" default=(1,0) visible=@V==3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param adj caption="Adjustment" default=-20.0 endparam param S caption="Symmetrize" default=true endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IteratedFunctionSyndrome25(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p26*pz+@p27 x=real(pz) y=imag(pz) a=(@p1*(x)+@p2)/@p3+flip((@p4*(y)+@p12*x+@p5)/@p6) b=|a-@p25| c=(@p7*x+@p8*y+@p9)/@p10+flip((@p11*y+@p13)/@p14) d=|c-@p32| if real(b)0 float x1=floor(real(c))%256 float y1=floor(imag(c))%256 if x1<0 x1=x1+256 endif if y1<0 y1=y1+256 endif float x2=(x1+1)%256 float y2=(y1+1)%256 float x3=real(c)-floor(real(c)) float y3=imag(c)-floor(imag(c)) float x4=x3-1 float y4=y3-1 float f1=(x1^@pow2%65536+y1)^@pow2%65536 float f2=(x2^@pow2%65536+y1)^@pow2%65536 float f3=(x1^@pow2%65536+y2)^@pow2%65536 float f4=(x2^@pow2%65536+y2)^@pow2%65536 float g1=(f1)^@pow2*0.25%512-256 float g2=(f2)^@pow2*0.25%512-256 float g3=(f3)^@pow2*0.25%512-256 float g4=(f4)^@pow2*0.25%512-256 float g5=(f1+1)^@pow2*0.25%512-256 float g6=(f2+1)^@pow2*0.25%512-256 float g7=(f3+1)^@pow2*0.25%512-256 float g8=(f4+1)^@pow2*0.25%512-256 float h=0.0; h=1/sqrt(sqr(g1)+sqr(g5)) g1=g1*h g5=g5*h h=1/sqrt(sqr(g2)+sqr(g6)) g2=g2*h g6=g6*h h=1/sqrt(sqr(g3)+sqr(g7)) g3=g3*h g7=g7*h h=1/sqrt(sqr(g4)+sqr(g8)) g4=g4*h g8=g8*h float j1=x3*g1+y3*g5 float j2=x4*g2+y3*g6 float j3=x3*g3+y4*g7 float j4=x4*g4+y4*g8 float k1=sqr(x3)*(3-x3*2) float k2=sqr(y3)*(3-y3*2) float k3=j1+k1*(j2-j1) float k4=j3+k1*(j4-j3) if @fn=="abs" a=a+real(abs(k3+k2*(k4-k3)))*d*b elseif @fn=="abs acos log" a=a+real(abs(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs cos log" a=a+real(abs(cos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs floor log" a=a+real(abs(floor(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sin log" a=a+real(abs(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sinh log" a=a+real(abs(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sqr log" a=a+real(abs(sqr(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos acos log" a=a+real(acos(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos ceil" a=a+real(acos(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="acos flip log" a=a+real(acos(flip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos log conj" a=a+real(acos(log(conj(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos log cotan" a=a+real(acos(log(cotan(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos recip" a=a+real(acos(recip(k3+k2*(k4-k3))))*d*b elseif @fn=="acos sin exp" a=a+real(acos(sin(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos sin log" a=a+real(acos(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos sinh log" a=a+real(acos(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acosh flip cotanh" a=a+real(acosh(flip(cotanh(k3+k2*(k4-k3)))))*d*b elseif @fn=="asin ceil" a=a+real(asin(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="atanh ceil log" a=a+real(atanh(ceil(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="atanh log" a=a+real(atanh(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cabs sqrt" a=a+real(cabs(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="ceil" a=a+real(ceil(k3+k2*(k4-k3)))*d*b elseif @fn=="ceil log" a=a+real(ceil(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cos log" a=a+real(cos(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cosh conj acos" a=a+real(cosh(conj(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="cotan exp exp" a=a+real(cotan(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="cotanh sqrt" a=a+real(cotanh(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="exp" a=a+real(exp(k3+k2*(k4-k3)))*d*b elseif @fn=="exp acos" a=a+real(exp(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="exp ceil" a=a+real(exp(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="exp exp" a=a+real(exp(exp(k3+k2*(k4-k3))))*d*b elseif @fn=="exp exp exp" a=a+real(exp(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="flip log" a=a+real(flip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="flip sqrt" a=a+real(flip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="floor" a=a+real(floor(k3+k2*(k4-k3)))*d*b elseif @fn=="floor log" a=a+real(floor(log(k3+k2*(k4-k3))))*d*b elseif @fn=="ident" a=a+real(k3+k2*(k4-k3))*d*b elseif @fn=="log" a=a+real(log(k3+k2*(k4-k3)))*d*b elseif @fn=="log acos" a=a+real(log(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="log acos acos" a=a+real(log(acos(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log acos floor" a=a+real(log(acos(floor(k3+k2*(k4-k3)))))*d*b elseif @fn=="log acos recip" a=a+real(log(acos(recip(k3+k2*(k4-k3)))))*d*b elseif @fn=="log ceil exp" a=a+real(log(ceil(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log" a=a+real(log(log(k3+k2*(k4-k3))))*d*b elseif @fn=="log log abs" a=a+real(log(log(abs(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log cos" a=a+real(log(log(cos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log log" a=a+real(log(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log sqr" a=a+real(log(log(sqr(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log sqrt" a=a+real(log(log(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqr" a=a+real(log(sqr(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqr log" a=a+real(log(sqr(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt" a=a+real(log(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqrt acos" a=a+real(log(sqrt(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt log" a=a+real(log(sqrt(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt sqrt" a=a+real(log(sqrt(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="recip log" a=a+real(recip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="recip sqrt" a=a+real(recip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="round cos exp" a=a+real(round(cos(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round cotan exp" a=a+real(round(cotan(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round exp exp" a=a+real(round(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round log" a=a+real(round(log(k3+k2*(k4-k3))))*d*b elseif @fn=="round sinh cotan" a=a+real(round(sinh(cotan(k3+k2*(k4-k3)))))*d*b elseif @fn=="round sinh exp" a=a+real(round(sinh(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sin exp exp" a=a+real(sin(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr acos log" a=a+real(sqr(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr asin log" a=a+real(sqr(asin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr asinh log" a=a+real(sqr(asinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr atan log" a=a+real(sqr(atan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr atanh log" a=a+real(sqr(atanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr cabs log" a=a+real(sqr(cabs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr cotanh log" a=a+real(sqr(cotanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr exp exp" a=a+real(sqr(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr floor log" a=a+real(sqr(floor(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log" a=a+real(sqr(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqr log abs" a=a+real(sqr(log(abs(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log acos" a=a+real(sqr(log(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log flip" a=a+real(sqr(log(flip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log log" a=a+real(sqr(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log sqr" a=a+real(sqr(log(sqr(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr recip log" a=a+real(sqr(recip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr tanh log" a=a+real(sqr(tanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt" a=a+real(sqrt(k3+k2*(k4-k3)))*d*b elseif @fn=="sqrt abs log" a=a+real(sqrt(abs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt acos" a=a+real(sqrt(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt acos log" a=a+real(sqrt(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt acosh log" a=a+real(sqrt(acosh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt asin log" a=a+real(sqrt(asin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt asinh log" a=a+real(sqrt(asinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt atan log" a=a+real(sqrt(atan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cabs log" a=a+real(sqrt(cabs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt ceil log" a=a+real(sqrt(ceil(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cos log" a=a+real(sqrt(cos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cosh log" a=a+real(sqrt(cosh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cotan log" a=a+real(sqrt(cotan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt flip log" a=a+real(sqrt(flip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log" a=a+real(sqrt(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt log acos" a=a+real(sqrt(log(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log cosh" a=a+real(sqrt(log(cosh(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log cotanh" a=a+real(sqrt(log(cotanh(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log flip" a=a+real(sqrt(log(flip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log log" a=a+real(sqrt(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log recip" a=a+real(sqrt(log(recip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log sqrt" a=a+real(sqrt(log(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt recip log" a=a+real(sqrt(recip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sin log" a=a+real(sqrt(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sinh log" a=a+real(sqrt(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sqrt" a=a+real(sqrt(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt sqrt log" a=a+real(sqrt(sqrt(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt tan log" a=a+real(sqrt(tan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="tan exp exp" a=a+real(tan(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="tan tan cos" a=a+real(tan(tan(cos(k3+k2*(k4-k3)))))*d*b elseif @fn=="trunc log" a=a+real(trunc(log(k3+k2*(k4-k3))))*d*b endif d=d*0.5 c=c/0.5 i=i-1 endwhile endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if a<=@sca index=(log(a)+@p7)*@p8 else m_Solid=true endif else if a>@sca index=(log(a)+@p7)*@p8 else m_Solid=true endif endif else index=(log(a)+@p7)*@p8 endif return index endfunc private: float a float index default: title="Plazmiki" int param version caption="Version" default=100 visible=@version<100 endparam param Fs caption="Plazmiki Function 1" enum="*pixel""+pixel"\ "abs""abs recip""cabs""conj""cos*""crd""cube""cube+"\ "exp""flip""flip recip""ident""recip""recip abs""recip flip""recip sqr"\ "sin*""smoothstep""softplus""sqr""sqr acos""sqr acosh""sqr log""sqr+" default=13 endparam param fn caption="Plazmiki Function 2" enum="abs""abs acos log""abs cos log""abs floor log"\ "abs sin log""abs sinh log""abs sqr log"\ "acos acos log""acos ceil"\ "acos flip log""acos log conj""acos log cotan"\ "acos recip""acos sin exp""acos sin log""acos sinh log" \ "acosh flip cotanh""asin ceil""atanh ceil log""atanh log"\ "cabs sqrt""ceil""ceil log""cos log""cosh conj acos""cotan exp exp"\ "cotanh sqrt""exp""exp acos""exp ceil""exp exp""exp exp exp"\ "flip log""flip sqrt""floor""floor log"\ "ident""log""log acos""log acos acos"\ "log acos floor""log acos recip""log ceil exp""log log"\ "log log abs""log log cos""log log log""log log sqr""log log sqrt"\ "log sqr""log sqr log""log sqrt""log sqrt acos""log sqrt log"\ "log sqrt sqrt""recip log""recip sqrt""round cos exp""round cotan exp"\ "round exp exp""round log""round sinh cotan""round sinh exp""sin exp exp"\ "sqr acos log""sqr asin log""sqr asinh log""sqr atan log""sqr atanh log"\ "sqr cabs log""sqr cotanh log""sqr exp exp""sqr floor log""sqr log"\ "sqr log abs""sqr log acos""sqr log flip""sqr log log"\ "sqr log sqr""sqr recip log""sqr tanh log""sqrt""sqrt abs log"\ "sqrt acos""sqrt acos log""sqrt acosh log""sqrt asin log""sqrt asinh log"\ "sqrt atan log""sqrt cabs log""sqrt ceil log""sqrt cos log""sqrt cosh log"\ "sqrt cotan log""sqrt flip log""sqrt log""sqrt log acos"\ "sqrt log cosh""sqrt log cotanh""sqrt log flip""sqrt log log"\ "sqrt log recip""sqrt log sqrt""sqrt recip log""sqrt sin log""sqrt sinh log"\ "sqrt sqrt""sqrt sqrt log""sqrt tan log""tan exp exp""tan tan cos"\ "trunc log" default=16 endparam param p2 caption="Plazmiki Parameter 1" default=(1,0) endparam param p3 caption="Plazmiki Parameter 2" default=(0,0) endparam param p7 caption="Adjustment 1" default=1.0 endparam param p8 caption="Adjustment 2" default=0.5 endparam param pow1 caption="Exponent 1" default=4.0 endparam param pow2 caption="Exponent 2" default=2.0 endparam param p4 caption="Iterations" default=1 min=1 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.47 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IFB47(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p14*pz+@p15 float f=real(fn2(pz)) if f<@p4 pz=pz*tanh(@p1)+@p2 endif if @p5<=f pz=pz*asinh(@p1)+@p3 endif endwhile pz=pz*@adj return pz endfunc private: int i default: title="IFB 47" int param version caption="Version" default=100 visible=@version<100 endparam param p14 caption="Z Parameter 1" default=(0.84157,-0.23196) endparam param p15 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="IFB Parameter a" default=(0.57529,1.23961) endparam param p2 caption="IFB Parameter b1" default=(0.76137,-0.132940) endparam param p3 caption="IFB Parameter b2" default=(-0.57765,-0.39647) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param iter caption="Iterations" default=14 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="IFB Function" default=ident() endfunc param adj caption="Adjustment" default=-1.03325 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_IFB50(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p6*fn2(pz)+@p7 float a=real(fn3(pz)) if a<@p4 pz=pz*conj(@p1)+@p2 endif if @p5<=a pz=flip(pz)*round(@p1)+@p3 endif endwhile pz=@adj*pz return pz endfunc private: int i default: title="IFB 50" int param version caption="Version" default=100 visible=@version<100 endparam param p6 caption="Z Parameter 1" default=(0.85,-0.5) endparam param p7 caption="Z Parameter 2" default=(0,0.5) endparam param p1 caption="IFB Parameter a" default=(-0.45,1.2) endparam param p2 caption="IFB Parameter b1" default=(-0.65,-0.8) endparam param p3 caption="IFB Parameter b2" default=(0,-0.5) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param iter caption="Iterations" default=15 endparam param adj caption="Adjustment" default=1.142 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB53(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p6*fn2(pz)+@p7 float a=real(fn3(pz))+imag(fn3(pz)) if a<@p4 pz=conj(pz)*flip(@p1)+@p2 endif if @p5<=a pz=flip(pz)*recip(@p1)+@p3 endif endwhile pz=@adj*pz return pz endfunc private: int i default: title="IFB 53" int param version caption="Version" default=100 visible=@version<100 endparam param p6 caption="Z Parameter 1" default=(1.238,0.624) endparam param p7 caption="Z Parameter 2" default=(1.614,-0.839) endparam param p1 caption="IFB Parameter a" default=(0.98,-0.316) endparam param p2 caption="IFB Parameter b1" default=(1.237,-0.234) endparam param p3 caption="IFB Parameter b2" default=(1.069,-1.793) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param iter caption="Iterations" default=20 endparam param adj caption="Adjustment" default=1.11 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB62(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=fn1(cotanh(@p5)) b=fn2(cotan(@p5)) pz=fn4(pz) return pz endfunc private: complex a complex b complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="2" if real(fn3(pz))+imag(fn3(pz))>@p6-2.7 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="3" if real(fn3(atan(pz)))-imag(fn3(atan(pz)))>@p6-1.05 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="4" if real(fn3(asinh(pz)))-imag(fn3(asinh(pz)))>@p6+0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="5" if real(fn3(tanh(pz)))-imag(fn3(tanh(pz)))>@p6-0.44 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="6" if real(fn3(cotanh(pz)))-imag(fn3(cotanh(pz)))>@p6+0.97 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif endif return pz endfunc default: title="IFB 62" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6" endparam param p5 caption="IFB Parameter 1" default=(1,1) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.113158,0.646275) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB77(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc private: int i complex func Iterate(complex pz) if @ver=="1" pz=@p6*pz+@p7 float a=real(pz) if @V=="1" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="2" if a<@p4 pz=(sqrt(1i)*pz+1.9+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=flip(sqrt(1i)*pz-0.4+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="3" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="4" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=abs(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="5" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=sqrt(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="6" if a<@p4 pz=(sqrt(1i)*pz+0.5+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=log(sqrt(1i)*pz+0.5+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="7" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=cotan(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="8" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=atanh(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="9" if a<@p4 pz=flip(sqrt(1i)*pz+1.75+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="10" if a<@p4 pz=conj(sqrt(1i)*pz+2.85+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="11" if a<@p4 pz=cotanh(sqrt(1i)*pz+1.38+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+1.38+@p17)*fn2(conj(@p1))+@p3 endif endif pz=conj(pz)*@fn9(flip(@p8))+@p13 else while i<@iter i=i+1 pz=@p6*pz+@p7 float a=real(pz) if @V=="1" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="2" if a<@p4 pz=(sqrt(1i)*pz+1.9+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=flip(sqrt(1i)*pz-0.4+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="3" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="4" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=abs(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="5" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=sqrt(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="6" if a<@p4 pz=(sqrt(1i)*pz+0.5+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=log(sqrt(1i)*pz+0.5+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="7" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=cotan(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="8" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=atanh(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="9" if a<@p4 pz=flip(sqrt(1i)*pz+1.75+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="10" if a<@p4 pz=conj(sqrt(1i)*pz+2.85+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="11" if a<@p4 pz=cotanh(sqrt(1i)*pz+1.38+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+1.38+@p17)*fn2(conj(@p1))+@p3 endif endif pz=conj(pz)*@fn9(flip(@p8))+@p13 endwhile pz=pz*@adj endif return pz endfunc default: title="IFB 77" int param version caption="Version" default=100 visible=@version<100 endparam param ver caption="Variant 1" enum="1""2" endparam param V caption="Variant 2" enum="1""2""3""4""5""6""7""8""9""10""11" endparam param p1 caption="IFB Parameter a1" default=(-1.324,-0.473) endparam param p8 caption="IFB Parameter a2" default=(0.948,-0.367) endparam param p2 caption="IFB Parameter b1" default=(2.657,0.487) endparam param p11 caption="IFB Parameter b2" default=(-1.099,0.471) endparam param p3 caption="IFB Parameter b3" default=(-0.04,-0.5) endparam param p13 caption="IFB Parameter b4" default=(0,0) endparam param p17 caption="IFB Parameter b5" default=(0,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param iter caption="Iterations" default=18 visible=@ver=="2" endparam param p6 caption="Z Parameter 1" default=(1.118,0.028) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function 1" default=ident() endfunc func fn9 caption="Loop Function 2" default=ident() endfunc param adj caption="Adjustment" default=1.139 visible=@ver=="2" endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IteratedFunctionSyndrome12(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p26*pz+@p27 x=real(pz) y=imag(pz) a=conj((@p1*x+@p2)/@p3+flip((@p4*y+@p5)/@p6)) b=|a-@p25| c=flip((@p7*x+@p8)/@p9+flip((@p10*y+@p11)/@p12)) d=|c-@p25| f=conj((@p13*x+@p14)/@p15+flip((@p16*y+@p17)/@p18)) g=|f-@p25| h=(@p19*x+@p20)/@p21+flip((@p22*y+@p23)/@p24) j=|h-@p25| if real(b)1 b=b/|b| endif elseif @v==17 if real(b)imag(b) b=flip(b) endif elseif @v==19 b=(b-1)/(b+1) elseif @v==20 b=(b^2-b)/(b+1) elseif @v==21 b=(conj(b)-1)/(conj(b)+1) elseif @v==22 b=(exp(b)-1)/(exp(b)+1) elseif @v==23 b=(sqrt(b)-1)/(sqrt(b)+1) elseif @v==24 b=(recip(b)-1)/(cabs(b)+1) elseif @v==25 b=(b-1)/(cosh(b)+1) elseif @v==26 b=(b-1)/(cos(b)+1) elseif @v==27 b=(b-1)/(flip(b)+1) elseif @v==28 b=(flip(b)-1)/(conj(b)+1) elseif @v==29 b=(flip(b)-1)/(cabs(b)+1) elseif @v==30 b=(flip(b)-1)/(abs(b)+1) elseif @v==31 b=(flip(b)-1)/(exp(b)+1) elseif @v==32 b=(conj(b)-1)/(cotanh(b)+1) elseif @v==33 b=(conj(b)-1)/(recip(b)+1) elseif @v==34 b=(cabs(b)-1)/(b+1) elseif @v==35 b=(cabs(b)-1)/(exp(b)+1) elseif @v==36 b=(cabs(b)-1)/(sinh(b)+1) elseif @v==37 b=(cabs(b)-1)/(sin(b)+1) elseif @v==38 b=(abs(b)-1)/(conj(b)+1) elseif @v==39 b=(abs(b)-1)/(exp(b)+1) elseif @v==40 b=(abs(b)-1)/(cotanh(b)+1) elseif @v==41 b=(abs(b)-1)/(cotan(b)+1) elseif @v==42 b=(abs(b)-1)/(recip(b)+1) elseif @v==43 b=(exp(b)-1)/(b+1) elseif @v==44 b=(exp(b)-1)/(tan(b)+1) elseif @v==45 b=(exp(b)-1)/(sinh(b)+1) else b=(sqr(b)-1)/(sinh(b)+1) endif a=@p1*a b=@p2*b a=fn1(a) b=fn1(b) a=fn2(a) b=fn3(b) c=real(b) d=imag(b) f=real(a) g=imag(a) v=f-c w=g-d u=v^2+w^2 if ureal(@sca) || s=imag(@sca)) m_Solid=true else index=s+@adj endif endif else index=s+@adj endif return index endfunc private: int i complex a complex b float c float d float f float g float s float t float u float v float w float index default: title="Maslomowi" int param version caption="Version" default=100 visible=@version<100 endparam param v2 caption="Variant a" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17" endparam param v caption="Variant b" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param p1 caption="Parameter a1" default=(1,0) endparam param p3 caption="Parameter a2" default=(1,0) endparam param p4 caption="Parameter a3" default=(1,0) endparam param p2 caption="Parameter b" default=(1,0) endparam func fn2 caption="Function a1" default=ident() endfunc func fn4 caption="Function a2" default=ident() endfunc func fn3 caption="Function b" default=ident() endfunc func fn1 caption="Function ab" default=ident() endfunc param pow caption="Exponent a" default=1.0 endparam param adj caption="Adjustment 1" default=0.0 endparam param adj2 caption="Adjustment 2" default=1.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Mirethla2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0.0) b=0.0 c=0.0 d=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 float x=real(pz) float y=imag(pz) if @V=="Arcs of Samothrace" a=x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2) elseif @V=="Conchoid of Nicomedes" a=(x-@p2)^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="Coupled Logistic" a=(-@p1)*(@p2+1)*x*(1-x)+(@p1+1)*(@p2+1)*y*(1-y)+flip((-@p1)*(@p2+1)*y*(1-y)+(@p1+1)*(@p2+1)*x*(1-x)) elseif @V=="Cubic of Apollonius" a=(x-2*@p1)*(x^2+y^2)+@p2^2*(cos(2*@p3*x)+sin(2*@p3*y)) elseif @V=="Cycloid" a=x-(@p1+0.25i)*recip(cos(1-y/(@p1+0.25i)))+sqrt(y*(2^(@p1+0.25i)-y)) elseif @V=="de Jong" a=sin((@p1+1)*y)-cos((@p2+1)*x)+flip(sin((@p3+1)*x)-cos((@p4+1)*y)) elseif @V=="Hamilton" a=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="Hamilton Torus" a=-sin(y)*(1-(@p1+0.5))+flip(sin(x)*(1+(@p1+0.5))) elseif @V=="HCA" a=1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)) elseif @V=="Kam Torus" a=x*cos(@p1-0.5+2.75i)+(x^2-y)*sin(@p1-0.5+2.75i)+flip(x*sin(@p1-0.5+2.75i)-(x^2-y)*cos(@p1-0.5+2.75i)) elseif @V=="Kampyle of Eudoxus" a=(@p1+1)^2*x^4-(@p2+0.5)^4*(x^2+y^2) elseif @V=="Klein Quartic" a=(x^2+y^2-(@p2+1)*@p1^2)^2-@p3*@p1*(y-@p1+sqrt(3)*x)*(y-@p1-sqrt(3)*x)*(2*y+@p1) elseif @V=="Latoocarfian" a=sin((@p1+1)*y)+(@p2+1)*sin((@p1+1)*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Lemniscate of Bernoulli" a=(x^2+y^2)^2-(@p1+1)^2*(x^2-y^2) elseif @V=="Lissajous Quadratic" a=@p1^4*y^4-4*@p1^3*@p2*x*y^3+2*@p1^2*@p2*y^3+6*@p1^2*@p2^2*x^2*y^2 \ -4*@p1*@p2^2*x*y^2-2*@p1^3*x*y^2-2*@p1^2*@p2^2*y^2+@p2^2*y^2+@p1^2*y^2 \ -4*@p1*@p2^3*x^3*y+2*@p2^3*x^2*y+4*@p1^2*@p2*x^2*y+4*@p1*@p2^3*x*y \ -2*@p2^3*y-4*@p1^2*@p2*y+@p2^4*x^4-2*@p1*@p2^2*x^3-2*@p2^4*x^2 \ +@p2^2*x^2+@p1^2*x^2+2*@p1*@p2^2*x-@p1^2-@p2^2+@p2^4 elseif @V=="Polyharmonic Pendulum" a=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Popcorn" a=x-@p1*sin(y+tan((@p2+0.2i)*y))+flip(y-@p1*sin(x+tan((@p2+0.2i)*x))) elseif @V=="Svensson" a=(@p1+1)*sin((@p2+1)*x)-sin(@p3*y)+flip(@p4*cos((@p2+1)*x)-cos(@p3*y)) elseif @V=="OM1" a=exp(x)+flip(y-@p1*((@p2*y)-(@p3+1)*(x)^2)) elseif @V=="OM2" a=(@p1+1)^2*y^2-x^2*(y^2-x^2)+(x^2+y^2)^2-2*(@p1+1)^2*(x^2-y^2)+(@p1+1)^4-(@p2+1)^4 elseif @V=="OM3" a=x+@p1*(asin(@p2*y)^2)+flip(y+@p1*(asin(@p2*x)^2)) elseif @V=="OM4" a=x+(@p1+1i)*(tanh((@p2+1i)*y)^2)+flip(y+(@p1+1i)*(cosh((@p2+1i)*x)^2))+x*(x^2+y^2)+((@p1+1i)+1+(@p2+1i))*x^2-((@p1+1i)+1-(@p2+1i))*y^2 elseif @V=="OM5" a=x+@p1*sqr(y+sqr(@p2*y))+flip(y+@p1*sqr(x*sqr(@p2*x))) elseif @V=="OM6" a=x+@p1*asin(y+tan((@p2+1)*y))+flip(y+@p1*asin(x*tan((@p2+1)*x))) elseif @V=="OM7" a=a=x+(@p1-2)*(@p2-0.8)*cos(2*pi*y)+flip(y-((@p1-2)/(@p2-0.8))*sin(2*pi*(x+(@p1-2)*(@p2-0.8)*sin(2*pi*y)))) elseif @V=="OM8" a=(x%(2*pi))+(@p2+1+1i)*(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))+(@p2+1+1i)*flip((x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))-(x%(2*pi))) elseif @V=="OM9" a=@p1*x+flip(-@p1*y+@p2*sin(2*pi*x)) elseif @V=="OM10" a=x-@p2*y+((@p1-0.5)/2*pi)*sin(2*pi*x)+flip(x-@p2*y-((@p1-0.5)/2*pi)*sin(2*pi*x)+x)+x^3+y^3-(@p1-0.5)^3 elseif @V=="OM11" a=@p1*(cabs(y)-x^4)+flip(x-y+@p2*pz) elseif @V=="OM12" a=@p1*flip(y^2-x^2)*@p2*(x-1)*@p3*(2*x-3)-4*@p4*tanh(x^2+y^2-2*x)^2 elseif @V=="OM13" a=@p1*(y^2-x^2)*@p2*(x-1)*@p3*(2*x+3)+4*@p4*(x^2+y^2-2*x) elseif @V=="OM14" a=@p1*(flip(y^2-x^2)*exp(x-1)*flip(2*x+3))+4*@p2*exp(x^2+y^2-2*x) elseif @V=="OM15" a=(x^2+y^2)^3-(@p1+1)^3*x*(x^2-3*y^2)+2*(2*x^2-@p2^2)^2-@p2*(2*y-@p2)^2*(y+@p2) elseif @V=="OM16" a=x^2*(4*x^2-3*(@p1+0.25)^2)+4*(@p1+0.25)^2*y^2*(y^2-(@p1+0.25)^2)+(x^2+y^2)^3+@p2^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@p2^4*y^2-4*@p2^6 elseif @V=="OM17" a=(@p1+1)*x/(1+y^2)+flip(x+(@p2+1)*y)+1-(@p1+1)*sin(x)+(@p2+1)*y+flip(x)+(@p2+2)^2*(x^2+y^2-(@p1+1)*x)^2-(@p1+1)^2*(x^2+y^2)*(x-(@p1+1))^2 elseif @V=="OM18" a=sin((@p1+1)*y)+(@p2+1)*sin((@p1+1)*x)+sin((@p1+1)*y)+(@p2+1)*cos((@p1+1)*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)+sin(@p3*x)+@p4*cos(@p3*y)) elseif @V=="OM19" a=-@p1*x-@p2*x*y+y+flip(-@p3*y-@p4*x^2+@p5*y^2-@p1*x-@p2*x^2+@p3) elseif @V=="OM20" a=(x^2+y^2-2*(@p1-3)*x)^2-4*(@p1-3)^2*sqrt(x^2+y^2)+x^(2/3)+y^(2/3)-@p2 elseif @V=="OM21" a=(x^2+y^2-2*(@p1-3)*x)^2-4*(@p1-3)^2*sin(x^2+y^2)+x^(2/3)+y^(2/3)-@p2 elseif @V=="OM22" a=(@p1+1i)^2*y^2-x^3*((@p1+1i)-x)+y^2-(@p2+2-0.5i)*((@p2+2-0.5i)-x)^3*x^4 endif b=|a| d=b^2 c=@adj1*d k=k+log(c) endfunc float func ResultIndex(complex pz) float s=0.1*@adj2*k/m_Iterations if @solid if (s<=real(@sca) || s>=imag(@sca)) m_Solid=true else index=s endif else index=s endif return index endfunc private: complex a float b float c float d float k float index default: title="Mirethla 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="Arcs of Samothrace""Conchoid of Nicomedes""Coupled Logistic""Cubic of Apollonius""Cycloid""de Jong""Hamilton"\ "Hamilton Torus""HCA""Kam Torus""Kampyle of Eudoxus""Klein Quartic""Latoocarfian""Lemniscate of Bernoulli"\ "Lissajous Quadratic""Polyharmonic Pendulum""Popcorn""Svensson""OM1""OM2""OM3""OM4""OM5""OM6""OM7"\ "OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22" default=0 endparam param p1 caption="Variant Parameter" default=(1,0) visible=@V!="Arcs of Samothrace" endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="Cycloid" && @V!="Hamilton Torus" && @V!="Kam Torus" && @V!="Arcs of Samothrace" && @V!="Lemniscate of Bernoulli" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="de Jong" || @V=="Cubic of Apollonius" || @V=="Klein Quartic" || @V=="Latoocarfian" || @V=="Polyharmonic Pendulum" \ || @V=="Svensson" || @V=="OM1" \ || @V=="OM12" || @V=="OM13" || @V=="OM18" || @V=="OM19" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="de Jong" || @V=="Latoocarfian" || @V=="Polyharmonic Pendulum" || @V=="Svensson" \ || @V=="OM12" || @V=="OM13" || @V=="OM18" || @V=="OM19" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="OM19" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=2.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true endparam } class OM_Mirethla(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0.0) b=0.0 c=0.0 d=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 float x=real(pz) float y=imag(pz) if @V==0 a=pz-@p3*flip(pz^3-1)/(3*pz^2)+@p4 elseif @V==1 a=pz-@p3*cosh(pz^3-1)/sqr(3*pz^2)+@p4 elseif @V==2 a=@p3*(exp(x)+flip(exp(y)))+@p4 elseif @V==3 a=pz-@p3*sqr(pz^3-1)/flip(3*pz^2)+@p4 elseif @V==4 a=@p3*(sqr(x)+flip(cos(y)))+@p4 elseif @V==5 a=pz+@p3*flip(pz)+@p4 elseif @V==6 a=pz+@p3*conj(pz)+@p4 elseif @V==7 a=pz+@p3*cotanh(pz)+@p4 elseif @V==8 a=pz+@p3*cotan(pz)+@p4 elseif @V==9 a=pz+@p3/pz+@p4 elseif @V==10 a=pz+@p3/exp(pz)+@p4 elseif @V==11 a=pz+@p3/sqr(pz)+@p4 elseif @V==12 a=pz+@p3/cos(pz)+@p4 elseif @v==13 a=pz-@p3*conj(pz^3-1)/(3*pz^2)+@p4 elseif @v==14 a=pz-@p3*abs(pz^3-1)/(3*pz^2)+@p4 elseif @v==15 a=pz^2*(cotanh(pz)-(@p3-0.5))/(1-(@p3-0.5)*cotanh(pz))+@p4 elseif @v==16 a=pz-@p3*sqr(pz^3-1)/conj(3*pz^2)+@p4 elseif @v==17 a=pz^2*(cosh(pz)-(@p3-0.5))/(1-(@p3-0.5)*cosh(pz))+@p4 elseif @v==18 a=pz^2*(cos(pz)-(@p3-0.5))/(1-(@p3-0.5)*cos(pz))+@p4 elseif @V==19 a=((pz^2+@p3+1)/(2*pz+@p3))^2+@p4 elseif @V==20 a=((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==21 a=((sqr(pz)^2+@p3+1)/(2*sqr(pz)+@p3))^2+@p4 elseif @V==22 a=((cotanh(pz)^2+@p3+1)/(2*cotanh(pz)+@p3))^2+@p4 elseif @V==23 a=((cotan(pz)^2+@p3+1)/(2*cotan(pz)+@p3))^2+@p4 elseif @V==24 a=((tan(pz)^2+@p3+1)/(2*tan(pz)+@p3))^2+@p4 elseif @V==25 a=((sinh(pz)^2+@p3+1)/(2*sinh(pz)+@p3))^2+@p4 elseif @V==26 a=((sin(pz)^2+@p3+1)/(2*sin(pz)+@p3))^2+@p4 elseif @V==27 a=((recip(pz)^2+@p3+1)/(2*recip(pz)+@p3))^2+@p4 elseif @V==28 a=exp((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==29 a=exp((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==30 a=pz-@p3*sqr(pz^3-1)/(3*pz^2)+@p4 elseif @V==31 a=sqr((pz^2+@p3+1)/(2*pz+@p3))^2+@p4 elseif @V==32 a=sqr((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==33 a=pz-@p3*cosh(pz^3-1)/(3*pz^2)+@p4 elseif @V==34 a=cosh((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==35 a=cosh((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==36 a=pz-@p3*(pz^3-1)/tan(3*pz^2)+@p4 elseif @V==37 a=pz-@p3*sqr(pz^3-1)/sin(3*pz^2)+@p4 elseif @V==38 a=pz-@p3*(pz^3-1)/recip(3*pz^2)+@p4 elseif @V==39 a=recip((sqr(pz)^2+@p3+1)/(2*sqr(pz)+@p3))^2+@p4 elseif @V==40 a=sinh((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==41 a=sinh((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==42 a=pz-@p3*cosh(pz^3-1)/recip(3*pz^2)+@p4 elseif @V==43 a=@p3*(x+flip(exp(y)))+@p4 elseif @V==44 a=recip((flip(pz)^2+@p3+1)/(2*flip(pz)+@p3))^2+@p4 elseif @V==45 a=recip((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 else a=@p3*(pz-1i)/exp(pz+1i)+@p4 endif b=|a| d=b^2 c=@adj1*d k=k+log(c) endfunc float func ResultIndex(complex pz) if @version<101 if @solid if @invert if 0.1*@adj2*k/m_Iterations>@p7 index=0.1*@adj2*k/m_Iterations else m_Solid=true endif else if 0.1*@adj2*k/m_Iterations<@p7 index=0.1*@adj2*k/m_Iterations else m_Solid=true endif endif else index=0.1*@adj2*k/m_Iterations endif else float s=0.1*@adj2*k/m_Iterations if @solid if (s<=real(@sca) || s>=imag(@sca)) m_Solid=true else index=s endif else index=s endif endif return index endfunc private: complex a float b float c float d float k float index default: title="Mirethla" int param version caption="Version" default=101 visible=@version<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param p1 default=(1,0) endparam param p2 default=(0,0) endparam param p3 default=(1,0) endparam param p4 default=(0,0) endparam param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=2.0 endparam func fn1 caption="Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.6 visible=@solid==true && @version<101 endparam param invert caption="Invert Solid Color" default=false visible=@solid==true && @version<101 endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true && @version==101 endparam } class OM_Vescur3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=@p1 b=@p2 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 float x=real(pz) float y=imag(pz) if @T=="astroid" d=b-|x^(2/3)+y^(2/3)-a^(2/3)| elseif @T=="bicorn" d=b-|y^2*(a^2-x^2)-(x^2+2*a*y-a^2)^2| elseif @T=="cardioid" d=b-|(x^2+y^2-2*a*x)^2-4*a^2*(x^2+y^2)| elseif @T=="catenary" d=b-|y-a*cosh(x/a)| elseif @T=="cayley's sextile" d=b-|4*(x^2+y^2-a*x)^3-27*a^2*(x^2+y^2)^2| elseif @T=="cissoid of diocles" d=b-|y^2-x^3/(2*a-x)| elseif @T=="conchoid" d=b-|(x-a)^2*(x^2+y^2-a^2*x^2)| elseif @T=="conchoid of de sluze" d=b-|a*(x+a)*(x^2+y^2)-a^2*x^2| elseif @T=="devil" d=b-|y^4-x^4+a*y^2+a*x^2| elseif @T=="double folium" d=b-|(x^2+y^2)^2-4*a*x*y^2| elseif @T=="durer's shell" d=b-|(x^2+x*y+a*x-a^2)^2-(a^2-x^2)*(x-y+a)^2| elseif @T=="figure eight" d=b-|x^4-a^2*(x^2-y^2)| elseif @T=="folium" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="folium of descartes" d=b-|x^3+y^3-3*a*x*y| elseif @T=="hyperbola" d=b-|x^2/a^2-y^2/a^2-1| elseif @T=="kampyle of eudoxus" d=b-|a^2*x^4-a^4*(x^2+y^2)| elseif @T=="kappa" d=b-|y^2*(x^2+y^2)-a^2*x^2| elseif @T=="lamé" d=b-|(x/a)^2+(y/a)^2-1| elseif @T=="lemniscate of bernoulli" d=b-|(x^2+y^2)^2-a^2*(x^2-y^2)| elseif @T=="limacon of pascal" d=b-|(x^2+y^2-2*a*x)^2-a^2*(x^2+y^2)| elseif @T=="line" d=b-|y-a*x-a| elseif @T=="neile's semi-cubical parabola" d=b-|y^3-a*x^2| elseif @T=="newton's diverging parabolas" d=b-|a*y^2-x*(x^2-2*a*x+a)| elseif @T=="parabola" d=b-|y-a*x^2-a*x-a| elseif @T=="pearls of sluze" d=b-|y^2-a*(a-x)^3*x^4| elseif @T=="pear-shaped quartic" d=b-|a^2*y^2-x^3*(a-x)| elseif @T=="pursuit" d=b-|y-a*x^2-log(x)| elseif @T=="quadratic of hippias" d=b-|y-x*cotan(pi*x/(2*a))| elseif @T=="right strophoid" d=b-|y^2-x^2*(a-x)/(a+x)| elseif @T=="serpentine" d=b-|x^2*y+a^2*y-a^2*x| elseif @T=="spiric sections" d=b-|((a-0.5)^2+x^2+y^2)^2-4*(a-0.5)^2*(x^2+(a-0.5)^2)| elseif @T=="tricuspoid" d=b-|(x^2+y^2+12*(a-0.5)*x+9*(a-0.5)^2)^2-4*(a-0.5)*(2*x+3*(a-0.5))^3| elseif @T=="trident of newton" d=b-|x*y-a*x^3-a*x^2-a*x-a| elseif @T=="trifolium" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="trisectrix of maclaurin" d=b-|y^2*(a+x)-x^2*(3*a-x)| elseif @T=="tschirnhaus's cubic" d=b-|3*a*y^2-x*(x-a)^2| elseif @T=="witch of agnesi" d=b-|y*(x^2+a^2)-a^3| elseif @T=="om1" d=b-|y*(x^2+a^2)-a^3+3*a*y^2-x*(x-a)^2| elseif @T=="om2" d=b-|y^2*(a+x)-x^2*(3*a-x)+(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="om3" d=b-|x*y-a*x^3-a*x^2-a*x-a+y-a*x-a| elseif @T=="om4" d=b-|y^2-a*(a-x)^3*x^4+x^2*y+a^2*y-a^2*x| elseif @T=="om5" d=b-|y^2-x^2*(a-x)/(a+x)+y-x*cotan(pi*x/(2*a))| elseif @T=="om6" d=b-|y-a*x^2-log(x)+a^2*y^2-x^3*(a-x)| elseif @T=="om7" d=b-|y-a*x^2-a*x-a+a*y^2-x*(x^2-2*a*x+a)| elseif @T=="om8" d=b-|y^3-a*x^2+(x^2+y^2-2*a*x)^2-a^2*(x^2+y^2)| elseif @T=="om9" d=b-|(x^2+y^2)^2-a^2*(x^2-y^2)+(x/a)^2+(y/a)^2-1| elseif @T=="om10" d=b-|y^2*(x^2+y^2)-a^2*x^2+a^2*x^4-a^4*(x^2+y^2)| elseif @T=="om11" d=b-|x^2/a^2-y^2/a^2-1+x^3+y^3-3*a*x*y| elseif @T=="om12" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2+x^4-a^2*(x^2-y^2)| elseif @T=="om13" d=b-|(x^2+x*y+a*x-a^2)^2-(a^2-x^2)*(x-y+a)^2+(x^2+y^2)^2-4*a*x*y^2| elseif @T=="om14" d=b-|y^4-x^4+a*y^2+a*x^2+a*(x+a)*(x^2+y^2)-a^2*x^2| elseif @T=="om15" d=b-|(x-a)^2*(x^2+y^2-a^2*x^2)+y^2-x^3/(2*a-x)| elseif @T=="om15" d=b-|4*(x^2+y^2-a*x)^3-27*a^2*(x^2+y^2)^2+y-a*cosh(x/a)| elseif @T=="om16" d=b-|(x^2+y^2-2*a*x)^2-4*a^2*(x^2+y^2)+y^2*(a^2-x^2)-(x^2+2*a*y-a^2)^2| elseif @T=="om17" d=b-|y*(x^2+a^2)-a^3+y^4-x^4+a*y^2+a*x^2| elseif @T=="om18" d=b-|y+sin((a-1.5-1i)*y)+(a-1.5-1i)*cos((a-1.5-1i)*x)+flip(sin((a-1.5-1i)*x)+(a-1.5-1i)*cos((a-1.5-1i)*y)+(a-1.5-1i)*sin(x)+(a-1.5-1i)*y)| elseif @T=="om19" d=b-|x*cos((a-1.2))+(x^2-y)*sin((a-1.2))+(a-1.2)*sin((a-1.2)*x)-sin((a-1.2)*y)+flip((a-1.2)*cos((a-1.2)*x)+cos((a-1.2)*y)+x*sin((a-1.2))-(x^2-y)*cos((a-1.2)))| elseif @T=="om20" d=b-|y+(a-0.25)*(x-x^3/3-y)+flip(x/(a-0.25)+(a-0.25)*(1-x^2)*y-x)| elseif @T=="om21" d=b-|y+x^2-y^2+flip(2*x*y-5*a*y/2+a^2*x+a*y-a*x^3)| elseif @T=="om22" d=b-|2*y+flip(-a*x+a*y-y^3+a*sin(x)+a*y)| elseif @T=="om23" d=b-|1+a*(cabs(x)-y^2)+y+flip(a*x)+y^2-x^2*(a-x)/(a+x)-1.5| elseif @T=="om24" d=b-|x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)+sin(a*y)+a*sin(a*x)+flip(sin(a*x)+a*sin(a*y))| elseif @T=="om25" d=b-|x*exp(a*(1-0.1*x)-a*y)+flip(x*(1-exp(-a*y)))+sin(a*y)+a*sin(a*x)+flip(sin(a*x)+a*sin(a*y))| elseif @T=="om26" d=b-|a*sqrt((x-a)^2+y^2)+a*sqrt((x+a)^2+y^2)-a+(x^2+y^2)^2-2*a^2*(x^2-y^2)+a^4-a^4| elseif @T=="om27" d=b-|(x^2-y^2)^2-a^2*x^2+a^2*y^2+x^4*(x^2+y^2)-(a*x^2-a^3)^2| elseif @T=="om28" d=b-|x^3+y^3-(a-0.25)^3+((a-0.25)^2-x^2)*((a-0.25)^2+y^2)-(a-0.25)^4| elseif @T=="om29" d=b-|2*(a-0.25)^2*x+(1-(a-0.25)^2)*x^2+y^2-(a-0.25)^2+(x^2+y^2)^3+(a-0.25)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*(a-0.25)^4*y^2-4*(a-0.25)^6| elseif @T=="om30" d=b-|((a-0.5)+1)^2*(x^2+y^2-(a-0.5)*x)^2-(a-0.5)^2*(x^2+y^2)*(x-(a-0.5))^2+3*x^2-y^2-(a-0.5)^2| elseif @T=="om31" d=b-|y^2*(a-x)^2-(a-x)^2*(a^2-x^2)+1-a*x^2+y+flip((a-0.5)*x)| elseif @T=="om32" d=b-|(x^2+y^2+12*(a-0.75)*x+9*(a-0.75)^2)-4*(a-0.75)*(2*x+3*(a-0.75))^3+((a-0.75)-0.5)*x^3+(a-0.75)*x+(a-0.75)/2+(a-0.75)*y+flip((a-0.75)*x+(a-0.75)*y)| elseif @T=="om33" d=b-|(x^2+y^2)^3-a^4*x^2+(1-a*x-a*y)*(a*x+a*y)+flip(x)| endif if d>0 if @V==0 c=@p3*d+@p4 elseif @V==1 c=@p3*(d+|#z|)+@p4 elseif @V==2 c=@p3*(d+c)+@p4 elseif @V==3 c=@p3*(abs(c^(2/3)+d^(2/3)-1))+@p4 elseif @V==4 c=@p3*|#z*d+1|+@p4 elseif @V==5 c=@p3*|d-1|+@p4 elseif @V==6 c=@p3*|#z+d-1|+@p4 endif endif endfunc float func ResultIndex(complex pz) if @solid==true if @invert if c<=@sca index=c else m_Solid=true endif else if c>@sca index=c else m_Solid=true endif endif else index=c endif return index endfunc private: complex a float b float c float d float index default: title="Vescur 3" int param version caption="Version" default=100 visible=@version<100 endparam param T caption="Variant 1" enum="astroid""bicorn""cardioid""catenary""cayley's sextile"\ "cissoid of diocles""conchoid""conchoid of de sluze""devil"\ "double folium""durer's shell""figure eight""folium"\ "folium of descartes""hyperbola""kampyle of eudoxus"\ "kappa""lamé""lemniscate of bernoulli""limacon of pascal""line"\ "neile's semi-cubical parabola""newton's diverging parabolas"\ "parabola""pearls of sluze""pear-shaped quartic""pursuit"\ "quadratic of hippias""right strophoid""serpentine"\ "spiric sections""tricuspoid""trident of newton""trifolium"\ "trisectrix of maclaurin""tschirnhaus's cubic""witch of agnesi"\ "om1""om2""om3""om4""om5""om6""om7""om8""om9""om10""om11""om12"\ "om13""om14""om15""om16""om17""om18""om19""om20""om21""om22""om23"\ "om24""om25""om26""om27""om28""om29""om30""om31""om32""om33" endparam param p1 caption="Variant 1 Parameter 1" default=(1,0) endparam param p2 caption="Variant 1 Parameter 2" default=0.25 endparam param V caption="Variant 2" enum="1""2""3""4""5""6""7" endparam func zf caption="Z Function" default=ident() endfunc param zp1 default=(1,0) endparam param zp2 default=(0,0) endparam param p3 caption="Adjustment 1" default=1.0 endparam param p4 caption="Adjustment 2" default=0.0 endparam param @solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Xastisty(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz=log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+pz elseif @Fs=="sqr-" pz=sqr(pz)-pz elseif @Fs=="cube-" pz=pz^3-pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="sin-" pz=sin(pz)-pz elseif @Fs=="cos-" pz=cos(pz)-pz elseif @Fs=="tan-" pz=tan(pz)-pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="recip+" pz=recip(pz)+pz elseif @Fs=="recip-" pz=recip(pz)-pz elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif pz=@zp1*pz+@zp2 float x=real(pz) float y=imag(pz) if @V=="I" pz=((@p1-2)-@p2)*cos(x)+@p2*cos(((@p1-2)/@p2-1)*y)+flip(((@p1-2)-@p2)*sin(y)-@p2*sin(((@p1-2)/@p2-1)*x)) elseif @V=="II" pz=((-2*@p1)+@p2)*cos(x)+@p2*cos(((-2*@p1)/@p2+1)*y)+flip(((-2*@p1)+@p2)*sin(y)-@p2*sin(((-2*@p1)/@p2+1)*x)) elseif @v=="III" pz=(@p1+1i)*x-(@p2+0.5)*sin(y)+flip((@p1+1i)-(@p2+0.5)*cos(x)) elseif @V=="IV" pz=(@p1+1i)*cos(imag(pz))^3+flip((@p1+1i)*sin(real(pz))^3) elseif @V=="V" pz=@p1*sin(@p4*y+@p3)+flip(@p2*sin(x)) elseif @V=="VI" pz=(@p1-0.5)*(cos(y)+(@p2+1)*x*sin((@p3+1)*y))+flip((@p1-0.5)*(sin(x)-(@p2+1)*y*cos((@p3+1)*x))) elseif @V=="VII" pz=(@p1+0.5)*(cos(x)+@p2*y*sin(@p3*y))+flip((@p1+0.5)*(sin(y)-@p2*x*cos(@p3*x))) elseif @V=="VIII" pz=@p1*sin((@p2-2+@p3)*x)/sin((@p2-2-@p3)*y)+flip(2*@p1*sin((@p2-2)*y)*sin(@p3*y)/sin((@p2-2-@p3)*x)) elseif @V=="IX" pz=(@p1-0.5)/cosh(y)+flip(y-tanh(@p2*x)) elseif @V=="X" pz=@p1*(cos((@p2+1)*y)+(@p3-2)*cos(x))+flip(@p1*sin((@p2+1)*x)) elseif @V=="XI" pz=-@p1+cos(y)+flip(@p2*tan(x)+sin(y)) elseif @V=="XII" pz=(x^2+y^2)^2-4*(@p1+1)*x*y^2+@p2*(x+@p2)*(x^2+y^2)-@p2^2*x^2 elseif @V=="XIII" pz=y^4-x^4+(@p1-0.5)*y^2+(@p1-0.5)*x^2+@p2^2*x^4-@p2^4*(x^2+y^2) elseif @V=="XIV" pz=y^2*(x^2+y^2)-(@p1+1)^2*x^2+@p2^2*y^2-x^3*(@p2-x) elseif @V=="XV" pz=y-@p1*x^2-log(x)+((@p2-0.5)^2+x^2+y^2)^2-4*(@p2-0.5)^2*(x^2+(@p2-0.5)^2) elseif @V=="XVI" pz=x^3+(@p1+2)*x+@p2+y+flip(@p3*x)+@p4*y^2-x^2*(x-@p4) elseif @V=="XVII" pz=((@p1-2)-x-4*x*y)/(1+x^2)+flip((@p2+1+1i)*x*(1-y)/(1+x^2))+(@p1-2)*sin(y+tan((@p2+1+1i)*y))\ +flip((@p1-2)*sin(x+tan((@p2+1+1i)*x))) elseif @V=="XVIII" pz=y^2-recip((x^2+1)^3)+@p1^2*x^4-@p2^4*(x^2+y^2) elseif @V=="XIX" pz=y^2*(x-@p1)^2+x^2*(x-@p2)^2-@p3^2*x^2+@p1^4*y^2-(@p2^2-x^2)^3 elseif @V=="XX" pz=x^2*y^2-@p1^2*(@p1^2-y^2)+y+flip(-@p2*x+@p1*y-y^3) elseif @V=="XXI" pz=1+y-(@p1+1)*cabs(x)+flip((@p2-0.5)*x)+1-(@p1+1)*sin(x)+(@p2-0.5)*y+flip(x) elseif @V=="XXII" pz=x^2*y^2*(x^2+y^2)-(x^2-y^2)^2+4*(@p1-2)*(x-(@p2-0.5))-(y-(@p3-0.5))^2+(x^2+y^2)*\ (x^2+y^2+(@p1-2)*x)^2-(@p2-0.5)^2*(x^2-y^2)^2 elseif @V=="XXIII" pz=(@p1+1i)*x-(@p2+1i)*x*y+flip(-@p3*y+(@p4-0.5)*x*y)+(x^2+y^2)^2+((@p1+1i)-2)*x^2+(@p2+1i)\ *y^2+2*@p3*x+(@p4-0.5)+(x^2+y^2)^2-(@p1+1i)*x*(x^2-y^2) elseif @V=="XXIV" pz=y+flip(-(x+(@p2-0.5-1i)*y^3-(@p1-2-1.5i)*y)/@p3)+y+flip((@p1-2-1.5i)*sin(x)+(@p2-0.5-1i)*y)\ +(@p1-2-1.5i)*x/(1+y^2)+flip(x+(@p2-0.5-1i)*y) elseif @V=="XXV" pz=x-log(((@p1+1)-sqrt((@p1+1)^2-y^2))/y)-sqrt((@p1+1)^2-y^2)-y^2*((@p2-1.5+1i)+x)-x^2*(3*(@p2-1.5+1i)-x) elseif @V=="XXVI" pz=@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2))+3*@p2*y^2-x*(x-@p2)^2 elseif @V=="XXVII" pz=@p1*(x-x^3/3-y)+flip(x/(@p1+1i))+x*cos(@p2+2)+(x^2-y)*sin(@p2+2)+flip(x*sin(@p2+2)\ -(x^2-y)*cos(@p2+2))+y+sin(x)+flip(@p3-x) elseif @V=="XXVIII" pz=(@p1-0.5+1i)*(x-x^3/3-y)+flip(x/(@p1-0.5+1i))+x*cos(@p1+1.5)+(x^2-y)*sin(@p2+2+1i)+\ flip(x*sin(@p1+1.5)-(x^2-y)*cos(@p2+2+1i))+y+sin(x)+flip(@p1-0.5-x) elseif @V=="XXIX" pz=(y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2+(x^2+y^2)^3+(@p1-0.5+0.5i)^2*(3*x^4-6*x^2*y^2-5*y^4)\ +8*(@p1-0.5+0.5i)^4*y^2-4*(@p1-0.5+0.5i)^6 elseif @V=="XXX" pz=(x^2-y^2)^2-(@p1+1)^2*x^2+(@p2-2+1i)^2*y^2+x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4\ +x-(@p1+1)*sin((@p2-2+1i)*y) elseif @V=="XXXI" pz=y^2*(@p3-x)^2-((@p2+0.5i)-x)^2*(@p1^2-x^2)+(x-(@p2+0.5i))^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="XXXII" pz=sin((@p1-0.5-1i)*y)+(sin((@p1-0.5-1i)*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2)+(x^2+y^2-@p2*(@p1-0.5-1i)^2)^2\ -@p3*(@p1-0.5-1i)*(y-(@p1-0.5-1i)+sqrt(3)*x)*(y-(@p1-0.5-1i)-sqrt(3)*x)*(2*y+(@p1-0.5-1i))+y^2*(x^2+y^2)-@p3^2*x^2 elseif @V=="XXXIII" pz=@p1^4*y^2-(@p1^2-x^2)^3+2*(2*x^2-(@p2-0.5)^2)^2-(@p2-0.5)*(2*y-(@p2-0.5))^2*(y+(@p2-0.5))+x*y*(x^2-y^2)-x^2-y^2 elseif @V=="XXXIV" pz=(x^2+y^2)^2-x^3-y^3+y^2*((@p1-0.5+0.5i)^2-x^2)-(x^2+2*(@p1-0.5+0.5i)*y-(@p1-0.5+0.5i)^2)^2+(x^2+y^2-2*@p2*x)^2-4*@p2^2*(x^2+y^2) elseif @V=="XXXV" pz=sin(@p1*y)+@p3*cos(@p1*x)+flip(sin((@p2+0.5-0.5i)*x)+@p4*cos((@p2+0.5-0.5i)*y))+x*y+@p1*x^3+(@p2+0.5-0.5i)*x^2+@p3*x-@p4 elseif @V=="XXXVI" pz=(x^2+y^2)*(x^2+y^2-@p3^2)^2+4*@p1^2*y^2*(x^2+y^2-@p2^2)+(1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3) elseif @V=="XXXVII" pz=(x^2+y^2)*(x^2+y^2-(@p1-1i)*x-@p2*y)-(@p3+1)^2*x^2*y^2+flip(y+(@p1-1i)*y+@p2*x*(x-1)+(@p3+1)*x*y)+x+y+(@p1-1i)*y+@p2*x*(x-1)+(@p3+1)*x*y elseif @V=="XXXVIII" pz=(1-@p1)*x+y+flip(@p1*(@p2-0.5)*x+(@p3-0.5)*y-@p1*x^3)+x^2*y^2-@p1^2*(x-((@p2-0.5)+1-(@p3-0.5)))*((@p2-0.5)+1+(@p3-0.5)-x) elseif @V=="XXXIX" pz=(2*x^2+y^2)^2+2*sqrt(2)*@p1*x*(2*x^2-3*y^2)+2*@p1^2*(y^2-x^2)+(x^2+y^2-@p1*@p2*x)^2-(x^2+y^2)*(@p2*x-(@p1+1))^2 elseif @V=="XL" pz=((@p1-1.5-0.5i)-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2))+(@p1-1.5-0.5i)*x/(1+y^2)+flip(x+@p2*y) elseif @V=="XLI" pz=y-recip(1+@p1*e^x)+y^2-x^2*log(@p2^2/x^2) elseif @V=="XLII" pz=y-log(sqrt(1-x^2))+x+@p1*sin(y)+flip(y+x+@p1*sin(y))+y^3-@p2*x^2 elseif @V=="XLIII" pz=y^2-x*(x^2+2*(@p1+1i)*x+@p2)+(x^2+y^2)^2-x^2*((@p1+1i)*x+@p2*y) elseif @V=="XLIV" pz=y+flip(-((@p1+1+2i)*x^3+@p2*x+@p3*y)/(@p4+1i))+sin((@p1+1+2i)*y)+@p3*cos((@p1+1+2i)*x)+flip(sin(@p2*x)+(@p4+1i)*cos(@p2*y)) elseif @V=="XLV" pz=x+sqrt((@p2+1)^2-y^2)-@p1*log(((@p2+1)+sqrt((@p2+1)^2-y^2))/y)+(x^2+y^2)^2-(@p1*x+@p2*y)*(x^2-y^2) elseif @V=="XLVI" pz=1-(@p1+1)*x^2+@p2*(y-x)+flip(1-(@p1+1)*y^2+@p2*(x-y))+(x^2-@p2*y)^2-(@p1+1)^2*(x^2-y^2) elseif @V=="XLVII" pz=x^2*y^2-(@p1-0.5)^2*(x-(@p2+1-@p3))*(@p2+1+@p3-x)+(x-2*(@p1-0.5))*(x^2+y^2)+@p2^2*(cos(2*@p3*x)+sin(2*@p3*y)) elseif @V=="XLVIII" pz=y+flip(-@p1*sin(x)-(@p2+1)*sin(3*x)+@p3*sin(@p4))+(x^2+y^2)^2+(@p1-2)*x^2+(@p2+1)*y^2+2*@p3*x+@p4 elseif @V=="XLIX" pz=@p1*x-(@p2+1)*x*y+flip(-@p3*y+@p4*x*y)+x^4*(x^2+y^2)-((@p2+1)*x^2-@p3^3)^2 elseif @V=="L" pz=2*x*y-x^4+y^4+x*(x^2+y^2)-@p1*(x^2+2*y^2)+x*y^2-@p2*x endif float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) if @solid if @invert if c<=@sca index=(log(c)+1)*0.5 else m_Solid=true endif else if c>@sca index=(log(c)+1)*0.5 else m_Solid=true endif endif else index=(log(c)+1)*0.5 endif return index endfunc private: complex fpixel float c float index default: title="Xastisty" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X""XI""XII""XIII""XIV""XV"\ "XVI""XVII""XVIII""XIX""XX""XXI""XXII""XXIII""XXIV""XXV""XXVI""XXVII"\ "XXVIII""XXIX""XXX""XXXI""XXXII""XXXIII""XXXIV""XXXV""XXXVI""XXXVII"\ "XXXVIII""XXXIX""XL""XLI""XLII""XLIII""XLIV""XLV""XLVI""XLVII""XLVIII""XLIX""L" endparam param p1 caption="Variant Parameter" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="IV" && @V!="XXIX" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="V" || @V=="VI" || @V=="VII" || @V=="VIII" || @V=="X" \ || @V=="XVI" || @V=="XIX" || @V=="XXII" || @V=="XXIV" || @V=="XXIII" \ || @V=="XXVII" || @V=="XXXI" || @V=="XXXII" || @V=="XXXV" || @V=="XXXVI" \ || @V=="XXXVII" || @V=="XXXVIII" || @V=="XLIV" || @V=="XLVII" \ || @V=="XLVIII" || @V=="XLIX" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="V" || @V=="XVI" || @V=="XXIII" || @V=="XXXV" || @V=="XLIV" \ || @V=="XLVIII" || @V=="XLIX" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos"\ "acosh""tan""tanh""atan""atanh""cotan""cotanh"\ "sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip"\ "versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh"\ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec"\ "crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus""primecount"\ "sqr+""cube+""sqr-""cube-""sin+""cos+""tan+""sin-""cos-""tan-""sin*""cos*""tan*"\ "recip+""recip-""+pixel""-pixel"\ "*pixel""/pixel""half""double""triple" default=22 endparam param adj caption="Adjustment" default=1.5 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.385 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Abracadabra2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) c=0.0 d=0.0 f=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*abs(fn1(pz))+@zp2 x=real(pz) y=imag(pz) if @V=="I" a=(@p1-@p2)*cos(x)+@p2*cos((@p1/@p2-1)*y)+flip((@p1-@p2)*sin(x)-@p2*sin((@p1/@p2-1)*y)) elseif @V=="II" a=(@p1+@p2)*cos(x)-@p2*cos((@p1/@p2+1)*y)+flip((@p1+@p2)*sin(x)+@p2*sin((@p1/@p2-1)*y)) elseif @V=="III" a=@p1*(2*cos(x)-cos(2*y))+flip(@p1*(2*sin(x)-sin(2*y))) elseif @V=="IV" a=@p1+cos(x)+flip(@p1*tan(y)+sin(x)) elseif @V=="V" a=@p1+cos(x)+flip(@p1*tan(x)+sin(y)) elseif @V=="VI" a=@p1*(2*cos(x)+cos(2*y))+flip(@p1*(2*sin(x)-sin(2*y))) elseif @V=="VII" a=@p1*cos(2*x)*cos(@p2*y)+flip(@p1*(2+cos(2*x))*sin(@p2*y)) elseif @V=="VIII" a=@p1*cos(x)*(1-2*sin(y)^2)+flip(@p1*sin(x)*(1+2*cos(y)^2)) elseif @V=="IX" a=@p1*2*cos(x)+@p2*cos(3*y)+flip(@p1*sin(3*x)) elseif @V=="X" a=-6*@p1*cos(x)/5+@p1*cos(6*y)/5+flip(-6*@p1*sin(x)/5+@p1*sin(6*y)/5) elseif @V=="XI" a=@p1*(cos(x)+y*sin(y))+flip(@p1*(sin(x)-y*cos(y))) elseif @V=="XII" a=(@p1+@p2)*cos(@p2*x/@p1)-@p3*@p2*cos((1+@p2/@p1)*y)+flip((@p1+@p2)*sin(@p2*x/@p1)-@p3*@p2*sin((1+@p2/@p1)*y)) elseif @V=="XIII" a=@p1*cos(x)*sin(y-@p2)^2/(sin(@p2)^2)+flip(@p1*cos(x-@p2)*sin(y)^2/(sin(@p2)^2)) elseif @V=="XIV" a=2*@p1*cos(x)^2+@p2*cos(y)+flip(2*@p1*cos(x)*sin(x)+@p2*sin(y)) elseif @V=="XV" a=@p1*(3*cos(x)-cos(3*y))+flip(@p1*(3*sin(x)-sin(3*y))) elseif @V=="XVI" a=-@p1+2*@p1*cos(x)*(1+cos(y))+flip(2*@p1*sin(x)*(1-cos(y))) elseif @V=="XVII" a=@p1*sin(y)+flip(@p2*sin(x)^2-cos(y))+cos(x)^2 elseif @V=="XVIII" a=@p1*sin(x)+sin(y)+flip(2*@p2*cos(x)-@p3*sin(y)) endif c=|a| f=c^2 d=@p5*f k=k+log(d) endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if k>@sca index=@p6*k/m_Iterations else m_Solid=true endif else if k<=@sca index=@p6*k/m_Iterations else m_Solid=true endif endif else index=@p6*k/m_Iterations endif return index endfunc private: complex a float c float d float f float k float index default: title="Abracadabra 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X""XI""XII""XIII""XIV""XV""XVI""XVII""XVIII" default=0 endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="Variant Parameter" default=(-1.05,0.8) endparam param p2 caption="Variant Parameter 2" default=(0.85,-0.05) visible=@V=="I" || @V=="II" || @V=="VII" || @V=="IX" || @V=="XII" || @V=="XIII" || @V=="XIV" || @V=="XVII" || @V=="XVIII" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="XII" || @V=="XVIII" endparam param p5 caption="Adjustment 1" default=0.05 endparam param p6 caption="Adjustment 2" default=-0.35 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=-0.15 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation(common.ulb:GradientColoring) { ;This is a modification of Fractional Brownian Motion by Damien Jones (dmj.ucl) public: float func ResultIndex(complex pz) c=pz*@p1+@p2 float d=0.0 float f=1.0 int i=@iter while i>0 float x1=floor(real(c))%256 float y1=floor(imag(c))%256 if x1<0 x1=x1+256 endif if y1<0 y1=y1+256 endif float x2=(x1+1)%256 float y2=(y1+1)%256 float x3=real(c)-floor(real(c)) float y3=imag(c)-floor(imag(c)) float x4=x3-1 float y4=y3-1 float g1=(x1^@pow%(@p4*1000)+y1)^@pow%(@p4*1000) float g2=(x2^@pow%(@p4*1000)+y1)^@pow%(@p4*1000) float g3=(x1^@pow%(@p4*1000)+y2)^@pow%(@p4*1000) float g4=(x2^@pow%(@p4*1000)+y2)^@pow%(@p4*1000) float h1=g1^@pow*0.25%512-256 float h2=g2^@pow*0.25%512-256 float h3=g3^@pow*0.25%512-256 float h4=g4^@pow*0.25%512-256 float h5=(g1+1)^@pow*0.25%512-256 float h6=(g2+1)^@pow*0.25%512-256 float h7=(g3+1)^@pow*0.25%512-256 float h8=(g4+1)^@pow*0.25%512-256 float j=0.0; j=1/sqrt(sqr(h1)+sqr(h5)) h1=h1*j h5=h5*j j=1/sqrt(sqr(h2)+sqr(h6)) h2=h2*j h6=h6*j j=1/sqrt(sqr(h3)+sqr(h7)) h3=h3*j h7=h7*j j=1/sqrt(sqr(h4)+sqr(h8)) h4=h4*j h8=h8*j float k1=x3*h1+y3*h5 float k2=x4*h2+y3*h6 float k3=x3*h3+y4*h7 float k4=x4*h4+y4*h8 float m1=sqr(x3)*(3-x3*2) float m2=sqr(y3)*(3-y3*2) float m3=k1+m1*(k2-k1) float m4=k3+m1*(k4-k3) if @fn=="ident" d=d+(m3+m2*(m4-m3))*f elseif @fn=="abs" d=d+abs(m3+m2*(m4-m3))*f elseif @fn=="sqrt" d=d+real(sqrt(m3+m2*(m4-m3)))*f elseif @fn=="sqr" d=d+sqr(m3+m2*(m4-m3))*f elseif @fn=="ceil" d=d+ceil(m3+m2*(m4-m3))*f elseif @fn=="smoothstep" d=d+(3*(m3+m2*(m4-m3))^2-2*(m3+m2*(m4-m3))^3)*f elseif @fn=="cuberoot" d=d+((m3+m2*(m4-m3))^(1/3))*f elseif @fn=="ceil/acos" d=d+real(ceil(m3+m2*(m4-m3))/acos(m3+m2*(m4-m3)))*f elseif @fn=="exp/acos" d=d+real(exp(m3+m2*(m4-m3))/acos(m3+m2*(m4-m3)))*f elseif @fn=="log/cotan" d=d+real(log(m3+m2*(m4-m3))/cotan(m3+m2*(m4-m3)))*f elseif @fn=="conj/log" d=d+real(conj(m3+m2*(m4-m3))/log(m3+m2*(m4-m3)))*f elseif @fn=="flip/sqrt" d=d+real(flip(m3+m2*(m4-m3))/sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log*abs" d=d+real(log(m3+m2*(m4-m3))*abs(m3+m2*(m4-m3)))*f elseif @fn=="flip*log" d=d+real(flip(m3+m2*(m4-m3))*log(m3+m2*(m4-m3)))*f elseif @fn=="ident^flip" d=d+real(ident(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="ident^abs" d=d+real(ident(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="ident^sqrt" d=d+real(ident(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="flip^acosh" d=d+real(flip(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="flip^sqrt" d=d+real(flip(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="conj^acosh" d=d+real(conj(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="abs^sqrt" d=d+real(abs(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log^flip" d=d+real(log(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="log^log" d=d+real(log(m3+m2*(m4-m3))^log(m3+m2*(m4-m3)))*f elseif @fn=="log^sqrt" d=d+real(log(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log^acos" d=d+real(log(m3+m2*(m4-m3))^acos(m3+m2*(m4-m3)))*f elseif @fn=="sqr^sqrt" d=d+real(sqr(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="sqr^exp" d=d+real(sqr(m3+m2*(m4-m3))^exp(m3+m2*(m4-m3)))*f elseif @fn=="sqr^abs" d=d+real(sqr(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="cotanh^abs" d=d+real(cotanh(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="cotanh^sqrt" d=d+real(cotanh(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="acos^sin" d=d+real(acos(m3+m2*(m4-m3))^sin(m3+m2*(m4-m3)))*f elseif @fn=="acos^acos" d=d+real(acos(m3+m2*(m4-m3))^acos(m3+m2*(m4-m3)))*f elseif @fn=="acos^acosh" d=d+real(acos(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="acos^sqrt" d=d+real(acos(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="acos^flip" d=d+real(acos(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="acos^floor" d=d+real(acos(m3+m2*(m4-m3))^floor(m3+m2*(m4-m3)))*f elseif @fn=="cotan*sin" d=d+real(cotan(m3+m2*(m4-m3))*sin(m3+m2*(m4-m3)))*f elseif @fn=="sin*cabs" d=d+real(sin(m3+m2*(m4-m3))*cabs(m3+m2*(m4-m3)))*f elseif @fn=="flip+2*ident" d=d+real(flip(m3+m2*(m4-m3))+2*(m3+m2*(m4-m3)))*f elseif @fn=="sin+abs+sqr" d=d+real(sin(m3+m2*(m4-m3))+abs(m3+m2*(m4-m3))+sqr(m3+m2*(m4-m3)))*f elseif @fn=="exp+trunc+ceil" d=d+real(exp(m3+m2*(m4-m3))+trunc(m3+m2*(m4-m3))+ceil(m3+m2*(m4-m3)))*f elseif @fn=="sqr+2*ceil" d=d+real(sqr(m3+m2*(m4-m3))+2*ceil(m3+m2*(m4-m3)))*f elseif @fn=="3*ceil" d=d+real(3*ceil(m3+m2*(m4-m3)))*f elseif @fn=="^(0.1,0.1)" d=d+real((m3+m2*(m4-m3))^(0.1,0.1))*f elseif @fn=="^(0.5,0.5)" d=d+real((m3+m2*(m4-m3))^(0.5,0.5))*f elseif @fn=="^(1,1)" d=d+real((m3+m2*(m4-m3))^(1,1))*f elseif @fn=="^(1,5)" d=d+real((m3+m2*(m4-m3))^(1,5))*f elseif @fn=="^(2,2)" d=d+real((m3+m2*(m4-m3))^(2,2))*f elseif @fn=="^(1.5,-0.5)" d=d+real((m3+m2*(m4-m3))^(1.5,-0.5))*f elseif @fn=="log^(0,1)" d=d+real(log(m3+m2*(m4-m3))^(0,1))*f elseif @fn=="acosh^0.85" d=d+real(acosh(m3+m2*(m4-m3))^0.85)*f elseif @fn=="exp^(0.15,-5)" d=d+real(exp(m3+m2*(m4-m3))^(0.15,-5))*f elseif @fn=="cube" d=d+(m3+m2*(m4-m3))^3*f elseif @fn=="power4" d=d+(m3+m2*(m4-m3))^4*f elseif @fn=="cosh exp" d=d+real(cosh(exp(m3+m2*(m4-m3))))*f elseif @fn=="cosh sqrt" d=d+real(cosh(sqrt(m3+m2*(m4-m3))))*f elseif @fn=="tan cosh" d=d+real(tan(cosh(m3+m2*(m4-m3))))*f elseif @fn=="sin cosh" d=d+real(sin(cosh(m3+m2*(m4-m3))))*f elseif @fn=="acos abs" d=d+real(acos(abs(m3+m2*(m4-m3))))*f elseif @fn=="log acosh" d=d+real(log(acosh(m3+m2*(m4-m3))))*f elseif @fn=="sqrt acosh" d=d+real(sqrt(acosh(m3+m2*(m4-m3))))*f elseif @fn=="atanh log" d=d+real(atanh(log(m3+m2*(m4-m3))))*f elseif @fn=="acos recip" d=d+real(acos(recip(m3+m2*(m4-m3))))*f elseif @fn=="acos exp" d=d+real(acos(exp(m3+m2*(m4-m3))))*f elseif @fn=="acos acos" d=d+real(acos(acos(m3+m2*(m4-m3))))*f elseif @fn=="exp exp flip" d=d+real(exp(exp(flip(m3+m2*(m4-m3)))))*f elseif @fn=="exp exp abs" d=d+real(exp(exp(abs(m3+m2*(m4-m3)))))*f elseif @fn=="exp exp sqr" d=d+real(exp(exp(sqr(m3+m2*(m4-m3)))))*f elseif @fn=="log log log" d=d+real(log(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="sqrt sqrt sqrt" d=d+real(sqrt(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="log log acosh" d=d+real(log(log(acosh(m3+m2*(m4-m3)))))*f elseif @fn=="sqrt log log" d=d+real(sqrt(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="atanh log log" d=d+real(atanh(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="atan log log" d=d+real(atan(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="acosh log log" d=d+real(acosh(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="acos log log" d=d+real(acos(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="asin log log" d=d+real(asin (log(log(m3+m2*(m4-m3)))))*f elseif @fn=="cos sqrt sqrt" d=d+real(cos(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="cosh sqrt sqrt" d=d+real(cosh(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="round sqrt sqrt" d=d+real(round(sqrt(sqrt(m3+m2*(m4-m3)))))*f endif f=real(fn1(f))^@p6*@p3 c=c*sqrt(-1)/@p3 i=i-1 endwhile if @solid if @invert if d<@sca index=real(fn2(d+1))*@p5+@F*real(#random)/5 else m_Solid=true endif else if d>=@sca index=real(fn2(d+1))*@p5+@F*real(#random)/5 else m_Solid=true endif endif else index=real(fn2(d+1))*@p5+@F*real(#random)/5 endif return index endfunc private: float index default: title="Texturation" int param version caption="Version" default=100 visible=@version<100 endparam param fn caption="Variant" enum="ident""abs""sqrt""sqr""ceil""smoothstep"\ "cuberoot""ceil/acos""exp/acos""log/cotan"\ "conj/log""flip/sqrt""log*abs""flip*log"\ "ident^flip""ident^abs""ident^sqrt""flip^acosh"\ "flip^sqrt""conj^acosh""abs^sqrt""log^flip"\ "log^log""log^sqrt""log^acos"\ "sqr^sqrt""sqr^exp""sqr^abs""cotanh^abs"\ "cotanh^sqrt""acos^sin""acos^acos"\ "acos^acosh""acos^sqrt""acos^flip""acos^floor"\ "cotan*sin""sin*cabs""flip+2*ident""sin+abs+sqr"\ "exp+trunc+ceil""sqr+2*ceil""3*ceil"\ "^(0.1,0.1)""^(0.5,0.5)""^(1,1)""^(1,5)""^(2,2)"\ "^(1.5,-0.5)""log^(0,1)""acosh^0.85""exp^(0.15,-5)"\ "cube""power4""cosh exp""cosh sqrt""tan cosh""sin cosh"\ "acos abs""log acosh""sqrt acosh""atanh log""acos recip"\ "acos exp""acos acos""exp exp flip""exp exp abs""exp exp sqr"\ "log log log""sqrt sqrt sqrt""log log acosh""sqrt log log"\ "atanh log log""atan log log""acosh log log""acos log log"\ "asin log log""cos sqrt sqrt""cosh sqrt sqrt""round sqrt sqrt" endparam param p1 caption="Rotozoom" default=(1,0) endparam param p2 caption="Offset" default=(0,0) endparam param p3 caption="Parameter 1" default=0.5 endparam param p4 caption="Parameter 2" default=0.1 endparam param p5 caption="Parameter 3" default=2.0 endparam param iter caption="Iterations" default=7 min=1 endparam param pow caption="Exponent 1" default=2.0 endparam param p6 caption="Exponent 2" default=1.0 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation2(common.ulb:GradientColoring) { ;This is a modification of Plasma by Mark Townsend (mt.ucl) public: float func ResultIndex(complex pz) int i=0 float a=0 float b=1.0 c=pz*@p1+@p2 while i<@iter float x1=floor(real(c)) float x2=x1+1 float x3=real(c)-floor(real(c)) float x4=x3-1 float y1=floor(imag(c)) float y2=y1+1 float y3=imag(c)-floor(imag(c)) float y4=y3-1 if x1<0 x1=x1+802 endif if x2<0 x2=x2+802 endif if y1<0 y1=y1+802 endif if y2< 0 y2=y2+802 endif float d=x3*x3*(3-2*x3) float f=y3*y3*(3-2*y3) float g1=(x1^2*238%(@p5*10000)+y1)^2%(@p5*10000) float g2=(x1^2*238%(@p5*10000)+y2)^2%(@p5*10000) float g3=(x2^2*238%(@p5*10000)+y1)^2%(@p5*10000) float g4=(x2^2*238%(@p5*10000)+y2)^2%(@p5*10000) float h1=g1^2*521%(@p5*10000)/4%1503-755 float h2=g2^2*521%(@p5*10000)/4%1503-755 float h3=g3^2*521%(@p5*10000)/4%1503-755 float h4=g4^2*521%(@p5*10000)/4%1503-755 float h5=(g1+1)^2*8066%(@p5*10000)/4%1503-802 float h6=(g2+1)^2*8066%(@p5*10000)/4%1503-802 float h7=(g3+1)^2*8066%(@p5*10000)/4%1503-802 float h8=(g4+1)^2*8066%(@p5*10000)/4%1503-802 float j=sqrt(h1^2+h5^2) h1=h1/j h5=h5/j j=sqrt(h2^2+h6^2) h2=h2/j h6=h6/j j=sqrt(h3^2+h7^2) h3=h3/j h7=h7/j j=sqrt(h4^2+h8^2) h4=h4/j h8=h8/j float k1=x3*h1+y3*h5 float k2=x4*h3+y3*h7 float k3=k1+d*(k2-k1) float k4=x3*h2+y4*h6 float k5=x4*h4+y4*h8 float k6=k4+d*(k5-k4) if @fn=="ident" a=a+real(sqr(ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos" a=a+real(sqr(acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip" a=a+real(sqr(flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ceil" a=a+real(sqr(ceil(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp" a=a+real(sqr(exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor" a=a+real(sqr(floor(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="softplus" a=a+real(sqr(log(1+exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="gauss" a=a+real(sqr(exp(-sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="smoothstep" a=a+real(sqr(3*sqr(k3+f*(k6-k3))-2*(k3+f*(k6-k3))^3))*real(fn1(b)) elseif @fn=="sqr+" a=a+real(sqr(sqr(k3+f*(k6-k3))+(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="cuberoot" a=a+real(sqr((k3+f*(k6-k3))^(1/3)))*real(fn1(b)) elseif @fn=="triple" a=a+real(sqr((k3+f*(k6-k3))*3))*real(fn1(b)) elseif @fn=="ident^sqrt" a=a+real(sqr(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ident^abs" a=a+real(sqr(ident(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ident^flip" a=a+real(sqr(ident(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^ceil" a=a+real(sqr(acos(k3+f*(k6-k3))^ceil(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^ident" a=a+real(sqr(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^flip" a=a+real(sqr(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^exp" a=a+real(sqr(acos(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^acos" a=a+real(sqr(acos(k3+f*(k6-k3))^acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^acosh" a=a+real(sqr(acos(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^ident" a=a+real(sqr(flip(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^flip" a=a+real(sqr(flip(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^sqrt" a=a+real(sqr(flip(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^sqr" a=a+real(sqr(flip(k3+f*(k6-k3))^sqr(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^exp" a=a+real(sqr(conj(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^sqrt" a=a+real(sqr(conj(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^acosh" a=a+real(sqr(conj(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^flip" a=a+real(sqr(abs(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^abs" a=a+real(sqr(abs(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^sqrt" a=a+real(sqr(abs(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^ident" a=a+real(sqr(exp(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^abs" a=a+real(sqr(exp(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^exp" a=a+real(sqr(exp(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^acosh" a=a+real(sqr(exp(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^acos" a=a+real(sqr(exp(k3+f*(k6-k3))^acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="log^log" a=a+real(sqr(log(k3+f*(k6-k3))^log(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="log^sqr" a=a+real(sqr(log(k3+f*(k6-k3))^sqr(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqrt^ident" a=a+real(sqr(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqrt^sqrt" a=a+real(sqr(sqrt(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqr^ident" a=a+real(sqr(sqr(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqr^flip" a=a+real(sqr(sqr(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor^sqrt" a=a+real(sqr(floor(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor^exp" a=a+real(sqr(floor(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos acos" a=a+real(sqr(acos(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos ceil" a=a+real(sqr(acos(ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos floor" a=a+real(sqr(acos(floor(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqr acos" a=a+real(sqr(sqr(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt abs" a=a+real(sqr(sqrt(abs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp cos" a=a+real(sqr(exp(cos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp ceil" a=a+real(sqr(exp(ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="recip acos" a=a+real(sqr(recip(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil asin" a=a+real(sqr(ceil(asin(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acos" a=a+real(sqr(ceil(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="floor acos" a=a+real(sqr(floor(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos ident^sqrt" a=a+real(sqr(acos(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqr ident^sqrt" a=a+real(sqr(sqr(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="round ident^sqrt" a=a+real(sqr(round(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil ident^ident" a=a+real(sqr(ceil(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^ident" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acosh^ident" a=a+real(sqr(ceil(acosh(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil ident^flip" a=a+real(sqr(ceil(ident(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^ceil" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^conj" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^conj(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^cabs" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^cabs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^sqr" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acosh^sqr" a=a+real(sqr(ceil(acosh(k3+f*(k6-k3))^sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="trunc ident^ident" a=a+real(sqr(trunc(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="trunc log^ident" a=a+real(sqr(trunc(log(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan ident^ident" a=a+real(sqr(atan(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt sqrt^ident" a=a+real(sqr(sqrt(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^ident" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh exp^ident" a=a+real(sqr(asinh(exp(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh sqrt^ident" a=a+real(sqr(asinh(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh floor^ident" a=a+real(sqr(asinh(floor(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^cabs" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^cabs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^exp" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp log^log" a=a+real(sqr(exp(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt log^log" a=a+real(sqr(sqrt(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="round log^log" a=a+real(sqr(round(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sin exp^exp" a=a+real(sqr(sin(exp(k3+f*(k6-k3))^exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan acos^ident" a=a+real(sqr(atan(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="cotanh acos^ident" a=a+real(sqr(cotanh(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan acos^flip" a=a+real(sqr(atan(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh acos^flip" a=a+real(sqr(asinh(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) endif b=real(fn3(b))^@pow2*@p3+@p7 c=@p9*c/0.5+(@p4*a)+@p8 i=i+1 endwhile if @solid if @invert if a<@sca index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 else m_Solid=true endif else if a>=@sca index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 else m_Solid=true endif endif else index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 endif return index endfunc private: float index default: title="Texturation 2" int param version caption="Version" default=100 visible=@version<100 endparam param fn caption="Variant" enum="ident""acos""flip""ceil""exp""floor"\ "softplus""gauss""smoothstep""sqr+""cuberoot"\ "triple""ident^sqrt""ident^abs""ident^flip"\ "acos^ceil""acos^ident""acos^flip""acos^exp"\ "acos^acos""acos^acosh""flip^ident"\ "flip^flip""flip^sqrt""flip^sqr""conj^exp"\ "conj^sqrt""conj^acosh""abs^flip"\ "abs^abs""abs^sqrt""exp^ident"\ "exp^abs""exp^exp""exp^acosh""exp^acos"\ "log^log""log^sqr""sqrt^ident""sqrt^sqrt"\ "sqr^ident""sqr^flip""floor^sqrt""floor^exp"\ "acos acos""acos ceil""acos floor""sqr acos"\ "sqrt abs""exp cos""exp ceil""recip acos"\ "ceil asin""ceil acos""floor acos"\ "acos ident^sqrt""sqr ident^sqrt""round ident^sqrt"\ "ceil ident^ident""ceil log^ident""ceil acosh^ident"\ "ceil ident^flip""ceil log^ceil""ceil log^conj"\ "ceil log^cabs""ceil log^sqr""ceil acosh^sqr"\ "trunc ident^ident""trunc log^ident""atan ident^ident"\ "sqrt sqrt^ident""asinh ident^ident""asinh exp^ident"\ "asinh sqrt^ident""asinh floor^ident""asinh ident^cabs"\ "asinh ident^exp""exp log^log""sqrt log^log""round log^log"\ "sin exp^exp""atan acos^ident""cotanh acos^ident"\ "atan acos^flip""asinh acos^flip" endparam param p1 caption="Rotozoom" default=(1,0) endparam param p2 caption="Offset" default=(0,0) endparam param pow caption="Exponent 1" default=1.0 endparam param pow2 caption="Exponent 2" default=1.0 endparam param p3 caption="Parameter 1" default=0.5 endparam param p4 caption="Parameter 2" default=(0,0) endparam param p5 caption="Parameter 3" default=0.5971 endparam param p6 caption="Parameter 4" default=1.0 endparam param p7 caption="Parameter 5" default=0.0 endparam param p8 caption="Parameter 6" default=(0,0) endparam param p9 caption="Parameter 7" default=(1,0) endparam param iter caption="Iterations" default=7 min=1 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc func fn3 default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation3(common.ulb:GradientColoring) { ;This is a modification of 'Perlin Noise' by Mark Townsend (mt.ucl) ;Original code by Ken Perlin public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i2=0 i3=0 i4=0 seed=@seed while i2<256 i[i2]=i2 i3=0 while i3<2 seed=random(seed) a[i2,i3]=seed/#randomrange i3=i3+1 endwhile m=sqrt(a[i2,0]*a[i2,0]+a[i2,1]*a[i2,1]) a[i2,0]=a[i2,0]/m a[i2,1]=a[i2,1]/m i2=i2+1 endwhile i2=0 while i2<256 i4=i[i2] seed=random(seed) i3=abs(seed)%256 i[i2]=i[i3] i[i3]=i4 i2=i2+1 endwhile i2=0 while i2<256 i[256+i2]=i[i2] i3=0 while i3<2 a[256+i2,i3]=a[i2,i3] i3=i3+1 endwhile i2=i2+1 endwhile endfunc float func ResultIndex(complex pz) int i5=0 float s=0 float n=1.0 r=(0,1)^(1/3) w=pz*@p6+@p7 while i5<@p1 float p=real(w)%4096+4096 int i6=floor(p)%256 int i7=(i6+1)%256 float t1=p-floor(p) float t2=t1-1 p=imag(w)%4096+4096 int i8=floor(p)%256 int i9=(i8+1)%256 float t3=p-floor(p) float t4=t3-1 int i10=i[i[i6]+i8] int i11=i[i[i7]+i8] int i12=i[i[i6]+i9] int i13=i[i[i7]+i9] float t5=(sqr(t1)*(3-2*t1)) float t6=(sqr(t3)*(3-2*t3)) float t7=t1*a[i10,0]+t3*a[i10,1] float t8=t2*a[i11,0]+t3*a[i11,1] float t9=t7+t5*(t8-t7) t7=t1*a[i12,0]+t4*a[i12,1] t8=t2*a[i13,0]+t4*a[i13,1] float t10=t7+t5*(t8-t7) t10=(t9+t6*(t10-t9))^@p4 if @V=="1" s=s+imag(@p3*@fn1(atanh(5*t10)))*n elseif @V=="2" s=s+real(@p3*@fn1(t10))*n elseif @V=="3" s=s+n^real(@p3*@fn1(-0.2*t10)) elseif @V=="4" s=s+imag(@p3*@fn1(flip(-0.15*t10)))*n^imag(@p3*@fn1(flip(-0.15*t10))) elseif @V=="5" s=s+real(@p3*@fn1(abs(t10)))*n^real(@p3*@fn1(abs(t10))) elseif @V=="6" s=s+real(@p3*@fn1(t10))*n^imag(@p3*@fn1(t10)) elseif @V=="7" s=s+real(@p3*@fn1(abs(t10)))*n elseif @V=="8" s=s+real(@p3*@fn1(sqrt(t10)))*n elseif @V=="9" s=s+real(@p3*@fn1(ceil(t10)))*n elseif @V=="10" s=s+real(@p3*@fn1(atanh(50*t10)))*n elseif @V=="11" s=s+real(@p3*@fn1(atanh(flip(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(floor(exp(t10^t10)))) elseif @V=="12" s=s+imag(@p3*@fn1(log(t10)))*n elseif @V=="13" s=s+imag(@p3*@fn1(sqrt(t10)))*n elseif @V=="14" s=s+imag(@p3*@fn1(asin(50*t10)))*n elseif @V=="15" s=s+n^real(@p3*@fn1(cabs(t10))) elseif @V=="16" s=s+real(@p3*@fn1(0.13*atan(abs(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(ceil(atan(-5.145*t10^t10)))) elseif @V=="17" s=s+n^real(@p3*@fn1(sqr(t10))) elseif @V=="18" s=s+n^real(@p3*@fn1(ceil(t10))) elseif @V=="19" s=s+imag(@p3*@fn1(sqrt(t10)))*n^imag(@p3*@fn1(sqrt(t10))) elseif @V=="20" s=s+real(@p3*@fn1(0.13*acos(log(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(floor(tan(-5.145*t10^t10)))) elseif @V=="21" s=s+real(@p3*@fn1(abs(t10)))*n^imag(@p3*@fn1(abs(t10))) elseif @V=="22" s=s+real(@p3*@fn1(exp(t10)))*n^imag(@p3*@fn1(exp(t10))) elseif @V=="23" s=s+real(@p3*@fn1(sqr(t10)))*n^imag(@p3*@fn1(sqr(t10))) elseif @V=="24" s=s+real(@p3*@fn1(cosh(t10)))*n^imag(@p3*@fn1(cosh(t10))) elseif @V=="25" s=s+real(@p3*@fn1(cos(t10)))*n^imag(@p3*@fn1(cos(t10))) elseif @V=="26" s=s+n*real(@p3*@fn1(t10))^real(@p3*@fn1(cabs(t10))) elseif @V=="27" s=s+n*real(@p3*@fn1(t10))^real(@p3*@fn1(sqrt(t10))) elseif @V=="28" s=s+n*real(@p3*@fn1(exp(1.2*t10)))^real(@p3*@fn1(cotan(t10))) elseif @V=="29" s=s+n*real(@p3*@fn1(exp(1.2*t10)))^real(@p3*@fn1(-6*acos(t10))) elseif @V=="30" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(floor(t10))) elseif @V=="31" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(t10)) elseif @V=="32" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(abs(t10))) elseif @V=="33" s=s+real(@p3*@fn1(0.13*acos(trunc(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87^floor(recip(-5.15*t10^t10)))) elseif @V=="34" s=s+n*real(@p3*@fn1(sqrt(t10)))^real(@p3*@fn1(abs(t10))) elseif @V=="35" s=s+n*real(@p3*@fn1(sqrt(t10)))^real(@p3*@fn1(sqr(t10))) elseif @V=="36" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(sin(t10))) elseif @V=="37" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(-1.6*cabs(t10))) elseif @V=="38" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(-1.6*conj(t10))) elseif @V=="39" s=s+n*real(@p3*@fn1(acos(t10)))^real(@p3*@fn1(acos(t10))) elseif @V=="40" s=s+n*imag(@p3*@fn1(atan(t10)))^real(@p3*@fn1(sqr(t10))) elseif @V=="41" s=s+n*real(@p3*@fn1(9*sqrt(acos(t10)))) elseif @V=="42" s=s+n*real(@p3*@fn1(sqr(t10)))^n elseif @V=="43" s=s+n*real(@p3*@fn1(sqr(exp(t10))))^n elseif @V=="44" s=s+n*real(@p3*@fn1(acos(atanh(t10))))^n elseif @V=="45" s=s+n*real(@p3*@fn1(acos(sqrt(t10))))^n elseif @V=="46" s=s+n*real(@p3*@fn1(acos(abs(t10))))^n elseif @V=="47" s=s+n*real(@p3*@fn1(3.33*cotan(acos(t10))))^n elseif @V=="48" s=s+n*real(@p3*@fn1(-0.41*exp(t10^(-0.25))))^(n*real(t10)) elseif @V=="49" s=s+n*real(@p3*@fn1(-0.41*sqr(t10^(-0.58))))^(n*real(t10)) elseif @V=="50" s=s+n*real(@p3*@fn1(cotan(flip(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="51" s=s+n*real(@p3*@fn1(cotan(cabs(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="52" s=s+n*real(@p3*@fn1(tan(exp(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="53" s=s+n*real(@p3*@fn1((-10)*sqr(round (t10+(-3.5)^t10))))^(n*real(t10)) elseif @V=="54" s=s+n*real(@p3*@fn1((-10)*log(round (t10+(-3.5)^t10))))^(n*real(t10)) elseif @V=="55" s=s+real(@p3*@fn1(t10^0.085))*n^imag(@p3*@fn1(flip(t10))) elseif @V=="56" s=s+real(@p3*@fn1(t10)^0.085)*n^imag(@p3*@fn1(flip(t10)^7.5)) elseif @V=="57" s=s+real(@p3*@fn1(abs(t10)^0.5))*n^imag(@p3*@fn1(flip(t10)^(-0.24562))) elseif @V=="58" s=s+real(@p3*@fn1(sqrt(t10)^0.5))*n^imag(@p3*@fn1(flip(t10)^(-0.24562))) elseif @V=="59" s=s+real(@p3*@fn1(0.13*acos(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(tan(-5.15*t10^t10)))) elseif @V=="60" s=s+real(@p3*@fn1(ceil(t10)^0.5))*n^imag(@p3*@fn1(cabs(t10)^(-0.24562))) elseif @V=="61" s=s+real(@p3*@fn1(sinh(t10)+11.55))*n^imag(@p3*@fn1(log(t10))) elseif @V=="62" s=s+real(@p3*@fn1(2.16*sqr(t10)+10.22))*n^imag(@p3*@fn1(tan(t10))) elseif @V=="63" s=s+real(@p3*@fn1(0.13*acos(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(recip(-5.15*t10^t10)))) elseif @V=="64" s=s+real(@p3*@fn1(sqr(t10)^t10))*n^n elseif @V=="65" s=s+real(@p3*@fn1(sqr(sqr(t10))^t10))*n^n elseif @V=="66" s=s+real(@p3*@fn1(acosh(sqr(t10))^t10))*n^n elseif @V=="67" s=s+real(@p3*@fn1(0.13*asinh(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(tan(-5.15*t10^t10)))) elseif @V=="68" s=s+real(@p3*@fn1(0.25*sqr(acos(-2.36*t10))^t10))*n^n elseif @V=="69" s=s+real(@p3*@fn1(3.2*sqrt(acosh(-2.36*t10))^t10))*n^n elseif @V=="70" s=s+real(@p3*@fn1(3.2*round(trunc(-4.27*t10))^t10))*n^n elseif @V=="71" s=s+real(@p3*@fn1(3.2*flip(acosh(-4.27*t10))^t10))*n^n elseif @V=="72" s=s+real(@p3*@fn1(t10^t10))*n^n elseif @V=="73" s=s+imag(@p3*@fn1(flip(-0.15*t10^t10)))*n^n^imag(@p3*@fn1(flip(-0.15*t10^t10))) elseif @V=="74" s=s+real(@p3*@fn1(ceil(t10^t10)))*n^n elseif @V=="75" s=s+n^n^real(@p3*@fn1(exp(t10^t10))) elseif @V=="76" s=s+n^n^real(@p3*@fn1(sqr(t10^t10))) elseif @V=="77" s=s+n^n^real(@p3*@fn1(ceil(t10^t10))) elseif @V=="78" s=s+n^n*real(@p3*@fn1(log(t10^t10)))^real(@p3*@fn1(floor(t10^t10))) elseif @V=="79" s=s+n^n*real(@p3*@fn1(log(t10^t10)))^real(@p3*@fn1(abs(t10^t10))) elseif @V=="80" s=s+n^n*imag(@p3*@fn1(atan(t10^t10)))^real(@p3*@fn1(sqr(t10^t10))) elseif @V=="81" s=s+n^n*real(@p3*@fn1(sqr(t10^t10)))^n^n elseif @V=="82" s=s+n^n*real(@p3*@fn1(acos(sqrt(t10^t10))))^n^n elseif @V=="83" s=s+real(@p3*@fn1(ceil(t10^t10)^0.5))*n^n^imag(@p3*@fn1(cabs(t10^t10)^(-0.24562))) elseif @V=="84" s=s+real(@p3*@fn1(2.16*ceil(t10^t10)+0.7533))*n^n^imag(@p3*@fn1(round(t10^t10))) elseif @V=="85" s=s+real(@p3*@fn1(0.13*asinh(log(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqr(round(t10^t10)))) elseif @V=="86" s=s+real(@p3*@fn1(-1.55*asin(recip(-0.79*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2.22*acosh(3.91*t10^t10))) elseif @V=="87" s=s+real(@p3*@fn1(1.93*ceil(sqrt(-0.93*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2.18*ceil(atanh(t10^t10)))) elseif @V=="88" s=s+real(@p3*@fn1(-0.21*asinh(sin(3.78*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2*sqr(acos(t10^t10)))) elseif @V=="89" s=s+real(@p3*@fn1(-0.16*cos(round(t10^t10))+0.83 ))*n^n^imag(@p3*@fn1(t10^t10)) elseif @V=="90" s=s+real(@p3*@fn1(-0.16*cos(round(t10^t10))+0.83))*n^n^imag(@p3*@fn1(atanh(atanh(t10^t10)))) elseif @V=="91" s=s+real(@p3*@fn1(0.05*tan(1.29*t10^t10)+0.83))*n^n^imag(@p3*@fn1(0.48*trunc(flip(-2.4*t10^t10)))) elseif @V=="92" s=s+real(@p3*@fn1(5.44*recip(floor(-40*t10^t10))+0.17))*n^n^imag(@p3*@fn1(-20.25*sin(tan(t10^t10)))) elseif @V=="93" s=s+real(@p3*@fn1(-0.08*log(abs(-0.35*t10^t10))+0.187))*n^n^imag(@p3*@fn1(log(abs(0.9*t10^t10)))) elseif @V=="94" s=s+real(@p3*@fn1(-0.08*sqr(abs(-0.35*t10^t10))+0.27 ))*n^n^imag(@p3*@fn1(sqr(abs(0.9*t10^t10)))) elseif @V=="95" s=s+real(@p3*@fn1(-0.08*sqr(atanh(-0.35*t10^t10))+0.27 ))*n^n^imag(@p3*@fn1(sqr(atanh(0.9*t10^t10)))) elseif @V=="96" s=s+real(@p3*@fn1(0.13*acos(floor(6.28*t10^t10))+0.93))*n^n^imag(@p3*@fn1(0.43*sqr(abs(6.3*t10^t10)))) endif w=@p5*w*r/0.5+@p8 n=n*@p2 i5=i5+1 endwhile if @solid if @invert if s<@sca index=(s+1)*0.5+@F*real(#random)/5 else m_Solid=true endif else if s>=@sca index=(s+1)*0.5+@F*real(#random)/5 else m_Solid=true endif endif else index=(s+1)*0.5+@F*real(#random)/5 endif return index endfunc private: int i[514] float a[514,2] int i2 int i3 int i4 int seed float m float index default: title="Texturation 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96" endparam param p6 caption="Rotozoom" default=(1,0) endparam param p7 caption="Offset" default=(0,0) endparam param @seed caption="Random Seed" default=1684327 endparam param p1 caption="Parameter 1" default=5 endparam param p2 caption="Parameter 2" default=0.5 endparam param p3 caption="Parameter 3" default=1.0 endparam param p4 caption="Parameter 4" default=1.0 endparam Param p5 default=(1,0) endparam Param p8 caption="Parameter 6" default=(0,0) endparam func fn1 caption="Function" default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=1.5 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Zetacol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" if |pz|<1 pz=pz/|pz| endif elseif @Va=="8" pz=(pz-1i)/(pz+1i) elseif @Va=="9" pz=(pz-2)/(1-2*pz) elseif @Va=="10" pz=(pz-3)/(1-3*pz) elseif @Va=="11" pz=(pz+2)/(1+2*pz) elseif @Va=="12" pz=(pz-1)/(pz+1) elseif @Va=="13" pz=(pz-fpixel)/(pz+fpixel) elseif @Va=="14" pz=pz+pz^2 elseif @Va=="15" pz=pz+1/pz elseif @Va=="16" pz=pz-pz^2 elseif @Va=="17" pz=pz-1/pz elseif @Va=="18" pz=(pz-1/pz)/(pz+1/pz) endif if @v=="3" pz=@p3*fn3((pz^3-pz^2)/4)+@p4 elseif @v=="4" pz=@p3*fn3((6*pz^4-9*pz^3+pz^2+pz)/30)+@p4 elseif @v=="5" pz=@p3*fn3((2*pz^5-4*pz^4+pz^3+pz^2)/12)+@p4 elseif @v=="6" pz=@p3*fn3((6*pz^6-15*pz^5+6*pz^4+6*pz^3-pz^2-pz)/42)+@p4 elseif @v=="7" pz=@p3*fn3((3*pz^7-9*pz^6+5*pz^5+5*pz^4-2*pz^3-2*pz^2)/24)+@p4 elseif @v=="8" pz=@p3*fn3((10*pz^8-35*pz^7+25*pz^6+25*pz^5-17*pz^4-17*pz^3+3*pz^2+3*pz)/90)+@p4 elseif @v=="9" pz=@p3*fn3((2*pz^9-8*pz^8+7*pz^7+7*pz^6-7*pz^5-7*pz^4+3*pz^3+3*pz^2)/20)+@p4 endif if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<@adj if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: float a float b float index int i int i2 complex fpixel complex zold default: title="Zetacol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="3""4""5""6""7""8""9" endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc func fn3 caption="Polynomial Function" default=ident() endfunc param adj caption="Adjustment" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.185 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_NewtonPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=@iter if i>=#maxiter i=#maxiter-1 endif fpixel=pz a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif elseif @Va=="3" if |pz|>1 pz=pz/|pz| endif elseif @Va=="4" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="8" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="9" pz=pz+pz^2 elseif @Va=="10" pz=pz-pz^2 elseif @Va=="11" pz=pz+1/pz elseif @Va=="12" pz=pz-1/pz elseif @Va=="13" pz=pz+pz^2+1/pz elseif @Va=="14" pz=pz-pz^2-1/pz elseif @Va=="15" pz=(pz+1.5)/(1+1.5*pz) elseif @Va=="16" pz=(pz+2.5)/(1+2.5*pz) endif if @v=="1" pz=5-2*(pz-1) elseif @v=="2" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3) elseif @v=="3" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3)-0.1*(pz-1)*(pz-3)*(pz-4) elseif @v=="4" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3)-0.1*(pz-1)*(pz-3)*(pz-4)+0.003*(pz-1)*(pz-3)*(pz-4)*(pz-4.5) elseif @v=="5" pz=6+3*(pz-1) elseif @v=="6" pz=-0.00005-1.4775*pz-0.00001*pz^2+4.83484*pz^3 elseif @v=="7" pz=2-(pz-2)+0.5*(pz-2)*(pz-3) elseif @v=="8" pz=-39+21*(pz+2)-6*(pz+2)*pz+2*(pz+2)*pz*(pz-1) elseif @v=="9" pz=5+2*(pz-1) elseif @v=="10" pz=3+4*(pz-2)/3 elseif @v=="11" pz=21-10*(pz+2)+3*(pz+2)*pz-3*(pz+2)*pz*(pz-1) elseif @v=="12" pz=0.1+2*(pz-2)+3*(pz-2)*(pz-1) elseif @v=="13" pz=2+3*(pz-4)-5*(pz-4)*(pz+7) elseif @v=="14" pz=1+7*pz/6+pz^2/2-2*pz^3/3 elseif @v=="15" pz=3-5*(pz+7) elseif @v=="16" pz=1+1.25*pz+0.125*pz*(pz-1)-0.20833*pz*(pz-1)*(pz-2) endif if @F3=="sin" pz=sin(pz) elseif @F3=="cos" pz=cos(pz) elseif @F3=="flipsin" pz=flip(sin(pz)) elseif @F3=="sqrsin" pz=sqr(sin(pz)) elseif @F3=="sqrcos" pz=sqr(cos(pz)) elseif @F3=="flipcos" pz=flip(cos(pz)) elseif @F3=="flipcotan" pz=flip(cotan(pz)) elseif @F3=="expflip" pz=exp(flip(pz)) endif pz=@p3*pz+@p4 if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<0 if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: int i float a float b complex zold complex fpixel int i2 float index default: title="Newton Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16" default=0 endparam param f3 caption="Polynomial Function" enum="sin""cos""flipsin""sqrsin""sqrcos""flipcos""flipcotan""expflip" endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.185 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Lifcol2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" pz=pz-pz^2 elseif @Va=="3" pz=pz-cotanh(pz) elseif @Va=="4" pz=pz+pz^2 elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="8" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="9" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="10" pz=pz-1/pz elseif @Va=="11" pz=pz+abs(pz) elseif @Va=="12" pz=pz+exp(pz) elseif @Va=="13" pz=pz+cos(pz) elseif @Va=="14" pz=pz+trunc(pz) elseif @Va=="15" pz=pz-conj(pz) elseif @Va=="16" pz=pz+1/pz elseif @Va=="17" pz=pz-cotan(pz) elseif @Va=="18" pz=pz+1/flip(pz) elseif @Va=="19" pz=pz+1/conj(pz) elseif @Va=="20" pz=pz+1/sqr(pz) elseif @Va=="21" pz=pz-1/conj(pz) elseif @Va=="22" pz=pz-1/abs(pz) endif if @v=="1" pz=(1+pz)*exp(pz) elseif @v=="2" pz=(1+3*pz+pz^2)*exp(pz) elseif @v=="3" pz=(1+7*pz+6*pz^2+pz^3)*exp(pz) elseif @v=="4" pz=(1+15*pz+25*pz^2+10*pz^3+pz^4)*exp(pz) elseif @v=="5" pz=0.1*(1+31*pz+90*pz^2+65*pz^3+15*pz^4+pz^5)*exp(pz) elseif @v=="6" pz=0.1*(1+63*pz+301*pz^2+350*pz^3+140*pz^4+21*pz^5+pz^6)*exp(pz) elseif @v=="7" pz=0.01*(1+127*pz+966*pz^2+1701*pz^3+1050*pz^4+266*pz^5+28*pz^6+pz^7)*exp(pz) elseif @v=="8" pz=0.01*(1+255*pz+3025*pz^2+7770*pz^3+6951*pz^4+2646*pz^5+462*pz^6+36*pz^7+pz^8)*exp(pz) elseif @v=="9" pz=0.001*(1+511*pz+9330*pz^2+34105*pz^3+42525*pz^4+22827*pz^5+5880*pz^6+750*pz^7+45*pz^8+pz^9)*exp(pz) elseif @v=="10" pz=0.001*(1+1023*pz+28501*pz^2+145750*pz^3+246730*pz^4+179487*pz^5+63987*pz^6+11880*pz^7+1155*pz^8+55*pz^9+pz^10)*exp(pz) elseif @v=="11" pz=0.0001*(1+2047*pz+86526*pz^2+611501*pz^3+1379400*pz^4+1323652*pz^5+627396*pz^6+159027*pz^7+22275*pz^8+1705*pz^9+66*pz^10+pz^11)*exp(pz) endif pz=@p3*fn3(pz)+@p4 if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if |pz-zold|<0 if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: int i float a float b complex zold complex fpixel int i2 float index default: title="Lifcol 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="1""2""3""4""5""6""7""8""9""10""11" default=0 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc func fn3 caption="Polynomial Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_KleinPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if k2<=k1 if @v=="Tv" d=cabs(@p3*fn2(fn3(pz^4+2*sqrt(3)*sqrt(-1)*pz^2+1))+@p4) elseif @v=="Tf" d=cabs(@p3*fn2(fn3(pz^4-2*sqrt(3)*sqrt(-1)*pz^2+1))+@p4) elseif @v=="Ov" d=cabs(@p3*fn2(fn3(pz^5-pz))+@p4) elseif @v=="Of" d=cabs(@p3*fn2(fn3(pz^8+14*pz^4+1))+@p4) elseif @v=="Oe" d=cabs(@p3*fn2(fn3(pz^12-33*pz^8-33*pz^4+1))+@p4) elseif @v=="Yv" d=cabs(@p3*fn2(fn3(pz^11+11*pz^6-pz))+@p4) elseif @v=="Yf" d=cabs(@p3*fn2(fn3(pz^20-228*pz^15+494*pz^10+228*pz^5+1))+@p4) elseif @v=="Ye" d=cabs(@p3*fn2(fn3(pz^30+522*pz^25-10005*pz^20-10005*pz^10-522*pz^5+1))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Klein Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="Tv""Tf""Ov""Of""Oe""Yv""Yf""Ye" default=3 endparam param p1 caption="Z Parameter 1" default=(0.25,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param p5 caption="Detail" default=4 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param p6 caption="Grain" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_KleinPolycol2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif elseif @Va=="3" if |pz|>1 pz=pz/|pz| endif elseif @Va=="4" pz=pz+exp(pz) elseif @Va=="5" pz=pz+sqr(pz) elseif @Va=="6" pz=pz+cosh(pz) elseif @Va=="7" pz=pz+cos(pz) elseif @Va=="8" pz=pz+ceil(pz) elseif @Va=="9" pz=pz+floor(pz) elseif @Va=="10" pz=pz-sqrt(pz) elseif @Va=="11" pz=pz-sqr(pz) elseif @Va=="12" pz=pz-cotanh(pz) elseif @Va=="13" pz=pz-cotan(pz) elseif @Va=="14" pz=pz-cosh(pz) elseif @Va=="15" pz=pz-cos(pz) elseif @Va=="16" pz=pz-ceil(pz) elseif @Va=="17" pz=pz-floor(pz) elseif @Va=="18" pz=pz-round(pz) elseif @Va=="19" pz=pz+1/cabs(pz) elseif @Va=="20" pz=pz+1/abs(pz) elseif @Va=="21" pz=pz+1/log(pz) elseif @Va=="22" pz=pz+1/sqr(pz) elseif @Va=="23" pz=pz-1/conj(pz) elseif @Va=="24" pz=pz-1/abs(pz) elseif @Va=="25" pz=pz-1/cosh(pz) elseif @Va=="26" pz=pz*cosh(pz) elseif @Va=="27" pz=pz*cos(pz) elseif @Va=="28" pz=pz/exp(pz) elseif @Va=="29" pz=pz/log(pz) elseif @Va=="30" pz=pz/acos(pz) endif if @v=="Tv" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^4+2*sqrt(3)*sqrt(-1)*pz^2+1))))-3*@p4) elseif @v=="Tf" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^4-2*sqrt(3)*sqrt(-1)*pz^2+1))))-3*@p4) elseif @v=="Ov" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^5-pz))))-3*@p4) elseif @v=="Of" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^8+14*pz^4+1))))-3*@p4) elseif @v=="Oe" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^12-33*pz^8-33*pz^4+1))))-3*@p4) elseif @v=="Yv" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^11+11*pz^6-pz))))-3*@p4) elseif @v=="Yf" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^20-228*pz^15+494*pz^10+228*pz^5+1))))-3*@p4) else float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^30+522*pz^25-10005*pz^20-10005*pz^10-522*pz^5+1))))-3*@p4) endif if b=@sca index=sqrt(a)*75/256 else m_Solid=true endif else if sqrt(a)*75/256<@sca index=sqrt(a)*75/256 else m_Solid=true endif endif else index=sqrt(a)*75/256 endif return index endfunc private: float a float index default: title="Klein Polycol 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Polynomial" enum="Tv""Tf""Ov""Of""Oe""Yv""Yf""Ye" default=3 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=0.1 endparam param p4 caption="Polynomial Parameter 2" default=0.0 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param sca caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_PoincaréPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v2==0 pz=pz elseif @v2==1 pz=pz+flip(pz) elseif @v2==2 pz=pz+abs(flip(pz)) elseif @v2==3 pz=pz+exp(flip(pz)) elseif @v2==4 pz=pz+cosh(flip(pz)) elseif @v2==5 pz=pz+conj(pz) elseif @v2==6 pz=pz+abs(conj(pz)) elseif @v2==7 pz=pz+cabs(pz) elseif @v2==8 pz=pz+log(cabs(pz)) elseif @v2==9 pz=pz+log(abs(pz)) elseif @v2==10 pz=pz+exp(pz) elseif @v2==11 pz=pz+recip(exp(pz)) elseif @v2==12 pz=pz+tanh(log(pz)) elseif @v2==13 pz=pz+sqrt(sqrt(pz)) elseif @v2==14 pz=pz+sqr(pz) elseif @v2==15 pz=pz-abs(conj(pz)) elseif @v2==16 pz=pz-atan(conj(pz)) elseif @v2==17 pz=pz-cos(conj(pz)) elseif @v2==18 pz=pz-log(cabs(pz)) elseif @v2==19 pz=pz-exp(pz) elseif @v2==20 pz=pz-sqr(exp(pz)) elseif @v2==21 pz=pz-atanh(exp(pz)) elseif @v2==22 pz=pz-recip(log(pz)) elseif @v2==23 pz=pz+(fpixel) elseif @v2==24 pz=pz+flip(fpixel) elseif @v2==25 pz=pz*fpixel elseif @v2==26 pz=pz/fpixel elseif @v2==27 pz=pz+(pz+0.5)^3 elseif @v2==28 pz=pz+abs(pz+0.5)^2 elseif @v2==29 pz=pz+exp(pz-0.5)^2 elseif @v2==30 pz=pz+round(pz+0.5)^2 elseif @v2==31 pz=pz+(pz-0.5)^2 elseif @v2==32 pz=pz+abs(pz-0.5)^2 elseif @v2==33 pz=pz+cos(pz-0.5)^2 elseif @v2==34 pz=pz+cos(pz+0.5)^3 elseif @v2==35 pz=pz+cabs(pz-0.5)^3 elseif @v2==36 pz=pz+abs(pz-0.5)^3 else pz=pz+exp(pz-0.5)^3 endif if k2<=k1 if @v=="Q1(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4))+@p4) elseif @v=="Q2(A2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3))+@p4) elseif @v=="Q3(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3-2*pz^4))+@p4) elseif @v=="Q8(A3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^2+pz^5+pz^6))+@p4) elseif @v=="Q9(A3)" d=cabs(@p3*fn2(fn3(1-pz-3*pz^2-pz^4+pz^5+3*pz^6))+@p4) elseif @v=="Q10(B3)" d=cabs(@p3*fn2(fn3(1-pz-3*pz^3+pz^4-pz^5+pz^8+2*pz^9))+@p4) elseif @v=="Q11(B3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4-pz^5+pz^8+pz^9))+@p4) elseif @v=="Q12(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-3*pz^3-pz^6+pz^7+pz^8+3*pz^9))+@p4) elseif @v=="Q16(G2)" d=cabs(@p3*fn2(fn3(1-2*pz+pz^2-pz^4+pz^6))+@p4) elseif @v=="Q17(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-2*pz^5+pz^6+pz^8+pz^9))+@p4) elseif @v=="Q18(G2)" d=cabs(@p3*fn2(fn3(1-2*pz+pz^3-pz^4-pz^5+2*pz^6))+@p4) elseif @v=="Q19(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4-pz^5+pz^6+pz^8+pz^9))+@p4) elseif @v=="Q20(G2)" d=cabs(@p3*fn2(fn3(1-2*pz-2*pz^5+3*pz^6))+@p4) elseif @v=="Q21(D4)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^2-pz^3+2*pz^5+pz^6+2*pz^7+3*pz^8-pz^9+pz^10-pz^11-2*pz^12))+@p4) elseif @v=="Q22(B4)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3+pz^7+2*pz^8+pz^9+pz^10+pz^11-pz^15-pz^16))+@p4) elseif @v=="Q23(D4)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4+pz^6+pz^7+2*pz^8-pz^11-pz^12))+@p4) elseif @v=="Q24(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^5))+@p4) elseif @v=="Q25(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3))+@p4) elseif @v=="Q26(A2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2))+@p4) elseif @v=="Q27(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3))+@p4) elseif @v=="Q28(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^5))+@p4) elseif @v=="Q29(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3-pz^4-pz^5))+@p4) elseif @v=="Q36(A3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2+pz^5))+@p4) elseif @v=="Q37(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3+pz^8))+@p4) elseif @v=="Q38(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^4+pz^6+pz^8))+@p4) elseif @v=="Q39(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3+pz^7+pz^8))+@p4) elseif @v=="Q40(B3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4-pz^5+pz^6+pz^8))+@p4) elseif @v=="Q43(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^4+pz^8))+@p4) elseif @v=="Q44(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^5+pz^6+pz^8))+@p4) elseif @v=="Q46(D4)" d=cabs(@p3*fn2(fn3(1-pz^2-pz^3-pz^4-pz^5-pz^6+pz^8+pz^9+2*pz^10+2*pz^11+2*pz^12+pz^13+pz^14-pz^16-pz^17-pz^18-pz^19))+@p4) elseif @v=="Q47(D5)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^4+pz^5+pz^6+pz^7+pz^9+pz^10-pz^11-pz^13-pz^14-pz^15+pz^19))+@p4) elseif @v=="Q48(B5)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4+pz^6-pz^7+2*pz^8-pz^9+pz^10+pz^12+pz^13-pz^14-pz^15-pz^18-pz^20+pz^24))+@p4) elseif @v=="Pg2" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)))+@p4) elseif @v=="Pf4" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^23)))+@p4) elseif @v=="Pe6" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^9)*(1+pz^11)*(1+pz^15)*(1+pz^17)*(1+pz^23)))+@p4) elseif @v=="Pe7" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^19)*(1+pz^23)*(1+pz^27)*(1+pz^35)))+@p4) elseif @v=="Pe8" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^15)*(1+pz^23)*(1+pz^27)*(1+pz^35)*(1+pz^39)*(1+pz^47)*(1+pz^59)))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<=@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 endif return index endfunc private: complex fpixel int k1 float a float b float c float d float f int k2 float index default: title="Poincaré Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="Q1(B2)""Q2(A2)""Q3(B2)"\ "Q8(A3)""Q9(A3)""Q10(B3)""Q11(B3)""Q12(B3)"\ "Q16(G2)""Q17(B3)""Q18(G2)""Q19(B3)""Q20(G2)""Q21(D4)""Q22(B4)""Q23(D4)"\ "Q24(G2)""Q25(B2)""Q26(A2)""Q27(B2)""Q28(G2)""Q29(G2)"\ "Q36(A3)""Q37(B3)""Q38(B3)""Q39(B3)""Q40(B3)"\ "Q43(B3)""Q44(B3)"\ "Q46(D4)""Q47(D5)""Q48(B5)"\ "Pg2""Pf4""Pe6""Pe7""Pe8" endparam param V2 caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param p1 caption="Z parameter 1" default=(0.5,0) endparam param p2 caption="Z parameter 2" default=(0,0) endparam param p3 caption="Polynomial parameter 1" default=(1,0) endparam param p4 caption="Polynomial parameter 2" default=(0,0) endparam param p5 caption="Detail" default=5 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param p6 caption="Grain" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Sailor'sTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=real(@adj1) b=imag(@adj1) c=(b-1)/@adj2 d=0.0 f=0.0 i=0 g=253.0 h=false j=(0,0) endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if !h if @S==true pz=abs(fn1(pz)) else pz=fn1(pz) endif pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) if @V=="Conchoid 1" pz=(x^2+y^2+(@p3+1)^2-(@p2+1i)^2)^2*(y^2+(x+(@p1+1i))^2)-4*(@p3+1)^2*(x*(x+(@p1+1i))+y^2)^2 elseif @V=="Conchoid 2" pz=(x-(@p2-0.5))^2*(x^2+y^2)-(@p1+1)^2*x^2 elseif @V=="Conchoid 3" pz=@p1*(x+(@p1+1))*(x^2+y^2)-(@p2-0.5)^2*x^2 elseif @V=="Conchoid 4" pz=(x^2+x*y+@p1*x-@p2^2)^2-(@p2^2-x^2)*(x-y+@p1)^2 elseif @V=="Conchoid 5" pz=2*y^2*(x^2+y^2)-2*@p2*y^2*(x+y)+(@p2^2-3*@p1^2)*y^2-@p1^2*x^2+2*@p1^2*@p2*(x+y)+@p1^2*(@p1^2-@p2^2) elseif @V=="Conchoid 6" pz=(x^2+y^2-(@p1-0.5)*(@p2-1.75)*x)^2-(x^2+y^2)*((@p2-1.75)*x-((@p1-0.5)+1))^2 elseif @V=="Duffing 1" pz=y+flip(x-x^3-@p1*y+@p2) elseif @V=="Duffing 2" pz=y+flip(-@p1*x-@p2*x^3+@p3) elseif @V=="Duffing 3" pz=y+flip(-x-x^3+(@p1+@p2*x^2+@p3*@p4*x)*y+@p4*@p5) elseif @V=="Duffing 4" pz=y+flip(-@p1*x-(((@p2+1i)-@p1)/2)*(cabs(x+1)-cabs(x-1))-@p3*y+@p4) elseif @V=="Duffing 5" pz=y+flip(-@p1*x-@p2*x^3-@p3*x^5+(@p4-2+1i)) elseif @V=="Henon 1" pz=1-@p1*x^2+y+flip(@p2*x) elseif @V=="Henon 2" pz=-(y-x^2)*sin(2*pi/(@p1-0.5+1i))+x*cos(2*pi/(@p1-0.5+1i))\ +flip((y-x^2)*cos(2*pi/(@p1-0.5+1i))+x*sin(2*pi/(@p1-0.5+1i))) elseif @V=="Henon 3" pz=y+flip(@p2^(-1)*(1-@p1*y^2-@p2*x)) elseif @V=="Henon 4" pz=exp(-@p1*@p2/2)*(x*cos(@p2*@p3)+(1/@p3)*(y-(@p4+x^2)+@p1*x/2)*sin(@p2*@p3))\ +flip(exp(-@p1*@p2/2)*(-@p3*x*sin(@p2*@p3)+(y-(@p4+x^2)+@p1*x/2)*cos(@p2*@p3))-@p1*x/2) elseif @V=="Henon 5" pz=y+(@p1+1i)*cos(pi*x/2)-1+flip(@p2*x) elseif @V=="Ikeda 1" pz=@p1+(@p2+2)*pz*e^(1i*(cabs(pz)^2+@p3)) elseif @V=="Ikeda 2" pz=(@p1+1i)+@p2*pz*e^(1i*(@p3+2)/(cabs(pz)^2+1)+@p4) elseif @V=="Ikeda 3" pz=@p1+(@p2+1)*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1)))+flip((@p2+1)*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Lemniscate 1" pz=(x^2+y^2)^2-(@p1-2.5)^2*(x^2-y^2) elseif @V=="Lemniscate 2" pz=(x^2+y^2)^2-(2*(@p1-1.2)^2+@p2)*x^2+(2*(@p1-1.2)^2-@p2)*y^2 elseif @V=="Lemniscate 3" pz=y^2-x^2*log((@p1-2.5)^2/x^2) elseif @V=="Lissajous 1" pz=2*(2*x^2-@p1^2)^2-@p1*(2*y-@p1)^2*(y+@p1) elseif @V=="Lissajous 2" pz=x^2*(4*x^2-3*(@p1+0.5)^2)+4*(@p1+0.5)^2*y^2*(y^2-(@p1+0.5)^2) elseif @V=="Lissajous 3" pz=@p1^4*y^4-4*@p1^3*(@p2+1i)*x*y^3+2*@p1^2*(@p2+1i)*y^3+6*@p1^2*(@p2+1i)^2*x^2*y^2 \ -4*@p1*(@p2+1i)^2*x*y^2-2*@p1^3*x*y^2-2*@p1^2*(@p2+1i)^2*y^2+(@p2+1i)^2*y^2+@p1^2*y^2 \ -4*@p1*(@p2+1i)^3*x^3*y+2*(@p2+1i)^3*x^2*y+4*@p1^2*(@p2+1i)*x^2*y+4*@p1*(@p2+1i)^3*x*y \ -2*(@p2+1i)^3*y-4*@p1^2*(@p2+1i)*y+(@p2+1i)^4*x^4-2*@p1*(@p2+1i)^2*x^3-2*(@p2+1i)^4*x^2 \ +(@p2+1i)^2*x^2+@p1^2*x^2+2*@p1*(@p2+1i)^2*x-@p1^2-(@p2+1i)^2+(@p2+1i)^4 elseif @V=="OM 1" pz=sin(@p1*x)-tan(@p2*y)+flip(tan(@p3*x)+sin(@p4*y)) elseif @V=="OM 2" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) elseif @V=="OM 3" pz=x+y+(@p1/2*pi)*sin(2*pi*x)+flip(x+y+(@p1/2*pi)*sin(2*pi*x)-x) elseif @V=="OM 4" pz=flip(y)+flip(atanh(x)+y*(@p1-y^2)) elseif @V=="OM 5" pz=tan(@p1*y)+(tanh(@p1*x))^2+flip(tan(@p2*x)+(cosh(@p2*y))^2) elseif @V=="OM 6" pz=(x^2-y^2)*(x^2+y^2)^2-2*(@p1+1)*x*y*(x-(@p1+1)^2) elseif @V=="OM 7" pz=@p1*sin(x^2+y^2)+@p2*x*(x^2-y^2)-2*@p1*x*y*(@p1^2-@p2^2) elseif @V=="OM 8" pz=recip(@p1*(x^2-1))*@p2^2*x*tanh(@p1*(y^2-1))-@p1*@p2*(x*y+1) elseif @V=="OM 9" pz=(x^2-(@p1-1+1.5i)^2)*(x-(@p1-1+1.5i))^2+(y^2-(@p1-1+1.5i)^2)^3 elseif @V=="OM 10" pz=(x^2-@p1^2)*(x-@p1)^3+(y^2-@p2^2)^2 elseif @V=="OM 11" pz=((@p1*@p2-x)^2+(@p2-y)^2)/@p3^2-1 elseif @V=="OM 12" pz=(x^2+y^2)^2-@p1/(x^2-y^2) elseif @V=="OM 13" pz=tan(@p1*y)+@p2*sqr(@p1*x)+flip(tan(@p3*x)+@p4*recip(@p3*y)) elseif @V=="OM 14" pz=sin(@p1*y)+@p2*tanh(@p1*x)+flip(cosh(@p3*x)+@p4*tan(@p3*y)) elseif @V=="OM 15" pz=abs(@p1*y)+@p2*sin(@p1*x)+flip(abs(@p3*x)+@p4*sin(@p3*y)) elseif @V=="OM 16" pz=sin(@p1*y)+@p2*recip(@p1*x)+flip(tan(@p3*x)+@p4*sqr(@p3*y)) elseif @V=="OM 17" pz=y+flip(@p1+@p2*x+x^2-x*y)+x^4*(x^2+y^2)-(@p2*x^2-@p1^3)^2 elseif @V=="OM 18" pz=(x^2+y^2-@p1*(@p2-3.5)*x)^2-(x^2+y^2)*((@p2-3.5)*x-(@p1+1))^2\ +cos(@p1)*(x+(@p2-3.5)*sin(y))+sin(@p1)*y+flip(-sin(@p1)*(x+(@p2-3.5)*sin(y))+cos(@p1)*y) elseif @V=="OM 19" pz=(x^2+y^2-(@p1-2.15)*x)^2-@p2^2*(x^2+y^2)+y-(@p1-2.15)/sin(x/@p2) elseif @V=="OM 20" pz=y-(@p1+0.5i)*cotan(x/(@p2+1))+(2*x^2+y^2)^2+2*sqrt(2)*(@p1+0.5i)*x*(2*x^2-3*y^2)+2*(@p1+0.5i)^2*(y^2-x^2) elseif @V=="Parabola 1" pz=4*@p1*(x-@p2)-(y-@p3)^2 elseif @V=="Parabola 2" pz=x-(@p1-2.5-0.5i)*(y-@p2)^2-@p3 elseif @V=="Parabola 3" pz=y-@p1*x^2-@p2*x-@p3 elseif @V=="Parabola 4" pz=x^2*(x^2+y^2)-(@p1+5)*y*(x^2-y^2) elseif @V=="Parabola 5" pz=@p1*y^2-x*(x^2-2*(@p2-2)*x+@p3) elseif @V=="Parabola 6" pz=y^3-@p1*x^2 elseif @V=="Pickover 1" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Pickover 2" pz=sin(@p1*y)+sqr(sin(@p1*x))+flip(sin(@p2*x)+sqr(sin(@p2*y))) elseif @V=="Pickover 3" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3) elseif @V=="Pickover 4" pz=abs(sin(@p1*y))+(sin(@p1*x))^2+flip(abs(sin(@p2*x))+(sin(@p1*y))^2) elseif @V=="Pickover 5" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin(@p3*x)+@p4*cos(@p3*y)) elseif @V=="Pickover 6" pz=x-@p1*sin(y+tan((@p2+1i)*y))+flip(y-@p1*sin(x+tan((@p2+1i)*x))) elseif @V=="Pickover 7" pz=@p1*sin(y+tan((@p2+1i)*y))+flip(@p1*sin(x+tan((@p2+1i)*x))) elseif @V=="Pendulum 1" pz=y+flip(-sin(x)+@p1) elseif @V=="Pendulum 2" pz=y+flip(-@p1*sin(x)-@p2*y) elseif @V=="Pendulum 3" pz=y+flip(-sin(x)+y*(@p1+@p2*cos((@p3+1+2i)*x))*(-@p4)) elseif @V=="Pendulum 4" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) endif f=|j|/|pz| j=pz if f<@adj2 && i> 0 h=true g=c*f+d*b endif i=i+1 d=i%a endif endfunc float func ResultIndex(complex pz) if @version<101 if @invert==false if @solid if h index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif else if @solid if !h index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif endif else if @solid if h && g>@sca*40 index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif endif return index endfunc private: float a float b float c float d float f int i float g bool h complex j float index default: title="Sailor's Traps" int param version caption="Version" default=101 visible=@version<101 endparam param V caption="Variant" enum="Conchoid 1""Conchoid 2""Conchoid 3""Conchoid 4""Conchoid 5""Conchoid 6"\ "Duffing 1""Duffing 2""Duffing 3""Duffing 4""Duffing 5"\ "Henon 1""Henon 2""Henon 3""Henon 4""Henon 5""Ikeda 1""Ikeda 2""Ikeda 3"\ "Lemniscate 1""Lemniscate 2""Lemniscate 3""Lissajous 1""Lissajous 2""Lissajous 3""OM 1"\ "OM 2""OM 3""OM 4""OM 5""OM 6""OM 7""OM 8""OM 9""OM 10""OM 11"\ "OM 12""OM 13""OM 14""OM 15""OM 16""OM 17""OM 18""OM 19""OM 20""Parabola 1""Parabola 2""Parabola 3"\ "Parabola 4""Parabola 5""Parabola 6""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Pickover 5"\ "Pickover 6""Pickover 7""Pendulum 1""Pendulum 2""Pendulum 3""Pendulum 4" endparam param p1 caption="Variant Parameter" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="Pendulum 1" && @V!="Henon 2" && @V!="Lemniscate 1" \ && @V!="Lemniscate 3" && @V!="Lissajous 1" && @V!="Lissajous 2" \ && @V!="OM 3" && @V!="OM 4" && @V!="OM 6" && @V!="OM 9" \ && @V!="OM 12" && @V!="Parabola 4" && @V!="Parabola 6" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Conchoid 1" || @V=="Duffing 2" || @V=="Duffing 3" || @V=="Duffing 4" || @V=="Duffing 5" || @V=="Henon 4" \ || @V=="Ikeda 1" || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="OM 1" \ || @V=="OM 11" || @V=="OM 13" || @V=="OM 14" || @V=="OM 15" || @V=="OM 16" \ || @V=="Parabola 1" || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Parabola 5" \ || @V=="Pickover 1" || @V=="Pickover 3" || @V=="Pickover 5" || @V=="Pendulum 3" || @V=="Pendulum 4" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Duffing 3" || @V=="Duffing 4"|| @V=="Duffing 5" || @V=="Henon 4" \ || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="OM 1" || @V=="OM 13" \ || @V=="OM 14" || @V=="OM 15" || @V=="OM 16" || @V=="Pickover 1" \ || @V=="Pickover 5" || @V=="Pendulum 3" || @V=="Pendulum 4" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Duffing 3" endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param adj1 caption="Adjustment 1" default=(8,30) endparam param adj2 caption="Adjustment 2" default=0.188 endparam param S caption="Symmetrize" default=false endparam param solid caption="Solid Color" default=true endparam param sca caption="Solid Color Adjustment" default=0.3 visible=@solid==true && @version==101 endparam param invert caption="Invert Solid Color" default=false visible=@solid==true && @version<101 endparam } class OM_ModifiedCollatz(common.ulb:ConvergentDivergentFormula) { ;Based on a formula by Nathaniel Johnston ;http://www.njohnston.ca/2009/06/the-collatz-conjecture-as-a-fractal/ public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz*(@cp1+cos(pi*pz))/4+(3*pz+@cp2)*(@cp3-cos(pi*pz))*(3-sqrt(2)*cos(pi*(2*pz-@cp4)/4))/16 return pz endfunc default: title="Modified Collatz" int param version caption="Version" default=100 visible=@version<100 endparam param cp1 caption="Collatz Parameter 1" default=(1,0) endparam param cp2 caption="Collatz Parameter 2" default=(1,0) endparam param cp3 caption="Collatz Parameter 3" default=(1,0) endparam param cp4 caption="Collatz Parameter 4" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout value" default=10.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout value" default=0.0000000001 exponential=true endparam } class OM_BivarModifiedCollatz(common.ulb:ConvergentDivergentFormula) { ;Based on a formula by Nathaniel Johnston ;http://www.njohnston.ca/2009/06/the-collatz-conjecture-as-a-fractal/ public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif return pz return pk endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*fn2(pz)+@zp2 pk=@kp1*fn2(pk)+@kp2 if @bf=="ident" pk=ident(pz/pk) elseif @bf=="sin" pk=sin(pz/pk) elseif @bf=="sinh" pk=sinh(pz/pk) elseif @bf=="asin" pk=asin(pz/pk) elseif @bf=="asinh" pk=asinh(pz/pk) elseif @bf=="versin" pk=1-cos(pz/pk) elseif @bf=="aversin" pk=acos(1-(pz/pk)) elseif @bf=="haversin" pk=(1-cos(pz/pk))/2 elseif @bf=="ahaversin" pk=2*asin(sqrt(pz/pk)) elseif @bf=="coversin" pk=1-sin(pz/pk) elseif @bf=="acoversin" pk=asin(1-(pz/pk))+0.6 elseif @bf=="hacoversin" pk=(1-sin(pz/pk))/2 elseif @bf=="cos" pk=cos(pz/pk)-1 elseif @bf=="cosh" pk=cosh(pz/pk) elseif @bf=="acos" pk=acos(pz/pk)+0.6 elseif @bf=="acosh" pk=acosh(pz/pk)+0.6 elseif @bf=="vercos" pk=1+cos(pz/pk)+1 elseif @bf=="avercos" pk=acos(1+(pz/pk)) elseif @bf=="havercos" pk=(1+cos(pz/pk))/2 elseif @bf=="ahavercos" pk=2*acos(sqrt(pz/pk))-3 elseif @bf=="covercos" pk=1+sin(pz/pk) elseif @bf=="acovercos" pk=asin(1+(pz/pk)) elseif @bf=="hacovercos" pk=(1+sin(pz/pk))/2 elseif @bf=="tan" pk=tan(pz/pk) elseif @bf=="tanh" pk=tanh(pz/pk) elseif @bf=="atan" pk=atan(pz/pk) elseif @bf=="cotan" pk=cotan(pz/pk)+0.5 elseif @bf=="cotanh" pk=cotanh(pz/pk) elseif @bf=="acotan" pk=atan(1/(pz/pk)) elseif @bf=="sec" pk=1/cos(pz/pk) elseif @bf=="sech" pk=1/cosh(pz/pk) elseif @bf=="asec" pk=acos(1/(pz/pk))+0.7 elseif @bf=="asech" pk=acosh(1/(pz/pk))+0.7 elseif @bf=="cosec" pk=1/sin(pz/pk) elseif @bf=="cosech" pk=1/sinh(pz/pk) elseif @bf=="acosec" pk=asin(1/(pz/pk)) elseif @bf=="acosech" pk=asinh(1/(pz/pk)) elseif @bf=="exsec" pk=1.3*(1/cos(pz/pk)-1) elseif @bf=="aexsec" pk=acos(1/((pz/pk)+1)) elseif @bf=="excosec" pk=0.45*(1/sin(pz/pk)-1) elseif @bf=="aexcosec" pk=asin(1/((pz/pk)+1)) elseif @bf=="crd" pk=2*sin((pz/pk)/2) elseif @bf=="acrd" pk=2*asin((pz/pk)/2) elseif @bf=="gd" pk=asin(tanh(pz/pk)) elseif @bf=="agd" pk=asinh(tan(pz/pk)) elseif @bf=="sinc" pk=sin(pz/pk)/(pz/pk) elseif @bf=="sinhc" pk=sinh(pz/pk)/(pz/pk) elseif @bf=="cosc" pk=cos(pz/pk)/(pz/pk)+0.5 elseif @bf=="coshc" pk=cosh(pz/pk)/(pz/pk) elseif @bf=="tanc" pk=tan(pz/pk)/(pz/pk) elseif @bf=="tanhc" pk=tanh(pz/pk)/(pz/pk) elseif @bf=="cotanc" pk=cotan(pz/pk)/(pz/pk)+1 elseif @bf=="cotanhc" pk=cotanh(pz/pk)/(pz/pk) elseif @bf=="secc" pk=1/((pz/pk)*cos(pz/pk)) elseif @bf=="sechc" pk=1/((pz/pk)*cosh(pz/pk)) elseif @bf=="cosecc" pk= 1/((pz/pk)*sin(pz/pk)) elseif @bf=="cosechc" pk=1/((pz/pk)*sinh(pz/pk)) elseif @bf=="sqr" pk=sqr(pz/pk) elseif @bf=="sqrt" pk=sqrt(pz/pk) elseif @bf=="cube" pk=(pz/pk)^3 elseif @bf=="cuberoot" pk=(pz/pk)^(1/3) elseif @bf=="log" pk=log(pz/pk)+1 elseif @bf=="colog" pk=-log(pz/pk)+1 elseif @bf=="exp" pk=exp(pz/pk)+1.5 elseif @bf=="recip" pk=recip(pz/pk) elseif @bf=="expit" pk=1/(1+exp(-(pz/pk))) elseif @bf=="gauss" pk=exp(-sqr(pz/pk)) elseif @bf=="softplus" pk=log(1+exp(pz/pk)) elseif @bf=="ceil" pk=ceil(pz/pk) elseif @bf=="floor" pk=floor(pz/pk) elseif @bf=="trunc" pk=trunc(pz/pk) elseif @bf=="round" pk=round(pz/pk) elseif @bf=="+sqrt" pk=(pz/pk)+sqrt(pz/pk) elseif @bf=="+sqr" pk=(pz/pk)+sqr(pz/pk) elseif @bf=="+cotanh" pk=(pz/pk)+cotanh(pz/pk) elseif @bf=="+cotan" pk=(pz/pk)+cotan(pz/pk) elseif @bf=="+cos" pk=(pz/pk)+cos(pz/pk) elseif @bf=="+sin" pk=(pz/pk)+sin(pz/pk) elseif @bf=="+round" pk=(pz/pk)+round(pz/pk) elseif @bf=="+recip" pk=(pz/pk)+recip(pz/pk) elseif @bf=="-exp" pk=(pz/pk)-exp(pz/pk) elseif @bf=="-log" pk=(pz/pk)-log(pz/pk) elseif @bf=="-acosh" pk=(pz/pk)-acosh(pz/pk) elseif @bf=="-cosh" pk=(pz/pk)-cosh(pz/pk) elseif @bf=="-cos" pk=(pz/pk)-cos(pz/pk) elseif @bf=="*sqrt" pk=(pz/pk)*sqrt(pz/pk) elseif @bf=="*cotanh" pk=(pz/pk)*cotanh(pz/pk) elseif @bf=="*atan" pk=(pz/pk)*atan(pz/pk) elseif @bf=="*tanh" pk=(pz/pk)*tanh(pz/pk) elseif @bf=="*tan" pk=(pz/pk)*tan(pz/pk) elseif @bf=="*cos" pk=(pz/pk)*cos(pz/pk) elseif @bf=="*sin" pk=(pz/pk)*sin(pz/pk) elseif @bf=="third" pk=(pz/pk)/3 elseif @bf=="half" pk=0.5*(pz/pk) elseif @bf=="double" pk=2*(pz/pk) endif pk=@p8*pk+@p9 pz=pz*(@cp1+cos(pi*pz))/4+((3*pz+@cp2)/16)*(@cp3-cos(pi*pz))*\ (3-sqrt(2)*cos((2*pz-@cp4)*pi/4))+@p8*(pk*(@cp1+cos(pi*pk))\ /4+((3*pk+@cp2)/16)*(@cp3-cos(pi*pk))*(3-sqrt(2)*cos((2*pk-@cp4)*pi/4)))+@p9 return pz return pk endfunc private: complex pk default: title="Bivar Modified Collatz" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam param bf caption="Bivar Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""cotan""cotanh""acotan"\ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""recip"\ "expit""gauss""softplus""ceil""floor""trunc""round"\ "+sqrt""+sqr""+cotanh""+cotan""+cos""+sin""+round""+recip"\ "-exp""-log""-acosh""-cosh""-cos"\ "*sqrt""*cotanh""*atan""*tanh""*tan""*cos""*sin"\ "third""half""double" default=0 endparam param p8 caption="Bivar Parameter 1" default=(0.5,0) endparam param p9 caption="Bivar Parameter 2" default=(0,0) endparam param cp1 caption="Collatz Parameter 1" default=(1,0) endparam param cp2 caption="Collatz Parameter 2" default=(1,0) endparam param cp3 caption="Collatz Parameter 3" default=(1,0) endparam param cp4 caption="Collatz Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func fn2 caption="Loop Function" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Upper Bailout value" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout value" default=0.00000000000001 exponential=true endparam } class OM_BivarX59(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) if @v==3 pz=@sp+1 elseif @v==4 pz=@sp+0.5 elseif @v==8 pz=@sp-0.5 else pz=@sp endif else pz=@sf(pz) pk=@sp endif return pz return pk endfunc private: complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @v==0 pz=pz^2+pk/(@bp-1) elseif @v==1 pz=pz^2+(pk+pz)/(@bp-1) elseif @v==2 pz=pz^2+(pk-pz)/@bp elseif @v==3 pz=pz^2+(pk*pz)/(@bp-1.35) elseif @v==4 pz=pz^2+(pk/pz)/@bp elseif @v==5 pz=pz^2+(pk^2)/@bp elseif @v==6 pz=pz^2+(pk^2+pz)/(@bp-3.67) elseif @v==7 pz=pz^2+(pk^2-pz)/(@bp-1) elseif @v==8 pz=pz^2+(pk^2/pz)/(@bp+5) endif pk=pk^2+@c return pz return pk endfunc default: title="Bivar X 59" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) visible=@sv!=0 endparam param v caption="Bivar Variant" enum="1""2""3""4""5""6""7""8""9" endparam param bp caption="Bivar Parameter" default=(2,0) endparam param c caption="Julia Seed" default=(-1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Batrengli(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) b=(0,0) c=0.0 d=0.0 f=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*abs(fn1(pz))+@zp2 x=real(pz) y=imag(pz) if @v==0 a=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) b=sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2) elseif @v==1 a=cos(@p1*y)+(cos(@p1*x))^2+flip(sin(@p3*x)+@p4*sin(@p3*y)) b=sin(@p1*y)+@p2*sin(@p1*x)+flip(cos(@p2*x)+(cos(@p2*y))^2) elseif @v==2 a=cos(@p1*y)+(cos(@p1*x))^2+flip(asin(@p3*x)+@p4*asin(@p3*y)) b=asin(@p1*y)+@p2*asin(@p1*x)+flip(cos(@p2*x)+(cos(@p2*y))^2) elseif @v==3 a=sin(@p1*x)-tan(@p2*y)+flip(tan(@p1*x)+sin(@p2*y)) b=sin(@p1*x)-tan(@p2*y)+flip((@p1*x)+(@p2*y)) elseif @v==4 a=sin(@p1*x)-tan(@p2*y)+flip(tan(@p1*x)+sin(@p2*y)) b=sin(@p1*x)-tan(@p2*y)+flip(sqr(@p1*x)+(@p2*y)) elseif @v==5 a=cabs(@p1*x)-sqr(-@p2*y/2)+flip(sqr(@p3*x)+cabs(@p4*y/2)) b=x-tan(y-@p1*sin(y))+flip(y+tan(x-@p2*sin(y)/2)) elseif @v==6 a=cosh(@p1*x)-(@p2*y)+flip((@p3*x)+cosh(@p4*y)) b=x-(y-@p1*(y))+flip(y+(x+@p2*(y))) elseif @v==7 a=cosh(@p1*x)-sqr(@p2*y)+flip(sqr(@p3*x)+cosh(@p4*y)) b=x-(y-@p1*cos(y))+flip(y+(x+@p2*cos(y))) elseif @v==8 a=@p1*(y^2-x^2)*(x-1)*(2*x-3)-4*(@p2-1.5)*(x^2+y^2-2*x)^2 b=(@p2-1.5)*sqrt((x-@p1)^2+y^2)+@p3*sqrt((x+@p1)^2+y^2)-@p4 elseif @v==9 a=(@p1-0.5)*abs(y^2-x^2)*(x-1)*(2*x-3)-4*@p2*cos(x^2+y^2-2*x)^2 b=@p2*cos((x-(@p1-0.5))^2+y^2)+(@p3-1.5)*((x+(@p1-0.5))^2+y^2)-@p4 elseif @v==10 a=@p3*x^2+2*@p4*x*y+2*y^2-2*@p1*x-2*@p2*y b=@p2*y^2-@p3*(@p1-x)^2*x^2 elseif @v==11 a=@p3*x^2+2*@p4*tanh(x*y)+2*y^2-2*@p1*x-2*sqr(@p2*y) b=@p2*flip(y)^2-@p3*(@p1-x)^2*@p4*flip(x)^2 elseif @v==12 a=@p3*x^2+2*@p4*tanh(x*y)+2*y^2-2*@p1*x-2*tanh(@p2*y) b=@p2*tanh(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==13 a=@p3*x^2+2*@p4*cos(x*y)+2*y^2-2*@p1*x-2*tanh(@p2*y) b=@p2*tanh(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==14 a=@p3*x^2+2*@p4*cos(x*y)+2*y^2-2*@p1*x-2*sinh(@p2*y) b=@p2*cos(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==15 a=@p3*x^2+2*@p4*abs(x*y)+2*y^2-2*@p1*x-2*sqr(@p2*y) b=@p2*abs(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==16 a=flip(@p1*y)+@p2*(@p1*x)+flip(flip((@p3-0.5+0.75i)*x)+@p4*((@p3-0.5+0.75i)*y)) b=(@p1*y)+((@p1*x))^2+flip((@p2*x)+((@p2*y))^2) elseif @v==17 a=flip(@p1*y)+@p2*(@p1*x)+flip(flip(@p3*x)+@p4*(@p3*y)) b=tanh(@p1*y)+((@p1*x))^2+flip(tanh(@p2*x)+((@p2*y))^2) elseif @v==18 a=sqr(@p1*y)+@p2*tanh(@p1*x)+flip(sqr(@p3*x)+@p4*tanh(@p3*y)) b=tanh(@p1*y)+((@p1*x))^2+flip(tanh(@p2*x)+((@p2*y))^2) elseif @v==19 a=sin(@p1*y)+@p2*flip(@p1*x)+flip(sin(@p3*x)+@p4*flip(@p3*y)) b=sqr(@p1*y)+(cos(@p1*x))^2+flip(sqr(@p2*x)+(cos(@p2*y))^2) elseif @v==20 a=@p1*flip(x^2+y^2)^2-2*@p2^2*(x^2-y^2)+@p3^4-@p4^4 b=y-@p1*sqr(x)^3-@p2*x^2*y-@p3*(x*y)^2-@p4*y^3 elseif @v==21 a=(@p1-0.5)*flip(x^2+y^2)^2-2*@p2^2*tanh(x^2-y^2)+@p3^4-@p4^4 b=y-(@p1-0.5)*sqr(x)^3-@p2*x^2*y-@p3*cos(x*y)^2-@p4*y^3 elseif @v==22 a=(sin(@p1*y))^3+@p2*sin(@p1*x)+flip((sin(@p3*x))^2+@p4*sin(@p3*y)) b=sin(@p1*y)+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^4) elseif @v==23 a=(cos(@p1*y))^3+@p2*cos(@p1*x)+flip((cos(@p3*x))^2+@p4*cos(@p3*y)) b=cos(@p1*y)+(cos(@p1*x))^3+flip(cos(@p2*x)+(cos(@p2*y))^4) elseif @v==24 a=(tanh(@p1*y))^3+@p2*cos(@p1*x)+flip((tanh(@p3*x))^2+@p4*cos(@p3*y)) b=tanh(@p1*y)+(cos(@p1*x))^3+flip(tanh(@p2*x)+(cos(@p2*y))^4) elseif @v==25 a=(tanh(@p1*y))^3+@p2*sin(@p1*x)+flip((cotan(@p3*x))^2+@p4*sin(@p3*y)) b=tanh(@p1*y)+(sin(@p1*x))^3+flip(cotan(@p2*x)+(sin(@p2*y))^4) elseif @v==26 a=(tanh(@p1*y))^3+@p2*tanh(@p1*x)+flip((tanh(@p3*x))^2+@p4*tanh(@p3*y)) b=tanh(@p1*y)+(tanh(@p1*x))^3+flip(tanh(@p2*x)+(tanh(@p2*y))^4) elseif @v==27 a=(sin(@p1*y))^3+@p2*cos(@p1*x)+flip((sin(@p3*x))^2+@p4*cos(@p3*y)) b=sin(@p1*y)+(cos(@p1*x))^3+flip(sin(@p2*x)+(cos(@p2*y))^4) elseif @v==28 a=@p1*(x)^3+@p2*cos(y)^3-1 b=x^2*@p3*cotanh(3*x^2-y^2)^2-y^2*(@p4-0.5)*cotanh(x^2+y^2) elseif @v==29 a=x^4*(x^2+y^2)-((@p2-1.5)*x^2-(@p1-1.5)^3)^2 b=(x^2+y^2)^((@p3+1)/2)-@p3*y^@p4 elseif @v==30 a=x^4*log(x^2+y^2)-flip(@p2*x^2-@p1^3)^2 b=sqrt((x^2+y^2)^((@p3+1)/2))-(@p3*y^@p4) elseif @v==31 a=x^4*cotan(x^2+y^2)-sqr(@p2*x^2-@p1^3)^2 b=tanh((x^2+y^2)^((@p3+1)/2))-(@p3*y^@p4) elseif @v==32 a=x^4*cotan(x^2+y^2)-sqr(@p2*x^2-@p1^3)^2 b=tanh((x^2+y^2)^((@p3+1)/2))-sqrt(@p3*y^@p4) elseif @v==33 a=x^4*cos(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=cos((x^2+y^2)^((@p3+1)/2))-cos(@p3*y^@p4) elseif @v==34 a=x^4*sin(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-cos(@p3*y^@p4) elseif @v==35 a=x^4*sin(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-tanh(@p3*y^@p4) elseif @v==36 a=x^4*acosh(x^2+y^2)-exp(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-tanh(@p3*y^@p4) elseif @v==37 a=x^4*acosh(x^2+y^2)-exp(@p2*x^2-@p1^3)^2 b=asinh((x^2+y^2)^((@p3+1)/2))-sqrt(@p3*y^@p4) elseif @v==38 a=flip(pz) b=pz elseif @v==39 a=flip(pz) b=sqrt(pz) elseif @v==40 a=flip(pz) b=atanh(pz) elseif @v==41 a=conj(pz) b=recip(pz) elseif @v==42 a=cabs(pz) b=tanh(pz) elseif @v==43 a=cotan(pz) b=cos(pz) elseif @v==44 a=y-@p1/sin(x/@p2) b=y^2-@p3*cotan(x/@p4) elseif @v==45 a=(y)-@p1/(x/@p2) b=sqr(y^2)-@p3*cotan(x/@p4) elseif @v==46 a=tan(y)-@p1/sqrt(x/@p2) b=sqr(y^2)-@p3*cotan(x/@p4) elseif @v==47 a=ceil(y)-@p1/sin(x/@p2) b=atan(y^2)-@p3*cos(x/@p4) elseif @v==48 a=ceil(y)-@p1/sqrt(x/@p2) b=sqrt(y^2)-@p3*acos(x/@p4) elseif @v==49 a=exp(y)-@p1/atan(x/@p2) b=atanh(y^2)-@p3*cos(x/@p4) elseif @v==50 a=exp(y)-@p1/exp(x/@p2) b=exp(y^2)-@p3*cotan(x/@p4) elseif @v==51 a=ceil(y)-@p1/sqrt(x/@p2) b=ceil(y^2)-@p3*atan(x/@p4) elseif @v==52 a=y^2*(@p3-x)^2-(@p2-x)^2*(@p1^2-x^2) b=@p1^2*(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==53 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==54 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*tan(x^2+y^2)*(x-@p4)^2 elseif @v==55 a=y^2*log(@p3-x)^2-(@p2-x)^2*(@p1^2-x^2) b=@p1^2*atan(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==56 a=y^2*sin(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*sin(x^2+y^2)*(x-@p4)^2 elseif @v==57 a=y^2*cos(@p3-x)^2-(@p2-x)^2*cos(@p1^2-x^2) b=@p1^2*cos(x^2+y^2-@p2*x)^2-@p3^2*cos(x^2+y^2)*(x-@p4)^2 elseif @v==58 a=y^2*tan(@p3-x)^2-(@p2-x)^2*tan(@p1^2-x^2) b=@p1^2*tan(x^2+y^2-@p2*x)^2-@p3^2*tan(x^2+y^2)*(x-@p4)^2 elseif @v==59 a=y^2*tanh(@p3-x)^2-(@p2-x)^2*tanh(@p1^2-x^2) b=@p1^2*tanh(x^2+y^2-@p2*x)^2-@p3^2*asinh(x^2+y^2)*(x-@p4)^2 elseif @v==60 a=y^2*sqr(@p3-x)^2-(@p2-x)^2*sqr(@p1^2-x^2) b=@p1^2*sqr(x^2+y^2-@p2*x)^2-@p3^2*sqr(x^2+y^2)*(x-@p4)^2 elseif @v==61 a=cos(@p1)*(x+(@p2-2)*sin(y))+sin(@p1)*y+flip(-sin(@p1)*(x+(@p2-2)*sin(y))+cos(@p1)*y) b=x+@p1*y+(@p2-2)+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y+(@p2-2)+(@p3/(2*pi))*sin(2*pi*x)) elseif @v==62 a=cos((@p1-2.5))*(x+(@p2-0.5)*cotanh(y))+cotanh((@p1-2.5))*y+flip(-flip((@p1-2.5))*(x+(@p2-0.5)*flip(y))+cos((@p1-2.5))*y) b=x+(@p1-2.5)*y+(@p2-0.5)+((@p3-2.5)/(2*pi))*cos(2*pi*x)+flip((@p1-2.5)*y+(@p2-0.5)+((@p3-2.5)/(2*pi))*cos(2*pi*x)) elseif @v==63 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 endif c=|fn2(a)-fn2(b)| f=c^2 d=@p5*f k=k+log(d) endfunc float func ResultIndex(complex pz) if @solid if @invert if k>=@sca*10 index=@p6*k/m_Iterations else m_Solid=true endif else if k<@sca*10 index=@p6*k/m_Iterations else m_Solid=true endif endif else index=@p6*k/m_Iterations endif return index endfunc private: complex a complex b float c float d float f float k float index default: title="Batrengli" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64" endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Batrengli Function" default=ident() endfunc param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@v!=3 && @v!=4 endparam param p4 caption="Variant Parameter 4" visible=@v!=3 && @v!=4 && @v!=61 && @v!=62 default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p5 caption="Adjustment 1" default=1.0 endparam param p6 caption="Adjustment 2" default=-0.105 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Langmod(common.ulb:GradientColoring) { ;Modification of code by pauldebrot: ;https://tinyurl.com/wg4ke44 ;Based on https://arxiv.org/pdf/2001.08937.pdf public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=0.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @v2==0 pz=(x^2+y^2-(@p2+1+1.5i)*@p1^2)^2-@p3*@p1*(y-@p1+sqrt(3)*x)*(y-@p1-sqrt(3)*x)*(2*y+@p1)+x^2*y^2-@p4^2*(@p4^2-y^2) elseif @v2==1 pz=(x^2-y^2)^2-@p1^2*x^2+@p2^2*y^2+@p3*(y^2-x^2)*(x-1)*(2*x-3)-4*@p4*(x^2+y^2-2*x)^2 elseif @v2==2 pz=x^2*@p1*sin(3*x^2-y^2)^2-@p2*y^2*(x^2+y^2)+@p3*(x^(2/3))+(y^(2/3))-@p4^(2/3) elseif @v2==3 pz=x^4*cos(x^2+y^2)-cosh(@p2*x^2-@p1^3)^2+@p3*cos(x^2+y^2)^2-x^3-cos(@p4*y^3) elseif @v2==4 pz=@p2^4*y^2-x^4*(@p1^2-x^2)+(@p3+1+0.25i)*y^2-x^2*(x-@p4) elseif @v2==5 pz=sin(@p2^2*y^2)-@p4*x^2*@p3*flip(y^2-x^2)+y^2*(@p1^2-x^2)-cosh(x^2+2*@p2*y-@p1^2)^2 elseif @v2==6 pz=(x^2+x*y+@p1*x-@p2^2)^2-(@p2^2-x^2)*(x-y+@p1)^2+2*y^2*(x^2+y^2)-2*@p4*y^2*(x+y)\ +(@p4^2-3*@p3^2)*y^2-@p3^2*x^2+2*@p3^2*@p4*(x+y)+@p3^2*(@p3^2-@p4^2) elseif @v2==7 pz=flip(x)^3+exp(y)^3-@p1+x^(2/3)+(@p2*y)^(2/3)+(@p3^2*x*y)^(2/3)-@p4^3 elseif @v2==8 pz=(x^4)-@p1*x^2*y+(y^3)+exp(@p2^2-x^2)*(@p3^2+y^2)-@p2^2*@p4^2 elseif @v2==9 pz=x^2/@p1^2-y^2/@p2^2-1+@p3*x^3-3*@p4*x*y^2-@p2^3 elseif @v2==10 pz=(x^2+y^2-2*(@p1-2.25-1.5i)*x)^2-4*(@p1-2.25-1.5i)^2*(x^2+y^2)+\ (@p2-3.2)*sqrt((x-(@p1-2.25-1.5i))^2+y^2)+@p3*sqrt((x+@p4)^2+y^2)-@p4 elseif @v2==11 pz=(x^2+y^2)*y^2-(@p1-3-3.5i)^2*(x*sin(@p2)+y*cos(@p2))^2+(x^2+y^2)*(x*cos(@p4)+y*sin(@p4))-2*@p3*y^2 elseif @v2==12 pz=4*(x^2+y^2-@p1*x)^3-27*@p2^2*(x^2+y^2)^2-@p3^3*x^3-48*@p4*x*(x^2+y^2)^2\ +64*(x^2+y^2)^3-3*@p1^2*(x^2+y^2)*(5*x^2+9*y^2) elseif @v2==13 pz=(x^2+y^2)^3-((@p1+1)*x^2-(@p2-1)*y^2)^2+y-@p1*log(x^3)-@p2*x^2*y-@p3*x*y^2-(@p4*y^3) elseif @v2==14 pz=x^2+y^2-@p1^2+x*(x^2+y^2)+@p2*x^2+@p3*y^2+2*@p4*x+2*@p1*y+@p2 elseif @v2==15 pz=(@p1-4)*y^2-@p2*x*(x+1)*(x-3)*(x+2)*(x-2)+(@p3+4.5-2i)*y^2-@p4*recip((x^2+1)^3) elseif @v2==16 pz=@p3*x^2+2*@p4*x*y+@p1*y^2-2*@p1*x-2*@p2*y+(x^2+y^2)^2-@p4*y^2 elseif @v2==17 pz=y-@p2*e^(x/@p1)-@p3*e^(-x/@p1)+(x^2+y^2)*atan(y/x)-@p4*y elseif @v2==18 pz=(x^2+y^2+@p3^2-@p2^2)^2*(y^2+(x+@p1)^2)-4*@p4^2*(x*(x+@p1)+y^2)^2+(x-@p2)^2*(x^2+y^2)-@p3^2*x^2 elseif @v2==19 pz=y^4-x^4-(@p1+2+0.5i)^2*y^2+@p2^2*x^2+@p3*(x^2+y^2)^3-@p4^4*x^2 elseif @v2==20 pz=(x^2+y^2)^3+(@p1+2+0.5i)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@p2^4*y^2-4*@p3^6+x^6+y^6\ +3*@p4*x^4*y^2+3*(@p1+2+0.5i)*x^2*y^4+3*x^4-5*@p2*y^4+8*y^2-4 elseif @v2==21 pz=(x^2+y^2)^3-@p1^2*x^4+x^4+2*x^2*@p2*y^2+4*y^4-(@p3+3+0.75i)*x^3-6*x^2-@p4*x*y^2 elseif @v2==22 pz=(@p2-1.5+0.5i)*(x^2+y^2)^2-4*@p1*x*y^2+y^2*(@p3^2-x^2)-@p4^4 elseif @v2==23 pz=@p1^2*y^2+@p2^2*x^2-x^2*y^2+y^2*x-@p3*y^2-@p4*x^2 elseif @v2==24 pz=(@p1^2-4*(x^2+y^2))^3-108*@p2^2*x^2*(x^2+y^2)+tan(@p3)^2*(x+pi/2)^2-y^2+2*@p4*x elseif @v2==25 pz=@p2^2*(x^2+y^2-@p1*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2+3*x^2-y^2-@p1^2 elseif @v2==26 pz=(@p1+3-3i)^2*x^4-(@p2-0.5i)^4*(x^2+y^2)+@p3*y^2*(x^2+y^2)-@p4^2*x^2 elseif @v2==27 pz=(x^2+y^2)^2+18*@p1^2*(x^2+y^2)-27*@p2^4-8*@p3*x*(x^2-3*y^2)+y^4-x^4+@p4*y^2+@p1*x^2 elseif @v2==28 pz=(x^2+y^2)^2-(@p1*x+@p2*y)*x^2+y^4+10*@p4*y^2*@p3*x^2+5*x^4-y elseif @v2==29 pz=(x^2+y^2)*(y^2+x*(x+@p2))-4*@p1*x*y^2+x^3+@p3*y^3-3*@p4*x*y elseif @v2==30 pz=(x^2+y^2)*(2*(x^2+y^2)-@p1^2)^2-@p2^4*x^2+@p3*y-sqrt(2*pi)*@p4*exp(-x^2/2) elseif @v2==31 pz=@p3*y^2-@p4*x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)+x^2/@p1^2+y^2/@p2^2-1 elseif @v2==32 pz=(x^2+y^2)^2-@p1*x^2-@p2*y^2+(x^2+y^2)^2+4*(@p4+0.5-0.75i)*((@p4+0.5-0.75i)\ -(@p3+0.5-0.75i))*(x^2+y^2)-4*(@p4+0.5-0.75i)^2*x^2 elseif @v2==33 pz=((x-(@p2+1))^2+y^2)*(x*(x-(@p2+1))+y^2)-4*(@p1-3.25+0.25i)*(x-(@p2+1))*y^2+@p3*(x^2+y^2)^3-@p4^3*x*(x^2-3*y^2) elseif @v2==34 pz=@p2*(x^2+y^2)^3-(@p1+2.75)^3*x*(x^2-3*y^2)+(@p3-1.5-2i)^4*y^2-(@p4^2-x^2)^3 elseif @v2==35 pz=x^3+@p2*y^3-@p1^3+y^2-@p3*x^5+@p4*x elseif @v2==36 pz=@p2*(x^2+y^2)^2-(@p1+3.5i)^2*(x^2-y^2)+(x^2+y^2)^2-(2*@p3^2+(@p4-3.25-3i))*x^2+(2*@p3^2-(@p4-3.25-3i))*y^2 elseif @v2==37 pz=(x^2+y^2-(@p1+2i)*y)^2-(@p2-3.5-2.25i)*(x^2+y^2)+(x^2+y^2-@p3*x)^2-@p4^2*(x^2+y^2) elseif @v2==38 pz=(@p1+1-1.25i)*(x^2+y^2-3*x)^2-4*@p2*x^2*(2-x)+2*(2*x^2-(@p3-2)^2)^2-@p4*(2*y-(@p3-2))^2*(y+@p4) elseif @v2==39 pz=x^2*(4*x^2-3*(@p1-3+0.5i)^2)+4*(@p2-1.5)^2*y^2*(y^2-(@p1-3+0.5i)^2) \ +@p3^4*y^4-4*@p3^3*@p4*x*y^3+2*@p3^2*@p4*y^3+6*@p3^2*@p4^2*x^2*y^2 \ -4*@p3*@p4^2*x*y^2-2*@p3^3*x*y^2-2*@p4^2*@p4^2*y^2+@p4^2*y^2+@p3^2*y^2 \ -4*@p3*@p4^3*x^3*y+2*@p4^3*x^2*y+4*@p3^2*@p4*x^2*y+4*@p3*@p4^3*x*y \ -2*@p4^3*y-4*@p3^2*@p4*y+@p4^4*x^4-2*@p3*@p4^2*x^3-2*@p4^4*x^2 \ +@p4^2*x^2+@p3^2*x^2+2*@p3*@p4^2*x-@p3^2-@p4^2+@p4^4 elseif @v2==40 pz=(@p2-3i)*y^2-x^2*log(@p1^2/x^2)+@p3*y-@p4*log(sqrt(1-x^2)) elseif @v2==41 pz=@p2*y^3-(@p1-2.25+1.5i)*x^2+@p3*(x-0.5)^3-3*(@p4+1+0.5i)*y^2 elseif @v2==42 pz=flip(x^2+y^2-4*(@p1-1.75-0.25i)^2)^3-108*@p2^4*x^2+(x^2+y^2)*(x*2+y^2-@p3^2)^2-4*@p4^2*sqr(x^2+y^2-@p3*x)^2 elseif @v2==43 pz=@p1*flip(y^2)-x*cotan(x^2-2*@p2*x+@p3)+(y^2)-x*(x^2+2*@p4*x+@p3) elseif @v2==44 pz=@p1*x^2*y^2*(x^2+y^2)-@p2*acosh(x^2-y^2)^2+(x^2+y^2)^2-x^2*(@p3*x+@p4*y) elseif @v2==45 pz=(y-@p1)^2*(x^2+y^2)-log(@p2*x+@p3*y)^2+y*cosh(x^2+y^2)-@p3*(x^2-y^2)-2*@p4*x*y elseif @v2==46 pz=x*(x^2+y^2)-sqrt(@p2*x*y)-(@p1+3.5i)*y^2+@p3*x^2*(x^2+y^2)-@p4*y*(x^2-y^2) elseif @v2==47 pz=cotanh(@p2^2*y^2)-x^3*flip(@p1-x)+(y^(@p3+1))-@p4*(@p3-x)^@p3*x^@p4 elseif @v2==48 pz=y-@p1*x^2+(@p2-2.5+0.75i)*log(x)+(@p3-4-2.5i)*y-@p4*x+log(x) elseif @v2==49 pz=(@p2-4-2.25i)*x-y*cotan(y/@p1)+@p3*(x^2+y^2)^3-4*(@p4+3-3i)^2*x^2*y^2 elseif @v2==50 pz=x-(@p1-4+3.5i)*sin(@p2*y)+x-@p3*cos(@p4*y) elseif @v2==51 pz=(x^2-(@p2+1.5)*y)^2-(@p1-1.5-0.25i)^2*(x^2-y^2)+(x^2+y^2)*(x^2+y^2+@p3*x)^2-@p4^2*(x^2-y^2)^2 elseif @v2==52 pz=(x^4)-log(@p2*y^4)-cotanh(4*(@p1+3-1i)*x*y^2)+flip(@p4*x*y^2)-@p3*x elseif @v2==53 pz=y-@p1*@p2*x/(x^2+@p1^2)+@p4*y^2-abs(sin(x)+@p3*sin(2*x)) elseif @v2==54 pz=cosh(x^2+y^2)^2+(@p1-2)*x^2+@p2*(y^2)+2*@p3*x+@p4+(x^2+y^2)^2-2*@p1*(x^2)-2*@p2*y^2+@p3 elseif @v2==55 pz=cos(@p3^2-@p1^2+@p2^2+x^2+y^2)^2-4*@p3^2*(x^2+@p2^2)+(2*x*y)-x^4+acos(@p4*y^4) elseif @v2==56 pz=x+cos(@p2^2-y^2)-@p1*sqr((@p2+(@p2^2-y^2))/y)+cotanh(@p3*x^2)+@p4*y^2-e^(2*x-2) elseif @v2==57 pz=(@p1-5-0.25i)^@p2*(cabs(x)^@p2+cabs(y)^@p2)-(x^2+y^2)^@p2+@p3*(x^2+y^2)^2-@p4*x*(x^2-y^2) elseif @v2==58 pz=x-log(((@p1-0.75+0.25i)-sqrt(@p2^2-y^2))/y)-sqrt((@p1-0.75+0.25i)^2-y^2)+@p3*y-x^2-@p4/x elseif @v2==59 pz=x*y+@p1*x^3+@p2*x^2+@p3*x-@p4+flip(x^2+y^2)^2-cos(x^2+y^2)*sqrt(@p1*x+@p2*y)-@p3*x*cos(x^2-3*y^2) elseif @v2==60 pz=cosh(x^2+y^2)^2-exp(@p1*x+@p2*y)*(x^2-y^2)+(x^2+y^2-2*@p3^2)^2-x^2*@p4*(x^2+y^2) elseif @v2==61 pz=y^2*log(@p1+x)-x^2*log(3*@p2-x)+2*x^3+log(2*@p3*x*y^2)-3*x^2+cotan(@p4*y^2) elseif @v2==62 pz=144*@p1*(x^4+y^4)-225*@p2*(x^2+y^2)+350*x^2*y^2+81+3*@p3*y^2-x*(x-@p4)^2 elseif @v2==63 pz=27*@p1*y^2-(@p2-x)*(x+8*(@p3-0.75))^2+x*(@p3-0.75)*(x^2+y^2)-(@p4+4-1i)*(x^2+2*y^2) elseif @v2==64 pz=y^2-x^2*((@p1+2.5)^2-x^2)+(x^2+y^2)*(x^2+y^2-@p4^2)^2+4*(@p2+0.25+1i)^2*y^2*(x^2+y^2-@p3^2) elseif @v2==65 pz=y-8*@p1^3/(x^2+4*(@p2-1.5-0.25i)^2)+(x^2+y^2)^3-@p3*x*(x-(@p4-0.75+2.5i))+y*(y+@p3) elseif @v2==66 pz=y-x*(x^4-(@p1+3i))*cotan(x^2+@p2*y^2)^2+(x^3-x^2-(3*x+(@p3-4+0.75i))*y^2)*acosh(x^3-x^2+(3*x+(@p4-4.25+0.25i))*y^2) elseif @v2==67 pz=recip(@p1*(x^2-1))*@p2^2*x*tanh(@p1*(y^2-1))-@p1*@p2*cotanh(x*y+1)+x+cotanh(y^2)+cosh(@p3*x^3)+@p4*y^4+cotanh(@p3^2*@p4^2*x^5*y^5) elseif @v2==68 pz=(x^2-(@p1-0.9-2i)^2)*(x-@p2)+(y^2-(@p1-0.9-2i)^2)^2+(x^2-(@p3-0.4+0.8i)^2)*(x-(@p4-1-1.5i))^2+(y^2-(@p3-0.4+0.8i)^2)^3 elseif @v2==69 pz=(x^2-(@p1-2+0.25i))*(x-(@p1-2+0.25i))^3+(y^2-@p2^2)^2+((@p2*@p3-x)^2+(@p3-y)^2)/@p4^2-1 elseif @v2==70 pz=(@p1-2+0.25i)*(x^2+y^2)^2-@p2/(x^2-y^2)+(x^2+y^2)^4-@p3*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@p4) elseif @v2==71 pz=(2*@p1)^(@p2-4-1.5i)*y^2-(@p1+x)*(@p1-x)^((@p2-4-1.5i)+1)+(x^2+y^2)^5+@p3*(x^2-y^2)^3-(@p4-0.5-2.5i)^2*y elseif @v2==72 pz=(@p1+0.5+0.25i)*y-(@p2-2.25+3.5i)/(x*cos(x))+@p3/(x*cos(y))+(x^2+y^2)*(x^2-y^2)/(2*@p3*x*y)+(@p4-1) elseif @v2==73 pz=y^2+@p1*x^3*flip(x^2-y^2)-@p2*x^2*y*(x^2+y^2)+flip(@p2*@p3-x*y)^3+(@p3*@p4-(X^2+y^2)^2) elseif @v2==74 pz=y^2+x^2-((x+(@p3*(x-@p1))/sqrt((x-@p1)^2+(y-@p2)^2))-flip(y+(@p3*(y-@p2))/sqrt((x-@p1)^2 \ +(y-@p2)^2)))+x^2-4*@p3*y*log(x^2+y^2)+y^3*@p4^2*tan(x^2-y^2)^4 endif float f=|pz| float g=1/(f+1) float h=2*real(pz)*g float j=2*imag(pz)*g float k=(f-1)*g if @v==0 if i>0 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==1 if i>1 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==2 if i>-1 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==3 if i>2 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif endif i=i+1 b=h c=j d=k endfunc float func ResultIndex(complex pz) if @solid if @invert if a<=@sca index=@adj*a/(i-1) else m_Solid=true endif else if a>@sca index=@adj*a/(i-1) else m_Solid=true endif endif else index=@adj*a/(i-1) endif return index endfunc private: float a float b float c float d int i float index default: title="Langmod" int param version caption="Version" default=100 visible=@version<100 endparam param v2 caption="Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75" endparam param v caption="Variant 2" enum="1""2""3""4" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) endparam param p4 caption="Variant Parameter 4" default=(1,0) endparam func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=0.25 endparam param adj caption="Adjustment" default=1.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_SmescitResu(common.ulb:GradientColoring) { ;The basis of this coloring is from http://linas.org/art-gallery/escape/math.html public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 fpixel=pz endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+cosh(pz) elseif @v==2 pz=pz+1/cabs(pz) elseif @v==3 pz=pz+1/abs(pz) elseif @v==4 pz=pz+1/sqrt(pz) elseif @v==5 pz=pz+fpixel elseif @v==6 pz=pz+flip(fpixel) elseif @v==7 pz=pz-cosh(pz) elseif @v==8 pz=pz-recip(pz) elseif @v==9 pz=pz-1/cabs(pz) elseif @v==10 pz=pz+(pz-1i)/(pz+1i) elseif @v==11 pz=pz+recip(pz) elseif @v==12 pz=pz+log((pz-1i)/(pz+1i)) elseif @v==13 pz=pz+sqr((pz-1i)/(pz+1i)) elseif @v==14 pz=pz-(pz-1i)/(pz+1i) elseif @v==15 pz=pz-abs((pz-1i)/(pz+1i)) elseif @v==16 pz=pz+flip((pz-fpixel)/(pz+fpixel)) elseif @v==17 pz=pz+conj((pz-fpixel)/(pz+fpixel)) elseif @v==18 pz=pz+abs((pz-2)/(1-2*pz)) elseif @v==19 pz=pz+exp((pz-2)/(1-2*pz)) elseif @v==20 pz=pz-conj((pz-2)/(1-2*pz)) elseif @v==21 pz=pz-cabs((pz-2)/(1-2*pz)) elseif @v==22 pz=pz-exp((pz-2)/(1-2*pz)) elseif @v==23 pz=pz+((pz-(fpixel))/(1-(fpixel)*pz)) elseif @v==24 pz=pz+((pz-recip(fpixel))/(1-recip(fpixel)*pz)) elseif @v==25 pz=pz-((pz-recip(fpixel))/(1-recip(fpixel)*pz)) elseif @v==26 pz=pz^3+pz^2+pz+1 elseif @v==27 pz=pz^3+2*pz^2+2*pz+2 elseif @v==28 pz=0.5*pz^3+pz-1 elseif @v==29 pz=pz^3+0.5*pz^2-pz+0.8 elseif @v==30 pz=pz^3+pz^2+pz+fpixel elseif @v==31 pz=0.5*pz^4+0.5*pz^3-pz^2+0.1*pz+1 elseif @v==32 pz=-0.5*pz^4+pz^3-pz^2-pz+1 elseif @v==33 pz=exp(-((pz-2)/4)^2)*cos(pz*2*pi/4) elseif @v==34 pz=1.25*exp(-((pz-2)/4)^2)*cos(pz*2*pi/8) elseif @v==35 pz=-0.25*pz^3*exp(-pz)-1.3*pz elseif @v==36 pz=-3.75*pz/(1+pz^2)+1.5*pz elseif @v==37 pz=pz+1-(0.01/(2*pi))*sin(2*pi*pz) elseif @v==38 pz=pz+1.33-(-0.1/(2*pi))*sin(2*pi*pz) elseif @v==39 pz=recip(1+exp(1.75*pz)) elseif @v==40 pz=pz-(pz^3-1)/(3*pz^2) elseif @v==41 pz=pz-(pz^3-2)/(3*pz^2)+1 elseif @v==42 pz=pz-(pz^3+2)/(3*pz^2) elseif @v==43 pz=pz-(pz^3-fpixel)/(3*pz^2)-0.6 elseif @v==44 pz=pz-(pz^3-cosh(fpixel))/(3*pz^2) elseif @v==45 pz=pz-(pz^3-exp(fpixel))/(3*pz^2) elseif @v==46 pz=pz-(pz^3-1)/(3*pz^2)+cabs(fpixel) elseif @v==47 pz=pz-(pz^3-1)/(3*pz^2)+abs(fpixel) elseif @v==48 pz=pz-0.75*(pz^3-2.75)/(3*pz^2)+conj(fpixel) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a complex fpixel float index default: title="Smescit Resu" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SmescitResu2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @v=="Alain" pz=(x^2-y^2)^2-(@cp1+0.5)^2*x^2+(@cp2+1)^2*y^2 elseif @v=="Astroid" pz=x^(2/3)+y^(2/3)-@cp1^(2/3) elseif @v=="Atripthaloid" pz=x^4*(x^2+y^2)-((@cp2-0.25+0.75i)*x^2-(@cp1-0.65-0.9i)^3)^2 elseif @v=="Beetle" pz=(x^2+y^2)*(x^2+y^2-(@cp1-1.5+0.75i)*x-@cp2*y)-@cp3^2*x^2*y^2 elseif @v=="Besace" pz=(y+(@cp1-1.25-0.85i)*x^2)^2-x^2+x^4 elseif @v=="Biaxial Eight Reverse" pz=(@cp1+0.25-0.5i)^2*y^2-x^2*(y^2-x^2) elseif @v=="Bicorn" pz=y^2*((@cp1-0.3-0.2i)^2-x^2)-(x^2+2*(@cp1-0.3-0.2i)*y-(@cp1-0.3-0.2i)^2)^2 elseif @v=="Bicuspid" pz=(x^2-@cp1^2)*(x-@cp1)^2+(y^2-@cp1^2)^2 elseif @v=="Blade's Cubic" pz=x^3+y^3-@cp1^3 elseif @v=="Bow" pz=x^4-(@cp1+1+1i)*x^2*y+y^3 elseif @v=="Braked Parabola" pz=y-exp(x+@cp1*y) elseif @v=="Bullet-Nose" pz=(@cp1^2-x^2)*(@cp2^2+y^2)-@cp1^2*@cp2^2 elseif @v=="Cardioid" pz=(x^2+y^2-2*(@cp1-1.5)*x)^2-4*(@cp1-1.5)^2*(x^2+y^2) elseif @v=="Cartesian Oval" pz=@cp2*sqrt((x-(@cp1-0.5))^2+y^2)+(@cp3-01+0.5i)*sqrt((x+(@cp1-0.5))^2+y^2)-(@cp4-0.5+1i) elseif @v=="Cassinian Ovals" pz=(x^2+y^2)^2-2*(@cp1-0.35i)^2*(x^2-y^2)+(@cp1-0.35i)^4-@cp2^4 elseif @v=="Catenary" pz=y-@cp1*cosh(x/@cp1) elseif @v=="Chasles Cubic" pz=y-@cp1*x^3-@cp2*x^2*y-@cp3*x*y^2-@cp4*y^3 elseif @v=="Circle" pz=x^2+y^2-@cp1^2 elseif @v=="Circular Cubic" pz=x*(x^2+y^2)+@cp1*x^2+@cp2*y^2+2*@cp3*x+2*@cp4*y+@cp5 elseif @v=="Cissoid of Diocles 1" pz=y^2-x^3/(2*(@cp1-0.75)-x) elseif @v=="Cissoid of Diocles 2" pz=y^2*(2*(@cp1-1-0.5i)-x)-x^8 elseif @v=="Cissoid of zahradnik" pz=@cp3*x^2+2*@cp4*x*y+(@cp5+1)*y^2-2*@cp1*x-2*@cp2*y elseif @v=="Clairaut" pz=(x^2+y^2)^((@cp2+1)/2)-@cp1*y^@cp2 elseif @v=="Clinoid" pz=y-(@cp2-2+0.5i)*e^(x/(@cp1+1))-@cp3*e^(-x/(@cp1+1)) elseif @v=="Cochleoid" pz=(x^2+y^2)*atan(y/x)-(@cp1+1.5)*y elseif @v=="Conchal" pz=((x-(@cp1+0.45))+y^2)*(x+(@cp1+0.45))^2-@cp2^4 elseif @v=="Conchoid of a Circle" pz=(x^2+y^2+@cp3^2-(@cp2+0.25-0.25i)^2)^2*(y^2+(x+(@cp1+0.5i))^2)-4*@cp3^2*(x*(x+(@cp1+0.5i))+y^2)^2 elseif @v=="Conchoid of Nicomedes" pz=(x-@cp2)^2*(x^2+y^2)-(@cp1+1.25-0.25i)^2*x^2 elseif @v=="Conchoid of de Sluze" pz=(@cp1)*(x+@cp1)*(x^2+y^2)-(@cp2-1.15-1i)^2*x^2 elseif @v=="Conic Sections" pz=2*(@cp1-1.5+0.25i)^2*x+(1-(@cp1-1.5+0.25i)^2)*x^2+y^2-(@cp1-1.5+0.25i)^2 elseif @v=="Coriolis' Catenary" pz=y+@cp1*log(cos(x/@cp1)) elseif @v=="Cornoid" pz=(x^2+y^2)^3+(@cp1-0.3-0.45i)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*(@cp1-0.3-0.45i)^4*y^2-4*(@cp1-0.3-0.45i)^6 elseif @v=="Cramer" pz=x*(x^2+y^2)+(@cp1+0.15+@cp2)*x^2-(@cp1+0.15-@cp2)*y^2 elseif @v=="Cross" pz=@cp1^2*y^2+@cp2^2*x^2-x^2*y^2 elseif @v=="Cubic Joint" pz=y^2*x-@cp1*y^2-@cp2*x^2 elseif @v=="Cubic of Apollonius" pz=(x-2*(@cp1-0.85-0.25i))*(x^2+y^2)+@cp2^2*(cos(2*@cp3*x)+sin(2*@cp3*y)) elseif @v=="Deltoid 1" pz=(x^2+y^2+12*(@cp1-0.4)*x+9*(@cp1-0.4)^2)-4*(@cp1-0.4)*(2*x+3*(@cp1-0.4))^3 elseif @v=="Deltoid 2" pz=(x^2+y^2)^2+18*(@cp1-1.385+0.195i)^2*(x^2+y^2)-27*(@cp1-1.385+0.195i)^4-8*(@cp1-1.385+0.195i)*x*(x^2-3*y^2) elseif @v=="Devil 1" pz=y^4-x^4+(@cp1-4+1i)*y^2+(@cp2+2-0.4i)*x^2 elseif @v=="Devil 2" pz=y^4-x^4-(@cp1-1.35+1.5i)^2*y^2+(@cp2-2.4)^2*x^2 elseif @v=="Dipole" pz=(x^2+y^2)^3-(@cp1+0.35)^4*x^2 elseif @v=="Double U" pz=y^2*((@cp1-0.5i)^2-x^2)-(@cp1-0.5i)^4 elseif @v=="Dumbbell" pz=(@cp2-0.25i)^4*y^2-x^4*((@cp1-2.45)^2-x^2) elseif @v=="Duplicatrix Cubic" pz=(@cp1-2.3-0.265i)*y^2-x^2*(x-(@cp1-2.3-0.265i)) elseif @v=="Durer's Conchoid 1" pz=(x^2+x*y+@cp1*x-@cp2^2)^2-(@cp2^2-x^2)*(x-y+@cp1)^2 elseif @v=="Durer's Conchoid 2" pz=2*y^2*(x^2+y^2)-2*@cp2*y^2*(x+y)+(@cp2^2-3*@cp1^2)*y^2-@cp1^2*x^2+2*@cp1^2*@cp2*(x+y)+@cp1^2*(@cp1^2-@cp2^2) elseif @v=="Dwulistne" pz=(x^2+y^2)^2-((@cp1-2.85+0.75i)*x+(@cp2-1.25+2.65i)*y)*x^2 elseif @v=="Egg of Granville 1" pz=x^2*y^2-@cp1^2*(x-(@cp2-(@cp3-2.2+0.45i)))*(@cp2+(@cp3-2.2+0.45i)-x) elseif @v=="Egg of Granville 2" pz=x^2*y^2-(x-(@cp1-1.55+0.65i))*(1-x) elseif @v=="Egg of Kepler" pz=(x^2+y^2)^2-(@cp1-2.5+0.5i)*x^3 elseif @v=="Eight" pz=x^4-(@cp1+0.45+0.175i)^2*(x^2-y^2) elseif @v=="Ellipse" pz=x^2/(@cp1-0.6+0.65i)^2+y^2/@cp2^2-1 elseif @v=="Elongated Cissoid" pz=x*(x^2+y^2)-(@cp1+2*@cp2)*x^2-2*@cp3*x*y-@cp1*y^2 elseif @v=="Fish" pz=(2*x^2+y^2)^2+2*sqrt(2)*@cp1*x*(2*x^2-3*y^2)+2*@cp1^2*(y^2-x^2) elseif @v=="Focal Conic Conchoid" pz=(x^2+y^2-(@cp1-1-0.3i)*(@cp2-0.55)*x)^2-(x^2+y^2)*((@cp2-0.55)*x-((@cp1-1-0.3i)+1))^2 elseif @v=="Folium" pz=(x^2+y^2)*(y^2+x*(x+@cp2))-4*(@cp1-2+0.5i)*x*y^2 elseif @v=="Folium of Descartes" pz=x^3+y^3-3*(@cp1-2.9-0.45i)*x*y elseif @v=="Folium of Durer" pz=(x^2+y^2)*(2*(x^2+y^2)-(@cp1+0.225)^2)^2-(@cp1+0.225)^4*x^2 elseif @v=="Gompertz" pz=y-exp(-exp((@cp1-0.3-1.4i)-@cp2*x)) elseif @v=="Gudermannian" pz=tan(y)-exp(x) elseif @v=="Heat Capacity" pz=y-x-(@cp1+0.5+0.85i)/x^2 elseif @v=="Hippopede" pz=(x^2+y^2)^2-(@cp1+1i)*x^2-(@cp2+1-0.45i)*y^2 elseif @v=="Hippopede of Proclus" pz=(x^2+y^2)^2+4*(@cp2-0.35+0.15i)*((@cp2-0.35+0.15i)-@cp1)*(x^2+y^2)-4*(@cp2-0.35+0.15i)^2*x^2 elseif @v=="Hoerl" pz=y-x^(@cp1+0.5-0.25i)*e^x elseif @v=="Humbert's Cubic" pz=x^3-3*x*y^2-(@cp1+0.2-0.25i)^3 elseif @v=="Hyperbola 1" pz=x^2/(@cp1+0.25+0.5i)^2-y^2/(@cp2-1.25-1i)^2-1 elseif @v=="Hyperbola 2" pz=x^2/(@cp1-1.5-1.25i)^2-y^2/(@cp2-0.25+0.5i)^2+1 elseif @v=="Hyperbolic" pz=x^(@cp1-2-0.5i)*y^@cp2-@cp3 elseif @v=="Hyperbolic Lemniscate" pz=(x^2+y^2)^2-(@cp1-2.35+0.3i)^2*x^2+(@cp2-1.5+1.95i)^2*y^2 elseif @v=="Hyperbolic Spiral" pz=sqrt(x^2+y^2)*atan(y/x)-(@cp1-3-0.3i) elseif @v=="Inverse Logarithmic Curve" pz=y-(@cp2-1.65-1.7i)*exp(@cp1/x) elseif @v=="Isoptic" pz=tan(@cp1+5.85+0.125i)^2*(x+pi/2)^2-y^2+2*@cp2*x elseif @v=="Jefabek" pz=(@cp2-1.15+0.65i)^2*(x^2+y^2-(@cp1-1.85-0.35i)*x)^2-(@cp1-1.85-0.35i)^2*(x^2+y^2)*(x-(@cp1-1.85-0.35i))^2 elseif @v=="Kampyle of Eudoxus" pz=@cp1^2*x^4-(@cp2-0.9-1i)^4*(x^2+y^2) elseif @v=="Kappa" pz=y^2*(x^2+y^2)-(@cp1-1.75+0.5i)^2*x^2 elseif @v=="Kepler's Folium" pz=((x-(@cp2-1-0.5i))^2+y^2)*(x*(x-(@cp2-1-0.5i))+y^2)-4*@cp1*(x-(@cp2-1-0.5i))*y^2 elseif @v=="Kiepert" pz=(x^2+y^2)^3-(@cp1-0.4-1.2i)^3*x*(x^2-3*y^2) elseif @v=="Kieroid" pz=y^2*(x-(@cp1+1-0.25i))^2+x^2*(x-(@cp2-1.25+0.25i))^2-(@cp3+0.65-0.25i)^2*x^2 elseif @v=="Kiss" pz=(@cp1-0.1-0.4i)^4*y^2-((@cp1-0.1-0.4i)^2-x^2)^3 elseif @v=="Klein Quartic" pz=(x^2+y^2-(@cp2+0.5-0.25i)*@cp1^2)^2-@cp3*@cp1*(y-@cp1+sqrt(3)*x)*(y-@cp1-sqrt(3)*x)*(2*y+@cp1) elseif @v=="Kulp Quartic" pz=x^2*y^2-(@cp1-0.35-0.6i)^2*((@cp1-0.35-0.6i)^2-y^2) elseif @v=="Lemniscate of Bernoulli" pz=(x^2+y^2)^2-(@cp1+0.65)^2*(x^2-y^2) elseif @v=="Lemniscate of Booth" pz=(x^2+y^2)^2-(2*@cp1^2+(@cp2-0.25-0.5i))*x^2+(2*@cp1^2-(@cp2-0.25-0.5i))*y^2 elseif @v=="Lemniscate of Montferrier" pz=@cp2^2*y^2-x^2*((@cp1-2.55-0.125i)^2-x^2) elseif @v=="Lemniscatrix of Ökinghaus" pz=y-log(cos(x)+sqrt(1+cos(x)^2)) elseif @v=="Limacon of Pascal 1" pz=(x^2+y^2-@cp1*y)^2-(x^2+y^2) elseif @v=="Limacon of Pascal 2" pz=(x^2+y^2-@cp1*x)^2-(@cp2+0.8-0.25i)^2*(x^2+y^2) elseif @v=="Lissajous 1" pz=2*(2*x^2-(@cp1-2)^2)^2-(@cp1-2)*(2*y-(@cp1-2))^2*(y+(@cp1-2)) elseif @v=="Lissajous 2" pz=x^2*(4*x^2-3*(@cp1-2)^2)+4*(@cp1-2)^2*y^2*(y^2-(@cp1-2)^2) elseif @v=="Lissajous Quadratic" pz=(@cp1-0.75-0.4i)^4*y^4-4*(@cp1-0.75-0.4i)^3*@cp2*x*y^3+2*(@cp1-0.75-0.4i)^2*@cp2*y^3 \ +6*(@cp1-0.75-0.4i)^2*@cp2^2*x^2*y^2-4*(@cp1-0.75-0.4i)*@cp2^2*x*y^2-2*(@cp1-0.75-0.4i)^3*x*y^2 \ -2*(@cp1-0.75-0.4i)^2*@cp2^2*y^2+@cp2^2*y^2+(@cp1-0.75-0.4i)^2*y^2 \ -4*(@cp1-0.75-0.4i)*@cp2^3*x^3*y+2*@cp2^3*x^2*y+4*(@cp1-0.75-0.4i)^2*@cp2*x^2*y+4*(@cp1-0.75-0.4i)*@cp2^3*x*y \ -2*@cp2^3*y-4*(@cp1-0.75-0.4i)^2*@cp2*y+@cp2^4*x^4-2*(@cp1-0.75-0.4i)*@cp2^2*x^3-2*@cp2^4*x^2 \ +@cp2^2*x^2+(@cp1-0.75-0.4i)^2*x^2+2*(@cp1-0.75-0.4i)*@cp2^2*x-(@cp1-0.75-0.4i)^2-@cp2^2+@cp2^4 elseif @v=="Logarithmic Lemniscate" pz=y^2-x^2*log((@cp1+1.25-0.4i)^2/x^2) elseif @v=="Logarithmic Sinusoid" pz=y-log(sqrt(1-x^2)) elseif @v=="Logistic Growth" pz=y-recip(1+(@cp1+0.35-0.5i)*e^x) elseif @v=="Loriga" pz=3*x^2-y^2-@cp1^2 elseif @v=="Maltese Cross" pz=x*y*(x^2-y^2)-x^2-y^2 elseif @v=="Neile's Semi-Cubical Parabola" pz=y^3-@cp1*x^2 elseif @v=="Nephroid" pz=(x^2+y^2-4*(@cp1-1.3+0.4i)^2)^3-108*(@cp1-1.3+0.4i)^4*x^2 elseif @v=="Nephroid of Freeth" pz=(x^2+y^2)*(x*2+y^2-(@cp1-0.85+0.1i)^2)^2-4*(@cp1-0.85+0.1i)^2*(x^2+y^2-(@cp1-0.85+0.1i)*x)^2 elseif @v=="Newton's Diverging Parabolas 1" pz=(@cp1-1.5-1.85i)*y^2-x*(x^2-2*@cp2*x+@cp3) elseif @v=="Newton's Diverging Parabolas 2" pz=y^2-x*(x^2+2*@cp1*x+@cp2) elseif @v=="Oblique Astroid" pz=((x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)^3+27*@cp2^2*x^2*y^2*sin(@cp1)^2)*sin(@cp1)^2\ -@cp2^2*cos(@cp1)*((x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)^2*cos(@cp1)-\ 2*x*y*(9*(x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)*sin(@cp1)^2-8*@cp2^2*cos(@cp1)^2)) elseif @v=="Oblique Bifolium" pz=(x^2+y^2)^2-x^2*((@cp1-2.9+0.125i)*x+@cp2*y) elseif @v=="Oblique Cappa" pz=(x^2+y^2)*y^2-@cp1^2*(x*sin(@cp2)+y*cos(@cp2))^2 elseif @v=="Oblique Cissoid" pz=(x^2+y^2)*(x*cos(@cp2)+y*sin(@cp2))-2*@cp1*y^2 elseif @v=="Oblique Conchoid" pz=(x*y*cos(@cp1)-(y^2+@cp2*y-@cp3^2)*sin(@cp1))^2-(x*sin(@cp1)+y*cos(@cp1)+@cp2*cos(@cp1))^2*(@cp3^2-y^2) elseif @v=="Oblique Pancappa" pz=(y-(@cp1+0.3-0.2i))^2*(x^2+y^2)-(@cp2*x+@cp3*y)^2 elseif @v=="Oblique Parabolic Bifolium" pz=x^3-(@cp1-1.4-0.25i)*(x^2-y^2)-@cp2*x*y elseif @v=="Oblique Strophoid 1" pz=y*(x^2+y^2)-(@cp1-3+0.25i)*(x^2-y^2)-2*(@cp2-1.25-1i)*x*y elseif @v=="Oblique Strophoid 2" pz=x*(x^2+y^2)-@cp1*((x^2-y^2)*sin(@cp2-1.7+0.15i)+2*x*y*cos(@cp2-1.7+0.15i)) elseif @v=="Oblique Trifolium" pz=(x^2+y^2)^2/(2*@cp1)-x*(x^2+y^2)-(x^2-3*y^2)*(x*cos(2*@cp2)+y*sin(@cp2)) elseif @v=="Oblique Versiera" pz=(x^2+y^2)*(x*cos(@cp1+0.55-0.29i)+y*sin(@cp1+0.55-0.29i)-4*cos(@cp1+0.55-0.29i)^2)+2*@cp2*y^2 elseif @v=="Ophiuride" pz=x*(x^2+y^2)-@cp2*x*y-@cp1*y^2 elseif @v=="Orthoconchoid" pz=(y^2+@cp1*y-@cp2^2)^2-x^2*(@cp2^2-y^2) elseif @v=="Oval of Münger" pz=(x^2+y^2)^(2*@cp1+1)-2*(@cp2-1.6-2.225i)*x^(2*@cp1+1)*(x^2+y^2)^@cp1+((@cp2-1.6-2.225i)^2-@cp3^2)*x^(4*@cp1)*@cp4\ -2*(@cp2-1.6-2.225i)*@cp4*cos(@cp5)^(2*@cp1+1)+((@cp2-1.6-2.225i)^2-@cp3^2)*cos(@cp5)^(4*@cp1) elseif @v=="Parabola 1" pz=4*(@cp1-0.9)*(x-@cp2)-(y-@cp3)^2 elseif @v=="Parabola 2" pz=x-@cp1*(y-@cp2)^2-@cp3 elseif @v=="Parabola 3" pz=y-@cp1*x^2-@cp2*x-@cp3 elseif @v=="Parabolic Trifolium" pz=x^2*(x^2+y^2)-(@cp1-0.75-0.2i)*y*(x^2-y^2) elseif @v=="Pear-Shaped Quartic" pz=@cp2^2*y^2-x^3*(@cp1-x) elseif @v=="Pearls of Sluze" pz=y^@cp2-@cp3*(@cp1-x)^@cp4*x^(@cp5-0.75+0.25i) elseif @v=="Planck Radiation" pz=y-cotanh(1/((@cp1-0.85+1.125i)*x))/x^4 elseif @v=="Power Exponential" pz=y-x^(@cp1*x+@cp2) elseif @v=="Pursuit 1" pz=y-(@cp1-0.8+0.7i)*x^2+log(x) elseif @v=="Pursuit 2" pz=y-(@cp1-2.125-1.6i)*x+log(x) elseif @v=="Quadratix of Hippias" pz=x-y*cotan(y/@cp1) elseif @v=="Quadrifolium" pz=(x^2+y^2)^3-4*(@cp1-2.75)^2*x^2*y^2 elseif @v=="Regular Trifolium" pz=(x^2+y^2)^2-(@cp1-2.75-0.25i)*x*(x^2-3*y^2) elseif @v=="Richards" pz=y-1/(1+exp(x))^@cp1 elseif @v=="Right Strophoid" pz=y^2-x^2*((@cp1-1.8-0.6i)-x)/((@cp1-1.8-0.6i)+x) elseif @v=="Rose 1" pz=x-@cp1*sin(@cp2*y) elseif @v=="Rose 2" pz=x-(@cp1-2.5-1.35i)*cos(@cp2*y) elseif @v=="Rosillo" pz=y^2*(@cp3-x)^2-((@cp2-1.75)-x)^2*((@cp1-2)^2-x^2) elseif @v=="Satchel" pz=(x^2-(@cp2+0.42+0.87i)*y)^2-@cp1^2*(x^2-y^2) elseif @v=="Scarab" pz=(x^2+y^2)*(x^2+y^2+(@cp1+1.32-0.225i)*x)^2-@cp2^2*(x^2-y^2)^2 elseif @v=="Scyphoid" pz=x^4-y^4-4*(@cp1-2.5+0.25i)*x*y^2 elseif @v=="Semi-Trident" pz=x*y^2-@cp1*x elseif @v=="Serpentine" pz=y-@cp1*@cp2*x/(x^2+@cp1^2) elseif @v=="Sinus Chain" pz=y^2-abs(sin(x)+0.1*sin(2*x)) elseif @v=="Spiric" pz=(x^2+y^2)^2+((@cp1-0.5+3i)-2)*x^2+@cp2*y^2+2*@cp3*x+@cp4 elseif @v=="Spiric of Perseus" pz=(x^2+y^2)^2-2*@cp1*x^2-2*(@cp2+0.7-0.15i)*y^2+(@cp3+1.125-0.65i) elseif @v=="Spiric Sections" pz=(@cp3^2-@cp1^2+(@cp2-1.15-0.95i)^2+x^2+y^2)^2-4*@cp3^2*(x^2+(@cp2-1.15-0.95i)^2) elseif @v=="Superellipse 1" pz=(x/@cp1)^@cp3+(y/@cp2)^@cp3-1 elseif @v=="Superellipse 2" pz=cabs((x-@cp1)/@cp3)^@cp4+cabs((y-@cp2)/@cp3)^@cp4-1 elseif @v=="Syntractrix" pz=x+sqrt((@cp2+0.65i)^2-y^2)-@cp1*log(((@cp2+0.65i)+sqrt((@cp2+0.65i)^2-y^2))/y) elseif @v=="Szego" pz=x^2+y^2-e^(2*x-2) elseif @v=="Teardrop" pz=y^2-x^@cp1*(1-x) elseif @v=="Tetracuspid" pz=(@cp1+0.45-0.4i)^@cp2*(cabs(x)^@cp2+cabs(y)^@cp2)-(x^2+y^2)^@cp2 elseif @v=="Torpedo" pz=(x^2+y^2)^2-(@cp1-3.5-0.2i)*x*(x^2-y^2) elseif @v=="Tractrix" pz=x-log((@cp1-sqrt(@cp1^2-y^2))/y)-sqrt(@cp1^2-y^2) elseif @v=="Trident 1" pz=y-x^2-(@cp1-0.75-1i)/x elseif @v=="Trident 2" pz=x*y+@cp1*x^3+@cp2*x^2+@cp3*x-(@cp4+0.16-0.124i) elseif @v=="Trifolium 1" pz=(x^2+y^2)^2-(x^2+y^2)*((@cp1-3-0.125i)*x+@cp2*y)-@cp3*x*(x^2-3*y^2) elseif @v=="Trifolium 2" pz=(x^2+y^2)^2-((@cp1-3-0.125i)*x+@cp2*y)*(x^2-y^2) elseif @v=="Trisectrix of Delange" pz=(x^2+y^2-2*(@cp1-0.15+0.1i)^2)^2-x^2*(x^2+y^2) elseif @v=="Trisectrix of Maclaurin" pz=y^2*((@cp1-1.55+0.15i)+x)-x^2*(3*(@cp1-1.55+0.15i)-x) elseif @v=="Tschirnhaus' Cubic" pz=3*(@cp1-2.5+0.6i)*y^2-x*(x-(@cp1-2.5+0.6i))^2 elseif @v=="Besace" pz=(y+@cp1*x^2)^2-x^2+x^4 elseif @v=="Visiera" pz=x*(x^2+y^2)-(@cp1-1.95-0.2i)*(x^2+2*y^2) elseif @v=="Viviani's" pz=y^2-x^2*((@cp1-2-0.325i)^2-x^2) elseif @v=="Watt's" pz=(x^2+y^2)*(x^2+y^2-@cp3^2)^2+4*(@cp1-0.375-1.95i)^2*y^2*(x^2+y^2-(@cp2-2.325-0.125i)^2) elseif @v=="Weibull" pz=y-exp(-(x/(@cp1-0.2+0.58i))^(@cp2+2)) elseif @v=="Witch of Agnesi" pz=y-8*@cp1^3/(x^2+4*@cp1^2) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a float index default: title="Smescit Resu 2 (Curves)" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Curve" enum="Alain""Astroid""Atripthaloid""Beetle""Besace""Biaxial Eight Reverse"\ "Bicorn""Bicuspid""Blade's Cubic""Bow""Braked Parabola""Bullet-Nose"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Chasles Cubic"\ "Circle""Circular Cubic""Cissoid of Diocles 1""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clairaut""Clinoid""Cochleoid""Conchal""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Conic Sections""Coriolis' Catenary" \ "Cornoid""Cramer""Cross""Cubic Joint""Cubic of Apollonius" \ "Deltoid 1""Deltoid 2""Devil 1""Devil 2""Dipole""Double U"\ "Dumbbell""Duplicatrix Cubic""Durer's Conchoid 1""Durer's Conchoid 2" \ "Dwulistne""Egg of Granville 1""Egg of Granville 2""Egg of Kepler" \ "Eight""Ellipse""Elongated Cissoid""Fish""Focal Conic Conchoid""Folium""Folium of Descartes" \ "Folium of Durer""Gompertz""Gudermannian""Heat Capacity""Hippopede""Hippopede of Proclus""Hoerl""Humbert's Cubic" \ "Hyperbola 1""Hyperbola 2""Hyperbolic""Hyperbolic Lemniscate""Hyperbolic Spiral" \ "Inverse Logarithmic Curve""Isoptic""Jefabek""Kampyle of Eudoxus""Kappa""Kepler's Folium" \ "Kiepert""Kieroid""Kiss""Klein Quartic""Kulp Quartic""Lemniscate of Bernoulli" \ "Lemniscate of Booth""Lemniscate of Montferrier""Lemniscatrix of Ökinghaus" \ "Limacon of Pascal 1""Limacon of Pascal 2""Lissajous 1" \ "Lissajous 2""Lissajous Quadratic""Logarithmic Lemniscate""Logarithmic Sinusoid" \ "Logistic Growth""Loriga""Maltese Cross""Neile's Semi-Cubical Parabola""Nephroid" \ "Nephroid of Freeth""Newton's Diverging Parabolas 1""Newton's Diverging Parabolas 2" \ "Oblique Astroid""Oblique Bifolium""Oblique Cappa""Oblique Cissoid" \ "Oblique Conchoid""Oblique Pancappa""Oblique Parabolic Bifolium""Oblique Strophoid 1" \ "Oblique Strophoid 2""Oblique Trifolium""Oblique Versiera""Ophiuride""Orthoconchoid" \ "Oval of Münger""Parabola 1""Parabola 2""Parabola 3""Parabolic Trifolium""Pear-Shaped Quartic" \ "Pearls of Sluze""Planck Radiation""Power Exponential""Pursuit 1""Pursuit 2""Quadratix of Hippias""Quadrifolium" \ "Regular Trifolium""Richards""Right Strophoid""Rose 1""Rose 2""Rosillo""Satchel""Scarab""Scyphoid" \ "Semi-Trident""Serpentine""Sinus Chain""Spiric""Spiric of Perseus""Spiric Sections" \ "Superellipse 1""Superellipse 2""Syntractrix""Szego""Teardrop""Tetracuspid""Torpedo""Tractrix" \ "Trident 1""Trident 2""Trifolium 1""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin" \ "Tschirnhaus' Cubic""Visiera""Viviani's""Watt's""Weibull""Witch of Agnesi" endparam param cp1 caption="Curve Parameter" default=(1,0) visible=@v!="Lemniscatrix of Ökinghaus" && @v!="Logarithmic Sinusoid" && @v!="Maltese Cross" \ && @v!="Sinus Chain" && @v!="Szego" && @v!="Gudermannian" endparam param cp2 caption="Curve Parameter 2" default=(1,0) visible=@v!="Astroid" && @v!="Besace" && @v!="Biaxial Eight Reverse" && @v!="Bicorn" \ && @v!="Bicuspid" && @v!="Blade's Cubic" && @v!="Bow" && @v!="Braked Parabola" && @v!="Cardioid" \ && @v!="Catenary" && @v!="Circle" && @v!="Cissoid of Diocles 1" \ && @v!="Cissoid of Diocles 2" && @v!="Cochleoid" && @v!="Conic Sections" \ && @v!="Coriolis' Catenary" && @v!="Cornoid" && @v!="Deltoid 1" && @v!="Deltoid 2" \ && @v!="Dipole" && @v!="Double U" && @v!="Duplicatrix Cubic" \ && @v!="Egg of Granville 2" && @v!="Egg of Kepler" && @v!="Eight" \ && @v!="Fish" && @v!="Folium of Descartes" && @v!="Folium of Durer" && @v!="Gudermannian" && @v!="Heat Capacity" \ && @v!="Hoerl" && @v!="Humbert's Cubic" && @v!="Hyperbolic Spiral" && @v!="Kappa" && @v!="Kiepert" \ && @v!="Kiss" && @v!="Kulp Quartic" && @v!="Lemniscate of Bernoulli" && @v!="Lemniscatrix of Ökinghaus" \ && @v!="Limacon of Pascal 1" && @v!="Lissajous 1" && @v!="Lissajous 2" \ && @v!="Logarithmic Lemniscate"&& @v!="Logarithmic Sinusoid" \ && @v!="Logistic Growth" && @v!="Loriga" && @v!="Maltese Cross" && @v!="Neile's Semi-Cubical Parabola" \ && @v!="Nephroid" && @v!="Nephroid of Freeth" && @v!="Parabolic Trifolium" && @v!="Planck Radiation" \ && @v!="Pursuit 1" && @v!="Pursuit 2" && @v!="Quadratix of Hippias" && @v!="Quadrifolium" \ && @v!="Regular Trifolium" && @v!="Richards" && @v!="Right Strophoid" && @v!="Scyphoid" && @v!="Semi-Trident" \ && @v!="Sinus Chain" && @v!="Szego" && @v!="Teardrop" && @v!="Torpedo" && @v!="Tractrix" && @v!="Trident 1" \ && @v!="Trisectrix of Delange" && @v!="Trisectrix of Maclaurin" && @v!="Tschirnhaus' Cubic" && @v!="Visiera" \ && @v!="Viviani's" && @v!="Witch of Agnesi" endparam param cp3 caption="Curve Parameter 3" default=(1,0) visible=@v=="Beetle" || @v=="Cartesian Oval" || @v=="Chasles Cubic" \ || @v=="Circular Cubic" || @v=="Cissoid of Zahradnik" || @v=="Clinoid" \ || @v=="Conchoid of a Circle" || @v=="Cubic of Apollonius" \ || @v=="Egg of Granville 1" || @v=="Elongated Cissoid" || @v=="Hyperbolic" || @v=="Kieroid" || @v=="Klein Quartic" \ || @v=="Newton's Diverging Parabolas 1" || @v=="Oblique Pancappa" || @v=="Oblique Conchoid" || @v=="Oval of Münger" \ || @v=="Parabola 1" || @v=="Parabola 2" || @v=="Parabola 3" || @v=="Pearls of Sluze" || @v=="Rosillo" \ || @v=="Spiric" || @v=="Spiric of Perseus" || @v=="Spiric Sections" || @v=="Superellipse 1" || @v=="Superellipse 2" \ || @v=="Trident 2" || @v=="Trifolium 1" || @v=="Watt's" endparam param cp4 caption="Curve Parameter 4" default=(1,0) visible=@v=="Cartesian Oval" || @v=="Chasles Cubic" || @v=="Circular Cubic" \ || @v=="Cissoid of Zahradnik" || @v=="Oval of Münger" || @v=="Pearls of Sluze" \ || @v=="Spiric" || @v=="Superellipse 2" || @v=="Trident 2" endparam param cp5 caption="Curve Parameter 5" default=(1,0) visible=@v=="Circular Cubic" || @v=="Cissoid of Zahradnik" || @v=="Oval of Münger" || @v=="Pearls of Sluze" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SmescitResu3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @V=="Bogdanov" pz=flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y elseif @V=="Bogdanov-Takens" pz=y+flip(@p1+@p2*x+x^2-x*y) elseif @V=="Brusselator" pz=(1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3) elseif @V=="Buckling Column Model" pz=y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4) elseif @V=="Burgers" pz=@p1*x-y^2+flip(@p2*y+x*y) elseif @V=="Cao-Lai" pz=@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)) elseif @V=="Cathala 1" pz=@p1*x+y+flip(@p2/2+x^2) elseif @V=="Cathala 2" pz=(1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3) elseif @V=="Chip" pz=y-(x/cabs(x))*cos(sqr(log(abs((@p2-1+1i)*x-@p3))))*atan(sqr(log(abs(@p3*x-(@p2-1+1i)))))+flip(@p1-x) elseif @V=="Chirikov Mod" pz=x+y+((@p1-0.65-0.2i)/2*pi)*sin(2*pi*x)+flip(y+((@p1-0.65-0.2i)/2*pi)*sin(2*pi*x)) elseif @V=="Coupled Logistic" pz=(1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)) elseif @V=="Cremona" pz=x*cos(@p1)-(y-x^2)*sin(@p1)+flip(x*sin(@p1)-(y-x^2)*cos(@p1)) elseif @V=="Damped Pendulum" pz=y+flip(-@p1*sin(x)-@p2*y) elseif @V=="de Jong" pz=sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)) elseif @V=="Duffing 1" pz=y+flip(x-x^3-@p1*y+@p2) elseif @V=="Duffing 2" pz=y+flip(-@p1*x-@p2*x^3+@p3) elseif @V=="Duffing 3" pz=y+flip(-x-x^3+(@p1+@p2*x^2+@p3*@p4*x)*y+@p4*@p5) elseif @V=="Duffing 4" pz=y+flip(-@p1*x-(((@p2+1i)-@p1)/2)*(cabs(x+1)-cabs(x-1))-@p3*y+@p4) elseif @V=="Duffing 5" pz=y+flip(-@p1*x-@p2*x^3-@p3*x^5+(@p4-2+1i)) elseif @V=="Duffing 6" pz=y+flip(-@p2*x+@p1*y-y^3) elseif @V=="Garrote-Mira" pz=y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)) elseif @V=="Gingerbread" pz=1-(@p1-2.15-0.25i)*y+@p2*cabs(x)+flip(x) elseif @V=="Gumowski-Mira 1" k=x x=y+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) pz=x+flip(y) elseif @V=="Gumowski-Mira 2" k=x x=y+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) pz=x+flip(y) elseif @V=="Gumowski-Mira 3" k=x x=y+(@p2+0.25-0.5i)*y*(1-(@p2+0.25-0.5i)*y^2)+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) pz=x+flip(y) elseif @V=="Gumowski-Mira 4" k=x x=y+@p2*y*(1-@p2*y^2)+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) pz=x+flip(y) elseif @V=="Gumowski-Mira 5" pz=@p1*(x*cos(@p2)-y*sin(@p2))+x*y+flip(@p1*(x*sin(@p2)+y*cos(@p2))+x^2+y^3) elseif @V=="Gumowski-Mira Mod 1" pz=(1-(@p1+0.1i))*x+y+flip(y+(@p2-0.55-0.35i)*x+2*(1-(@p2-0.55-0.35i))*x^2*(1+x^2)^(-2)) elseif @V=="Gumowski-Mira Mod 2" pz=@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V=="Hamilton" pz=x+(@p1-1+0.25i)*@p2*sin(2*pi*y)+flip(y-((@p1-1+0.25i)/@p2)*sin(2*pi*(x+(@p1-1+0.25i)*@p2*sin(2*pi*y)))) elseif @V=="Hamilton Torus" pz=-sin(y)*(1-(@p1-0.25+1.25i))+flip(sin(x)*(1+(@p1-0.25+1.25i))) elseif @V=="HCA" pz=1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)) elseif @V=="Henon 1" pz=1-@p1*x^2+y+flip(@p2*x) elseif @V=="Henon 2" pz=-(y-x^2)*sin(2*pi/@p1)+x*cos(2*pi/@p1)\ +flip((y-x^2)*cos(2*pi/@p1)+x*sin(2*pi/@p1)) elseif @V=="Henon 3" pz=y+flip(@p2^(-1)*(1-@p1*y^2-@p2*x)) elseif @V=="Henon 4" pz=exp(-@p1*@p2/2)*(x*cos(@p2*@p3)+(1/@p3)*(y-(@p4+x^2)+@p1*x/2)*sin(@p2*@p3))\ +flip(exp(-@p1*@p2/2)*(-@p3*x*sin(@p2*@p3)+(y-(@p4+x^2)+@p1*x/2)*cos(@p2*@p3))-@p1*x/2) elseif @V=="Henon 5" pz=y+(@p1-1.85-0.85i)*cos(pi*x/2)-1+flip(@p2*x) elseif @V=="Henon-Heiles 1" pz=-@p1*x-@p2*x*y+flip(-@p3*y-@p4*x^2+@p5*y^2) elseif @V=="Henon-Heiles 2" pz=y+flip(-@p1*x-@p2*x^2+@p3) elseif @V=="Hopalong" pz=y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x) elseif @V=="Horsthemke-Lefever" pz=@p1*x*(1-x/(@p3-1.8-0.45i))-@p2*x*y+flip(-@p2*x*y+(@p4+1.125+0.65i)*(@p5-y)) elseif @V=="Ikeda" pz=@p1+(@p2-2.25+0.125i)*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip((@p2-2.25+0.125i)*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Ilhem-Amel 1" pz=x^3+(@p1-1.45+0.15i)*x+@p2+y+flip(@p3*x) elseif @V=="Ilhem-Amel 2" pz=(@p4-0.5)*x^3+(@p1-0.375-2.4i)*x+@p2/2+@p5*y+flip(@p3*x+@p6*y) elseif @v=="Jiang" pz=y+flip(x+@p1*x^2+(@p2-0.65+4.7i)*y^2-(@p3-0.065-2.75i)*x*y-(@p4+1.1+0.2i)) elseif @V=="Kam Torus" pz=x*cos(@p1-2.1-1.5i)+(x^2-y)*sin(@p1-2.1-1.5i)+flip(x*sin(@p1-2.1-1.5i)-(x^2-y)*cos(@p1-2.1-1.5i)) elseif @V=="Kan" pz=@p3*sin(y+sin(@p1*y))+flip((@p4-0.58)*sin(x+sin(@p2*x))) elseif @v=="Knot" pz=-y+flip(x^4-y) elseif @V=="Kolmogorov-Volterra" pz=(x*((@p1-1.15+0.75i)-x^2)-@p2*x*y)/(1+x^2)+flip((@p3*x^2-1)*y/(1+x^2)) elseif @v=="Li" pz=(@p1-2.575+0.9i)*cos(y)+flip(@p2*x*sin(y)) elseif @V=="Lozi" pz=1+y-@p1*cabs(x)+flip(@p2*x) elseif @V=="Marotto-Lorenz" pz=(1-(@p1-0.5-0.15i)*x-@p2*y)*((@p1-0.5-0.15i)*x+@p2*y)+flip(x) elseif @V=="Martin" pz=y+sin(x)+flip(@p1-x) elseif @V=="Mira 1" pz=@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V=="Mira 1" pz=x^2-y^2+(@p1-0.7)*x+@p2+flip(2*x*y-5*(@p1-0.7)*y/2+@p3) elseif @V=="Mira 2" pz=(1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3) elseif @V=="Mira 3" pz=(@p1-1-1.5i)*x+y+flip(@p2+x^2) elseif @V=="Modified Lozi" pz=1+@p1*(cabs(x)-y^2)+y+flip(@p2*x) elseif @V=="Nowicki-Swirszcz" pz=3*x*((x-y)^2-(@p1+3.5-1i))/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)) elseif @V=="Multifold Henon" pz=1-@p1*sin(x)+@p2*y+flip(x) elseif @V=="Oscillating Chemical Reaction" pz=((@p1-4.9-1.75i)-x-4*x*y)/(1+x^2)+flip((@p2-2.2-3.55i)*x*(1-y)/(1+x^2)) elseif @V=="Pendulum" pz=y+flip(-sin(x)+@p1) elseif @V=="Pendulum Morozov" pz=y+flip(-sin(x)+y*(@p1+(@p2+2.95-1.25i)*cos(@p3*x))*(-@p4)) elseif @V=="Pharaoh" pz=-y+@p1*cos(x)*sin(1-real(pz)^2-y^2)+@p3+flip(x+@p2*cos(y)*sin(1-x^2-y^2)+@p4) elseif @V=="Pickover 1" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Pickover 2" pz=sin(@p1*y)+sqr(sin(@p1*x))+flip(sin(@p2*x)+sqr(sin(@p2*y))) elseif @V=="Pickover 3" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin((@p2-4.3-0.9i)*x)+(sin((@p2-4.3-0.9i)*y))^2+(sin(@p3*y))^3) elseif @V=="Pickover 4" pz=abs(sin(@p1*y))+(sin(@p1*x))^2+flip(abs(sin(@p2*x))+(sin(@p1*y))^2) elseif @V=="Pickover 5" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin((@p3+2-1i)*x)+@p4*cos((@p3+2-1i)*y)) elseif @V=="Pickover 6" pz=x-(@p1+0.325+0.85i)*sin(y+tan((@p2-2+1i)*y))+flip(y-(@p1+0.325+0.85i)*sin(x+tan((@p2-2+1i)*x))) elseif @V=="Pickover 7" pz=@p1*sin(y+tan((@p2-1+1i)*y))+flip(@p1*sin(x+tan((@p2-1+1i)*x))) elseif @V=="Polyharmonic Pendulum" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Quadruptwo" pz=y-(x/cabs(x))*sin(log(abs((@p2-1+0.5i)*x-@p3)))*atan(sqr(log(abs(@p3*x-(@p2-1+0.5i)))))+flip(@p1-x) elseif @V=="Rayleigh" pz=y+flip(-(x+@p2*y^3-@p1*y)/@p3) elseif @V=="Sine" pz=y+flip((@p1-2.35+1.75i)*sin(x)+(@p2-0.65-4.5i)*y) elseif @V=="Sine-Sine" pz=sin(x)-sin(2*y)+flip(x) elseif @V=="Sprott" pz=(1+(@p1-2.325+1i)*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2) elseif @V=="Sprott-Elhadj" pz=(@p1-2.325-2.65i)*x/(1+y^2)+flip(x+@p2*y) elseif @V=="Standard Map" pz=x+@p1*sin(y)+flip(y+x+@p1*sin(y)) elseif @V=="Strelkova-Anishchenko" pz=1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)) elseif @V=="Svensson" pz=@p4*sin((@p1+0.5+0.5i)*x)-sin((@p2-3.8-0.33i)*y)+flip(@p3*cos((@p1+0.5+0.5i)*x)+cos((@p2-3.8-0.33i)*y)) elseif @V=="Threeply" pz=y-(x/cabs(x))*(abs(sin(x)*cos(@p2-1+1i)+@p3-x*sin((@p1-5.3+0.58i)+(@p2-1+1i)+@p3)))+flip((@p1-5.3+0.58i)-x) elseif @V=="Tinkerbell" pz=x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y) elseif @V=="Ushiki" pz=((@p1-3.7+0.2i)-x-@p2*y)*x+flip((@p3-y-@p4*x)*y) elseif @V=="Van der Pol 1" pz=@p1*(x-x^3/3-y)+flip(x/@p1) elseif @V=="Van der Pol 2" pz=y+flip(@p1*(1-x^2)*y-x) elseif @V=="Volterra" pz=exp(y)-1+@p2*(exp(x)-1)*exp(y)/(@p2+exp(2*x))+flip(@p1*(1-exp(x))-@p1*@p2*(exp(x)-1)*exp(x)/(@p2+exp(2*x))) elseif @V=="Volterra-Lotka 1" pz=@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y) elseif @V=="Volterra-Lotka 2" pz=@p1*x*(1-x-(@p2-1.6+0.58i)*y)+flip(@p3*y*(1-y-@p4*x)) elseif @V=="Zaslavsky" pz=(x+@p1*sin(y))*cos(2*pi/(@p2-2.65+0.32i))+y*sin(2*pi/(@p2-2.65+0.32i))+flip(-(x+@p1*sin(y))*sin(2*pi/(@p2-2.65+0.32i))+y*cos(2*pi/(@p2-2.65+0.32i))) elseif @V=="Zito" pz=x*y+@p1*x-y+flip(x+y) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a float index default: title="Smescit Resu 3 (Attractors)" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Attractor" enum="Bogdanov""Bogdanov-Takens""Brusselator""Buckling Column Model""Burgers"\ "Cao-Lai""Cathala 1""Cathala 2""Chip""Chirikov Mod""Coupled Logistic""Cremona""Damped Pendulum""de Jong"\ "Duffing 1""Duffing 2""Duffing 3""Duffing 4""Duffing 5""Duffing 6""Garrote-Mira"\ "Gingerbread""Gumowski-Mira 1""Gumowski-Mira 2""Gumowski-Mira 3""Gumowski-Mira 4"\ "Gumowski-Mira 5""Gumowski-Mira Mod 1""Gumowski-Mira Mod 2""Hamilton"\ "Hamilton Torus""HCA""Henon 1""Henon 2""Henon 3"\ "Henon 4""Henon 5""Henon-Heiles 1""Henon-Heiles 2""Hopalong""Horsthemke-Lefever"\ "Ikeda""Ilhem-Amel 1""Ilhem-Amel 2""Jiang""Kam Torus""Kan"\ "Knot""Kolmogorov-Volterra""Li""Lozi""Marotto-Lorenz""Martin""Mira 1""Mira 2""Mira 3""Modified Lozi"\ "Nowicki-Swirszcz""Multifold Henon""Oscillating Chemical Reaction""Pendulum""Pendulum Morozov""Pharaoh""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Pickover 5""Pickover 6""Pickover 7""Polyharmonic Pendulum"\ "Quadruptwo""Rayleigh""Sine""Sine-Sine""Sprott""Sprott-Elhadj""Standard Map""Strelkova-Anishchenko"\ "Svensson""Threeply""Tinkerbell""Ushiki""Van der Pol 1""Van der Pol 2""Volterra"\ "Volterra-Lotka 1""Volterra-Lotka 2""Zaslavsky""Zito" endparam param p1 caption="Attractor Parameter" default=(1,0) visible=@v!="Knot" && @v!="Sine-Sine" endparam param p2 caption="Attractor Parameter 2" default=(1,0) visible=@v!="Chirikov Mod" && @v!="Cremona" && @v!="Gumowski-Mira 1" && @v!="Gumowski-Mira 2" && @v!="Hamilton Torus" && @v!="Henon 2" \ && @v!="Kam Torus" && @v!="Martin" && @v!="Knot" && @v!="Pendulum" && @v!="Sine-Sine" && @v!="Standard Map" \ && @v!="Van der Pol 1" && @v!="Van der Pol 2" && @v!="Zito" endparam param p3 caption="Attractor Parameter 3" default=(1,0) visible=@v=="Bogdanov" || @v=="Brusselator" || @v=="Buckling Column Model" || @v=="Cathala 2" \ || @v=="Chip" || @v=="de Jong" || @v=="Duffing 2" || @v=="Duffing 3" || @v=="Duffing 4" || @v=="Duffing 5" \ || @v=="Henon 4" || @v=="Henon-Heiles 1" || @v=="Henon-Heiles 2" || @v=="Hopalong" \ || @v=="Horsthemke-Lefever" || @v=="Ikeda" || @v=="Ilhem-Amel 1" || @v=="Ilhem-Amel 2" \ || @v=="Kan" || @v=="Kolmogorov-Volterra" || @v=="Mira 1" || @v=="Mira 2" \ || @v=="Nowicki-Swirszcz" || @v=="Pharaoh" || @v=="Pickover 1" || @v=="Pickover 3" \ || @v=="Pickover 5" || @v=="Jiang" || @v=="Pendulum Morozov" || @v=="Polyharmonic Pendulum" || @v=="Quadruptwo" \ || @v=="Rayleigh" || @v=="Svensson" || @v=="Threeply" || @v=="Tinkerbell" || @v=="Ushiki" \ || @v=="Volterra-Lotka 1" || @v=="Volterra-Lotka 2" endparam param p4 caption="Attractor Parameter 4" default=(1,0) visible=@v=="Buckling Column Model" || @v=="de Jong" || @v=="Duffing 3" || @v=="Duffing 4" || @v=="Duffing 5" \ || @v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ikeda" || @v=="Kan" \ || @v=="Nowicki-Swirszcz" || @v=="Pharaoh" || @v=="Pickover 1" || @v=="Pickover 5" || @v=="Jiang" \ || @v=="Pendulum Morozov" || @v=="Polyharmonic Pendulum" || @v=="Ilhem-Amel 2" || @v=="Svensson" || @v=="Tinkerbell" \ || @v=="Ushiki" || @v=="Volterra-Lotka 1" || @v=="Volterra-Lotka 2" endparam param p5 caption="Attractor Parameter 5" default=(1,0) visible=@v=="Duffing 3" || @v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ilhem-Amel 2" endparam param p6 caption="Attractor Parameter 6" default=(1,0) visible=@v=="Ilhem-Amel 2" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IFB27(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(acosh(pz)))+imag(fn3(pz)) if a<@p4 pz=pz*cabs(@p1)+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*sin(@p25)+@p9 endif if @p10<=a pz=pz*acos(@p1)+@p11 endif return pz endfunc default: title="IFB 27" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=1.06223 endparam param p1 caption="IFB Parameter a1" default=(-0.11,-1.22) endparam param p25 caption="IFB Parameter a2" default=(0.73725,0.36784) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Loop Parameter 1" default=(1,0) endparam param p7 caption="Loop Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_IFB30(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(flip(pz)))+imag(fn3(sqr(pz))) if a<@p4 pz=pz*@p1+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*atan(@p25)+@p9 endif if @p10<=a pz=pz*sqr(@p1)+@p11 endif return pz endfunc default: title="IFB 30" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=8.96206 endparam param p1 caption="IFB Parameter a1" default=(-0.47784,-1.06235) endparam param p25 caption="IFB Parameter a2" default=(0.47451,-0.84078) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(1,0) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=-5.93008 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Loop Parameter 1" default=(0.8949,-0.28902) endparam param p7 caption="Loop Parameter 2" default=(0.44667,-0.35471) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB65(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn4(pz) a=fn1(conj(sqr(@p5))) b=fn2(sqrt(acos(@p5))) return pz endfunc complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6-1.516 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="2" if real(fn3(sqrt(pz)))>@p6+1 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="3" if real(fn3(sqr(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="4" if real(fn3(cotanh(pz)))>@p6-0.872 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="5" if real(fn3(cotan(pz)))>@p6-0.021 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="6" if real(fn3(atanh(pz)))>@p6-0.296 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="7" if real(fn3(atan(pz)))>@p6-1.178 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="8" if real(fn3(acosh(pz)))>@p6+1.708 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="9" if real(fn3(acos(pz)))>@p6-1.573 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="10" if real(fn3(cos(pz)))>@p6+0.129 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="11" if real(fn3(asinh(pz)))>@p6-1.158 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="12" if real(fn3(sinh(pz)))>@p6-0.66 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="13" if real(fn3(sin(pz)))>@p6-0.951 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="14" if real(fn3(recip(pz)))>@p6-0.3 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="15" if real(fn3(round(pz)))>@p6-2.542 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="16" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+2.325 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="17" if real(fn3(pz))+imag(fn3(log(pz)))>@p6+2.657 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="18" if real(fn3(pz))+imag(fn3(sqrt(pz)))>@p6+5.107 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="19" if real(fn3(pz))+imag(fn3(sqr(pz)))>@p6-0.913 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="20" if real(fn3(pz))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="21" if real(fn3(pz))+imag(fn3(cotan(pz)))>@p6-2.077 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="22" if real(fn3(pz))+imag(fn3(atan(pz)))>@p6+0.497 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="23" if real(fn3(pz))+imag(fn3(tanh(pz)))>@p6+0.497 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="24" if real(fn3(pz))+imag(fn3(acosh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="25" if real(fn3(pz))+imag(fn3(acos(pz)))>@p6-0.6124 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="26" if real(fn3(cabs(pz)))+imag(fn3(conj(pz)))>@p6+0.441 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="27" if real(fn3(cabs(pz)))+imag(fn3(cotan(pz)))>@p6+1.578 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="28" if real(fn3(cabs(pz)))+imag(fn3(acosh(pz)))>@p6-0.415 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="29" if real(fn3(cabs(pz)))+imag(fn3(recip(pz)))>@p6+2.99 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="30" if real(fn3(abs(pz)))+imag(fn3(sqrt(pz)))>@p6+4.153 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="31" if real(fn3(abs(pz)))+imag(fn3(cotanh(pz)))>@p6+1.495 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="32" if real(fn3(abs(pz)))+imag(fn3(atanh(pz)))>@p6+6.394 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="33" if real(fn3(abs(pz)))+imag(fn3(atan(pz)))>@p6+1.135 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="34" if real(fn3(abs(pz)))+imag(fn3(tanh(pz)))>@p6+1.135 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="35" if real(fn3(abs(pz)))+imag(fn3(tan(pz)))>@p6+1.628 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="36" if real(fn3(abs(pz)))+imag(fn3(asinh(pz)))>@p6+2.251 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="37" if real(fn3(abs(pz)))+imag(fn3(asin(pz)))>@p6+13.71 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="38" if real(fn3(log(pz)))+imag(fn3(cotanh(pz)))>@p6+1.171 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="39" if real(fn3(log(pz)))+imag(fn3(cotan(pz)))>@p6+0.756 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="40" if real(fn3(log(pz)))+imag(fn3(tanh(pz)))>@p6+1.752 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="41" if real(fn3(log(pz)))+imag(fn3(acosh(pz)))>@p6-0.49 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="42" if real(fn3(log(pz)))+imag(fn3(acos(pz)))>@p6-0.699 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="43" if real(fn3(atan(pz)))+imag(fn3(flip(pz)))>@p6-2.7 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="44" if real(fn3(sqrt(pz)))+imag(fn3(cotanh(pz)))>@p6+1.294 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="45" if real(fn3(sqrt(pz)))+imag(fn3(cotan(pz)))>@p6+1.294 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="46" if real(fn3(sqrt(pz)))+imag(fn3(tanh(pz)))>@p6+1.169 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="47" if real(fn3(sqrt(pz)))+imag(fn3(acosh(pz)))>@p6+0.131 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="48" if real(sqr((pz)))+imag(fn3(cabs(pz)))>@p6+0.006 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="49" if real(sqr((pz)))+imag(fn3(abs(pz)))>@p6+0.25 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="50" if real(sqr((pz)))+imag(fn3(cotanh(pz)))>@p6+0.25 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="51" if real(sqr((pz)))+imag(fn3(acosh(pz)))>@p6-0.705 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="52" if real(sqr((pz)))+imag(fn3(cos(pz)))>@p6+10.734 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="53" if real(sqr((pz)))+imag(fn3(sin(pz)))>@p6+0.437 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="54" if real(fn3(cotanh(pz)))+imag(fn3(flip(pz)))>@p6-2.885 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="55" if real(fn3(cotanh(pz)))+imag(fn3(conj(pz)))>@p6-0.892 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="56" if real(fn3(cotanh(pz)))+imag(fn3(cabs(pz)))>@p6-0.949 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="57" if real(fn3(cotanh(pz)))+imag(fn3(abs(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="58" if real(fn3(cotanh(pz)))+imag(fn3(sqrt(pz)))>@p6-2.948 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="59" if real(fn3(cotanh(pz)))+imag(fn3(cotan(pz)))>@p6-0.035 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="60" if real(fn3(cotanh(pz)))+imag(fn3(atan(pz)))>@p6-0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="61" if real(fn3(cotanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="62" if real(fn3(cotanh(pz)))+imag(fn3(acosh(pz)))>@p6-0.822 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="63" if real(fn3(cotanh(pz)))+imag(fn3(cosh(pz)))>@p6-0.967 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="64" if real(fn3(cotan(pz)))+imag(fn3(flip(pz)))>@p6 -2.254 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="65" if real(fn3(cotan(pz)))+imag(fn3(cotanh(pz)))>@p6-0.136 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="66" if real(fn3(cotan(pz)))+imag(fn3(atan(pz)))>@p6-0.281 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="67" if real(fn3(cotan(pz)))+imag(fn3(tanh(pz)))>@p6-0.073 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="68" if real(fn3(cotan(pz)))+imag(fn3(acosh(pz)))>@p6-1.713 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="69" if real(fn3(cotan(pz)))+imag(fn3(recip(pz)))>@p6-0.218 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="70" if real(fn3(round(pz)))+imag(fn3(acos(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="71" if real(fn3(atanh(pz)))+imag(fn3(abs(pz)))>@p6-0.296 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="72" if real(fn3(atanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.213 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="73" if real(fn3(atanh(pz)))+imag(fn3(cotan(pz)))>@p6-1.147 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="74" if real(fn3(atanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.254 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="75" if real(fn3(atan(pz)))+imag(fn3(cabs(pz)))>@p6-1.168 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="76" if real(fn3(atan(pz)))+imag(fn3(abs(pz)))>@p6+0.14 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="77" if real(fn3(atan(pz)))+imag(fn3(sqrt(pz)))>@p6+0.244 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="78" if real(fn3(atan(pz)))+imag(fn3(cotanh(pz)))>@p6+1.2 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="79" if real(fn3(atan(pz)))+imag(fn3(cotan(pz)))>@p6+0.38 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="80" if real(fn3(atan(pz)))+imag(fn3(atanh(pz)))>@p6-0.038 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="81" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6-0.9 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="82" if real(fn3(atan(pz)))+imag(fn3(tanh(pz)))>@p6+0.356 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="83" if real(fn3(atan(pz)))+imag(fn3(tan(pz)))>@p6-0.391 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="84" if real(fn3(atan(pz)))+imag(fn3(acosh(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="85" if real(fn3(atan(pz)))+imag(fn3(asinh(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="86" if real(fn3(tanh(pz)))+imag(fn3(abs(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="87" if real(fn3(tanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.9 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="88" if real(fn3(tanh(pz)))+imag(fn3(atan(pz)))>@p6-0.713 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="89" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.952 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="90" if real(fn3(tan(pz)))+imag(fn3(recip(pz)))>@p6-0.36 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="91" if real(fn3(tan(pz)))+imag(fn3(cotan(pz)))>@p6-1.139 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="92" if real(fn3(acosh(pz)))+imag(fn3(trunc(pz)))>@p6+0.159 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="93" if real(fn3(asinh(pz)))+imag(fn3(abs(pz)))>@p6+0.823 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="94" if real(fn3(asin(pz)))+imag(fn3(atan(pz)))>@p6+0.823 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="95" if real(fn3(ceil(pz)))+imag(fn3(asinh(pz)))>@p6+3.19 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="96" if real(fn3(ceil(pz)))+imag(fn3(tan(pz)))>@p6+3.065 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="97" if real(fn3(ceil(pz)))+imag(fn3(atan(pz)))>@p6-0.693 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="98" if real(fn3(ceil(pz)))+imag(fn3(abs(pz)))>@p6-2.935 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="99" if real(fn3(floor(pz)))+imag(fn3(log(pz)))>@p6+2.276 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="100" if real(fn3(floor(pz)))+imag(fn3(sqrt(pz)))>@p6+3.252 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="101" if real(fn3(trunc(pz)))+imag(fn3(tanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="102" if real(fn3(trunc(pz)))+imag(fn3(cotanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="103" if real(fn3(round(pz)))+imag(fn3(cotanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="104" if real(fn3(round(pz)))+imag(fn3(acosh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif endif return pz endfunc private: complex a complex b default: title="IFB 65" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96""97""98""99""100"\ "101""102""103""104" endparam param p5 caption="IFB Parameter 1" default=(-0.689,0.628) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(2.606,-0.224) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.01,0.55) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB74(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @V=="1" pz=@p6*pz+@p7 if @Va=="1" float a=real(pz) elseif @Va=="2" float a=real(exp(pz))-0.671 elseif @Va=="3" float a=real(cotanh(pz))+0.322 elseif @Va=="4" float a=real(atan(pz))+0.588 elseif @Va=="5" float a=real(tanh(pz))+0.444 elseif @Va=="6" float a=real(acos(pz)) elseif @Va=="7" float a=real(sin(pz))-0.888 elseif @Va=="8" float a=real(recip(pz))-0.533 elseif @Va=="9" float a=real(ceil(pz)) elseif @Va=="10" float a=real(floor(pz)) elseif @Va=="11" float a=imag(exp(pz))-2.309 elseif @Va=="12" float a=imag(sqr(pz))-1.598 elseif @Va=="13" float a=real(pz)+imag(pz) elseif @Va=="14" float a=real(sqr(pz))+imag(sqr(pz)) elseif @Va=="15" float a=real(cotanh(pz))+imag(cotanh(pz))-1.243 elseif @Va=="16" float a=real(atan(pz))+imag(atan(pz))+0.533 elseif @Va=="17" float a=real(acosh(pz))+imag(acosh(pz))-1.443 elseif @Va=="18" float a=real(asinh(pz))+imag(asinh(pz)) elseif @Va=="19" float a=real(ceil(pz))+imag(ceil(pz))-3.663 elseif @Va=="20" float a=real(floor(pz))+imag(floor(pz)) elseif @Va=="21" float a=real(pz)-imag(pz) elseif @Va=="22" float a=real(cotanh(pz))-imag(cotanh(pz))-0.355 elseif @Va=="23" float a=real(atanh(pz))-imag(atanh(pz)) elseif @Va=="24" float a=real(atan(pz))-imag(atan(pz))-0.444 elseif @Va=="25" float a=real(tanh(pz))-imag(tanh(pz))-0.488 elseif @Va=="26" float a=real(asinh(pz))-imag(asinh(pz))-0.782 elseif @Va=="27" float a=real(ceil(pz))-imag(ceil(pz)) elseif @Va=="28" float a=real(trunc(pz))-imag(trunc(pz)) else float a=real(round(pz))-imag(round(pz)) endif if a<@p4 pz=pz*fn2(sqrt(@p1))+@p2 endif if a>@p4 && a<@p5 pz=pz*fn2(cabs(@p1))+@p3 endif if a>@p5 pz=pz*fn2(@p1)+@p8 endif else while i<@iter i=i+1 pz=@p6*pz+@p7 if @Va=="1" float a=real(pz) elseif @Va=="2" float a=real(exp(pz))-0.671 elseif @Va=="3" float a=real(cotanh(pz))+0.322 elseif @Va=="4" float a=real(atan(pz))+0.588 elseif @Va=="5" float a=real(tanh(pz))+0.444 elseif @Va=="6" float a=real(acos(pz)) elseif @Va=="7" float a=real(sin(pz))-0.888 elseif @Va=="8" float a=real(recip(pz))-0.533 elseif @Va=="9" float a=real(ceil(pz)) elseif @Va=="10" float a=real(floor(pz)) elseif @Va=="11" float a=imag(exp(pz))-2.309 elseif @Va=="12" float a=imag(sqr(pz))-1.598 elseif @Va=="13" float a=real(pz)+imag(pz) elseif @Va=="14" float a=real(sqr(pz))+imag(sqr(pz)) elseif @Va=="15" float a=real(cotanh(pz))+imag(cotanh(pz))-1.243 elseif @Va=="16" float a=real(atan(pz))+imag(atan(pz))+0.533 elseif @Va=="17" float a=real(acosh(pz))+imag(acosh(pz))-1.443 elseif @Va=="18" float a=real(asinh(pz))+imag(asinh(pz)) elseif @Va=="19" float a=real(ceil(pz))+imag(ceil(pz))-3.663 elseif @Va=="20" float a=real(floor(pz))+imag(floor(pz)) elseif @Va=="21" float a=real(pz)-imag(pz) elseif @Va=="22" float a=real(cotanh(pz))-imag(cotanh(pz))-0.355 elseif @Va=="23" float a=real(atanh(pz))-imag(atanh(pz)) elseif @Va=="24" float a=real(atan(pz))-imag(atan(pz))-0.444 elseif @Va=="25" float a=real(tanh(pz))-imag(tanh(pz))-0.488 elseif @Va=="26" float a=real(asinh(pz))-imag(asinh(pz))-0.782 elseif @Va=="27" float a=real(ceil(pz))-imag(ceil(pz)) elseif @Va=="28" float a=real(trunc(pz))-imag(trunc(pz)) else float a=real(round(pz))-imag(round(pz)) endif if a<@p4 pz=pz*fn2(sqrt(@p1))+@p2 endif if a>@p4 && a<@p5 pz=pz*fn2(cabs(@p1))+@p3 endif if a>@p5 pz=pz*fn2(@p1)+@p8 endif endwhile pz=pz*@adj endif return pz endfunc private: int i default: title="IFB 74" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Type" enum="1""2" endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29" endparam param p1 caption="IFB Parameter a" default=(1.236,0.751) endparam param p2 caption="IFB Parameter b1" default=(0.196,0.694) endparam param p3 caption="IFB Parameter b2" default=(0.785,-0.432) endparam param p8 caption="IFB Parameter b3" default=(-1.099,-0.772) endparam param p4 caption="IFB Parameter c1" default=-0.5 endparam param p5 caption="IFB Parameter c2" default=0.5 endparam param p6 caption="Loop Parameter 1" default=(0.627,0.7) endparam param p7 caption="Loop Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc param iter caption="Iterations" visible=@V=="2" default=32 endparam param adj caption="Adjustment" default=1.139 visible=@V=="2" endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Chebyshev-Halley(common.ulb:ConvergentFormula) { ;Family of Chebyshev-Halley type methods ;https://www.researchgate.net/publication/233907415_Note_on_Super-Halley_Method_and_its_Variants ;CH Parameter 3 = 0 is Chebyshev method ;CH Parameter 3 = 0.5 is Halley method ;CH Parameter 3 = 1 is Super-Halley method public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 if @v_SFormula==100 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) else f=pz^@power-@p2 f1=@power*pz^(@power-1) f2=(@power-1)*@power*pz^(@power-2) endif a=@p4*f/f1 b=@p5*f2*a/f1 return pz-@p1*a*(1+(b/(1-@p3*b))/2)+@c endfunc default: title="Chebyshev-Halley" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="CH Parameter 1" default=(1,0) endparam param p2 caption="CH Parameter 2" default=(1,0) endparam param p3 caption="CH Parameter 3" default=(-0.5,0) endparam param p4 caption="CH Parameter 4" default=(1,0) endparam param p5 caption="CH Parameter 5" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=3 visible=@v_SFormula==100 endparam param power caption="Exponent" default=(3,0) visible=@v_SFormula>100 endparam func sf caption="Start Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Newton-Hines(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*@zf(pz)+@zp2 if @v==0 f=pz^@pow-@p3 f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*((pz-1)/(pz+1))^@pow/(pz^2-1) elseif @v==2 f=((pz^2-1)/(pz+1))^@pow-@p3 f1=@pow*(pz-1)^(@pow-1) elseif @v==3 f=((pz^3-1)/(pz^2+1))^@pow-@p3 f1=@pow*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow-1) elseif @v==4 f=((pz^2+1)/pz)^@pow-@p3 f1=@pow*(pz^2-1)*(pz+1/pz)^@pow/(pz^3+pz) elseif @v==5 f=(pz+pz^2)^@pow-@p3 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+((pz-1i)/(pz+1i))^@pow-@p3 f1=@pow*pz^(@pow-1)+2i*@pow*((pz-1i)/(pz+1i))^@pow/(pz^2+1) elseif @v==7 f=((pz^2-1i)/(pz+1i))^@pow-@p3 f1=@pow*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow-1) elseif @v==8 f=((pz^2-1i)/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz)^(@pow-1) elseif @v==9 f=((pz^2+1i)/(pz+1))^@pow-@p3 f1=@pow*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow-1)/(pz+1)^2 elseif @v==10 f=(pz+1i)^@pow-@p3 f1=@pow*(pz+1i)^(@pow-1) elseif @v==11 f=(1/pz^2+1/pz)^@pow-@p3 f1=@pow*(pz+2)*((pz+1)/pz^2)^(@pow-1)/pz^2 elseif @v==12 f=pz^@pow*(pz-2)/(1-2*pz)-(@p3-0.5) f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 f=((pz^2-2)/(1-2*pz))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==14 f=((1-2*pz)/(pz^2-2))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==15 f=recip(pz)^@pow-@p3 f1=-@pow*recip(pz)^(@pow+1) elseif @v==16 f=(pz+sqr(pz)+1/pz)^@pow-@p3 f1=@pow*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow-1) elseif @v==17 f=(sqr(pz)-1/pz)^@pow-@p3 f1=@pow*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow-1) elseif @v==18 f=(pz-1i-1i/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow-1) elseif @v==19 f=(pz+1i-1i/pz^2)^@pow-@p3 f1=@pow*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow-1) elseif @v==20 f=(pz+pz^2)^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*(2*pz+1)*(pz^2+pz)^(@pow-1)+@pow*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow-1) elseif @v==21 f=(pz^(@pow+1)-@p3)/(pz^@pow+@p3) f1=(@pow+1)*pz^@pow/(pz^@pow+@p3)-@pow*pz^(@pow-1)*(pz^(@pow+1)-@p3)/(pz^@pow+@p3)^2 elseif @v==22 f=(pz^(@pow+1)+@p3)/(pz^@pow-1i) f1=(@pow+1)*pz^@pow/(pz^@pow-1i)-@pow*pz^(@pow-1)*(pz^(@pow+1)+@p3)/(pz^@pow-1i)^2 elseif @v==23 f=(pz^2+pz/1i)^@pow-@p3 f1=@pow*(2*pz-1i)*(pz*(pz-1i))^(@pow-1) elseif @v==24 f=((pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2))^2 f1=2*@pow*pz^(@pow-1)*(pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2)^2-2*@pow*(pz^@pow+(@p3-1)-1)^2/(@pow*pz+(@p3-1)-2)^3 elseif @v==25 f=tan(pz)^@pow-@p3 f1=@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==26 f=cotan(pz)^@pow-@p3 f1=-@pow*cotan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==27 f=tanh(pz)^@pow-@p3 f1=@pow*tanh(pz)^@pow/(sinh(pz)*cosh(pz)) elseif @v==28 f=(1/cos(pz))^@pow-@p3 f1=@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==29 f=(1/sin(pz))^@pow-@p3 f1=-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==30 f=pz^@pow+(1/sin(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==31 f=pz^@pow+(1/cos(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==32 f=pz^@pow+(pz^2)^@pow+1i*(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3i*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==33 f=(pz-1i)^@pow+(pz^2-1i)^@pow+1i*(pz^3-1i)^@pow-@p3 f1=2*@pow*pz*(pz^2-1i)^(@pow-1)+3*@pow*pz*2*(pz^3-1i)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==34 f=(pz+1i)^@pow+(pz^2+1i)^@pow+1i*(pz^3+1i)^@pow-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+3*@pow*pz*2*(pz^3+1i)^(@pow-1)+@pow*(pz+1i)^(@pow-1) elseif @v==35 f=9*pz^@pow+3i*pz^(@pow+1)+(1/cos(pz))^@pow-@p3 f1=9*@pow*pz^(@pow-1)+3i*(@pow+1)*pz^@pow+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==36 f=pz^@pow+pz^(@pow+1)+pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow+(@pow+2)*pz^(@pow+1) elseif @v==37 f=pz^@pow+pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==38 f=2*pz^@pow-3i*pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=2*@pow*pz^(@pow-1)-3i*(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==39 f=pz^@pow+(pz^2)^@pow+(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==40 f=(pz+cotanh(pz))^@pow-@p3 f1=-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) elseif @v==41 f=(pz^2*(pz-2)/(1-2*pz))^@pow-@p3 f1=@pow*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow/((pz-2)*pz*(2*pz-1)) elseif @v==42 f=pz^@pow+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow f1=@pow*pz^(@pow-1)+@pow*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow elseif @v==43 f=pz^@pow+1i*(pz-1/pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==44 f=pz^(@pow+1)-1i*(pz-1/pz)^@pow-@p3 f1=(@pow+1)*pz^@pow-1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==45 f=pz^@pow+pz^(@pow-1)+1i*(pz-1/pz)^@pow+tan(pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1)+@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==46 f=(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==47 f=pz^@pow+(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==48 f=(pz+1i*pz)^@pow+pz^3/1i+(pz+cotanh(pz))^@pow-@p3 f1=@pow*((1+1i)*pz)^@pow/pz+3*pz^2/1i-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) else f=(pz^2+1i)^@pow+(pz+2i)^(@pow+1)-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+(@pow+1)*(pz+2i)^@pow endif return pz-@p1*f/(f1-@p2*f/pz) endfunc default: title="Newton-Hines" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param p2 caption="Hines Parameter" default=(1,0) endparam param p1 caption="Newton Parameter 1" default=(1,0) endparam param p3 caption="Newton Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Metabrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@sf(pz) endif c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 a=pz^@pow+c b=c^@pow+pz d=a^@pow+b f=b^@pow+a g=d^@pow+f h=f^@pow+d j=g^@pow+h k=h^@pow+g pz=j^@pow+k return pz endfunc private: complex c default: title="Metabrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MetalogMod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @sv==0 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) endif c=@pf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @mj==0 pz=((((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))*((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))+((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c)))\ *(((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))*((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))+((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c)))\ +(((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c))*((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c))+((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz)))) else pz=((((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))*((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))+((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c)))\ *(((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))*((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))+((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c)))\ +(((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c))*((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c))+((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz)))) endif return pz endfunc private: complex c default: title="Metalog Mod" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param sv caption="Start Type" enum="Parameter""Pixel" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 && @sv==0 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @sv==1) endfunc param p1 caption="MLM Parameter" default=(0.5,0) endparam param c caption="Julia Seed" default=(0,0) visible=@mj==1 endparam func pf caption="Pixel Function" default=ident() visible=@mj==0 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AleatorJBivar2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) pk=pz pz=pz+@sp*fn2(pz) pk=pk+@sp*fn2(pk) i2=0 c=@c return pz return pk endfunc private: float values[#maxiter] int i int seed complex pk int i2 complex c complex func Iterate(complex pz) if @av==0 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+@ap*@af(values[i2])+c elseif @av==1 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+a^2+c elseif @av==2 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==3 pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==4 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+@ap*@af(values[i2])+c elseif @av==5 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+pk^2+c elseif @av==6 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c else pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c endif i2=i2+1 return pz return pk endfunc default: title="Aleator J Bivar 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param ap caption="Aleator Parameter" default=(0.5,0) endparam func af caption="Aleator Function" default=sqr() endfunc param seed caption="Random Seed" default=12345678 endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func fn3 caption="Bivar Function" default=ident() endfunc param c caption="Julia Seed" default=(-0.7825,0) endparam func fn1 caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam func fn2 caption="Start Function 2" default=ident() visible=@sp!=0 endfunc param pzp1 caption="Z Parameter 1" default=(0.7,0) endparam param pzp2 caption="Z Parameter 2" default=(-0.7,0) endparam param pkp1 caption="K Parameter 1" default=(0.7,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Felescarte2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 i=@iter i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) d=x if @v=="1" x=@p1*x y=@p2*y elseif @v=="2" x=@p1*x^2 y=@p2*y+x elseif @v=="3" x=y y=@p1+@p2*d+d^2-d*y elseif @v=="4" x=(@p1+0.5)*x-y^2 y=@p2*y+d*y elseif @v=="5" x=y y=-(@p1*d^3+(@p2-1.5)*d+@p3*y)/(@p4-1.5) elseif @v=="6" x=@p1*x+y y=(@p2-0.5)+d^2 elseif @v=="7" x=@p1*x*y+y y=y+y^2*d+@p2*d elseif @v=="8" x=@p1*x/y y=@p2*y+d^2 elseif @v=="9" x=y y=-@p2*d+@p1*y-y^3 elseif @v=="10" x=(@p1+2)*x^2+@p2*(y-x) y=1-(@p1+2)*y^2+@p2*d^2 elseif @v=="11" x=@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) y=@p2*(d*sin(@p3-@p4/(d^2+y^2+1))+y*cos(@p3-@p4/(d^2+y^2+1))) elseif @v=="12" x=(@p1-2.5)*x*(1-x/@p3)-@p2*x*y y=-@p2*d*y+@p4*(@p5-y) elseif @v=="13" x=@p1*(x-y) y=@p2*(x+y) elseif @v=="14" x=x+@p1*flip(y) y=y-@p2*cabs(d) elseif @v=="15" x=x+@p1*exp(y) y=y-@p2*cabs(d) elseif @v=="16" x=x+@p1*sqrt(y) y=y-@p2*sqrt(d) elseif @v=="17" x=x+@p1*sqr(y) y=y-@p2*sqrt(d) elseif @v=="18" x=x+(@p1-1+0.5i)*tan(y) y=y-@p2*cosh(d) elseif @v=="19" x=x+(@p1-1.5)*tan(y) y=y-@p2*cos(d) elseif @v=="20" x=x+@p1*acosh(y) y=y-@p2*cos(d) elseif @v=="21" x=x+@p1*cosh(y) y=y-@p2*cos(d) elseif @v=="22" x=x+@p1*sin(y) y=y-@p2*cos(d) elseif @v=="23" x=x+@p1*cosh(y) y=y-@p2*recip(d) elseif @v=="24" x=x^3+(@p1-2)*x+@p2+y y=@p3*d elseif @v=="25" x=1+y-@p1*cabs(x) y=@p2*d elseif @v=="26" x=(1-@p1*x-@p2*y)*(@p1*x+@p2*y) y=d elseif @v=="27" x=@p2*y+sin(x) y=@p1-d elseif @v=="28" x=x^2-y^2+(@p1+1)*x+@p2 y=2*d*y-5*(@p1+1)*y/2 elseif @v=="29" x=(1-(@p1+1))*x+y y=(@p1+1)*@p2*d+@p3*y-(@p1+1)*d^3 elseif @v=="30" x=1+(@p1-2.5)*(cabs(x)-y^2)+y y=@p2*d elseif @v=="31" x=3*x*((x-y)^2-(@p1-1.5))/((3*x-y)^2-@p2) y=y*(y^2+2*d*y-3*d^2-(@p3-1.5))/((3*d-y)^2-@p4) elseif @v=="32" x=1-@p1*sin(x)+@p2*y y=d elseif @v=="33" x=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) y=-@p1*sin(d)-@p2*sin(3*d)+@p3*sin(@p4) elseif @v=="34" x=x+@p1*sin(y) y=y+@p2*d+@p1*sin(y) elseif @v=="35" x=1-@p1*x^2+@p2*(y-x) y=1-@p1*y^2+@p2*(d-y) elseif @v=="36" x=sin(x)-sin(2*@p1*y) y=@p2*d elseif @v=="37" x=(1+@p1*(@p2+1))*x-(@p2+1)*x*y y=(1-(@p2+1))*y+(@p2+1)*d^2 elseif @v=="38" x=(@p1+3)*x/(1+y^2) y=d+@p2*y elseif @v=="39" x=sin(@p1*y)+@p2*sin(@p1*x) y=sin((@p3+2.5)*d)+@p4*sin((@p3+2.5)*y) elseif @v=="40" x=sin(@p1*y)+sqr(sin(@p1*x)) y=sin((@p2+2)*d)+sqr(sin((@p2+2)*y)) elseif @v=="41" x=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin((@p2-0.3)*x)+(sin((@p2-0.3)*y))^2+(sin(@p3*y))^3) y=sin((@p2-0.3)*d)+(sin((@p2-0.3)*y))^2+(sin(@p3*y))^3 elseif @v=="42" x=abs(sin(@p1*y))+(sin(@p1*x))^2 y=abs(sin(@p2*d))+(sin(@p1*y))^2 elseif @v=="43" x=sin(@p1*y)+(@p2-1.5)*cos(@p1*x) y=sin((@p3-0.35-1i)*d)+@p4*cos((@p3-0.35-1i)*y) elseif @v=="44" x=x-(@p1+0.325+0.85i)*sin(y+tan((@p2-2+1i)*y)) y=y-(@p1+0.325+0.85i)*sin(d+tan((@p2-2+1i)*d)) elseif @v=="45" x=@p1*sin(y+tan((@p2-1+1i)*y)) y=@p1*sin(d+tan((@p2-1+1i)*d)) elseif @v=="46" x=@p4*sin((@p1+1-1i)*x)-sin(@p2*y) y=@p3*cos((@p1+1-1i)*d)+cos(@p2*y) elseif @v=="47" x=x^2+-y^2+(@p1+1-1i)*x+@p2*y y=2*d*y+@p3*d+@p4*y elseif @v=="48" x=((@p1+1.5)-x-@p2*y)*x y=(@p3-y-@p4*d)*y elseif @v=="49" x=@p1*log(cabs(x))-y y=@p2*log(cabs(d))+d elseif @v=="50" x=cabs(x)-@p1*y y=@p2*cabs(d)+d elseif @v=="51" x=sqr(cabs(x))-(@p1-2-0.5i)*y y=(@p2-0.7)*(cabs(d))+d elseif @v=="52" x=sqr(cabs(x))-@p1*y y=@p2*flip(cabs(d))+d elseif @v=="53" x=sqr(cabs(x))-(@p1+1i)*y y=@p2*exp(cabs(d))+d elseif @v=="54" x=cos(cabs(x))-(@p1-1-0.5i)*y y=(@p2-0.75-0.25i)*sin(cabs(d))+d elseif @v=="55" x=sin(cabs(x))-(@p1-1.25-0.75i)*y y=@p2*sin(cabs(d))+d elseif @v=="56" x=flip(cabs(x))-@p1*y y=@p2*recip(cabs(d))+d elseif @v=="57" x=@p1*(x-x^3/3-y) y=d/@p2 elseif @v=="58" x=@p2*y y=(@p1+2)*(1-d^2)*y-d elseif @v=="59" x=exp(y)-1+@p2*(exp(x)-1)*exp(y)/(@p2+exp(2*x)) y=@p1*(1-exp(d))-@p1*@p2*(exp(d)-1)*exp(d)/(@p2+exp(2*d)) elseif @v=="60" x=@p1*x-@p2*x*y y=-@p3*y+@p4*d*y elseif @v=="61" x=@p1*x*(1-x-(@p2-2)*y) y=@p3*y*(1-y-(@p4-2)*d) elseif @v=="62" x=(x+@p1*sin(y))*cos(2*pi/@p2)+y*sin(2*pi/@p2) y=-(d+@p1*sin(y))*sin(2*pi/@p2)+y*cos(2*pi/@p2) elseif @v=="63" x=x*y+@p1*x-y y=d+@p2*y elseif @v=="64" x=@p1*y y=y*(1-d^2)-(@p2-0.3)*d elseif @v=="65" x=@p1*exp(y) y=y*flip(1-d^2)-@p2*d elseif @v=="66" x=(@p1-1.65)*sqr(y) y=y*flip(1-d^2)-@p2*d elseif @v=="67" x=@p1*y y=y*cosh(1-d^2)-@p2*d elseif @v=="68" x=@p1*y y=y*recip(1-d^2)-@p2*d elseif @v=="69" x=(@p1-0.25)*exp(y) y=y*recip(1-d^2)-@p2*d elseif @v=="70" x=@p1*sqr(y) y=y*recip(1-d^2)-(@p2-3.3+0.85i)*d elseif @v=="71" x=@p1*sin(y) y=y*recip(1-d^2)-(@p2-3.3+0.85i)*d endif z=x+flip(y) i=i+1 float x1=real(z) float y1=imag(z) float b=|(2*x1+y1)%@adj2+flip((-x1+y1)%@adj2)| if b@sca index=@adj*a*i2/17 else m_Solid=true endif else if a<=@sca index=@adj*a*i2/17 else m_Solid=true endif endif else index=@adj*a*i2/17 endif return index endfunc private: float a int i int i2 float index default: title="Felescarte 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@v=="5" || @v=="11" || @v=="12" || @v=="24" || @v=="29" \ || @v=="31" || @v=="33" || @v=="39" || @v=="41" || @v=="43" \ || @v=="47" || @v=="48" || @v=="60" || @v=="61" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@v=="5" || @v=="11" || @v=="12" || @v=="31" || @v=="33" \ || @v=="39" || @v=="43" || @v=="47" || @v=="48" || @v=="60" || @v=="61" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@v=="12" endparam func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param iter caption="Adjustment 1" default=0 endparam param adj caption="Adjustment 2" default=1.0 endparam param adj2 caption="Modulus" default=15.0 endparam param solid caption="Solid Color" default=true endparam param sca caption="Solid Color Adjustment" default=2.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_IFB31(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(pz)) if a<@p4 pz=pz*sqrt(@p1)+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*@p25+@p9 endif if @p10<=a pz=pz*abs(@p1)+@p11 endif return pz endfunc default: title="IFB 31" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=0.2555797 endparam param p1 caption="IFB Parameter a1" default=(-0.11,-1.22) endparam param p25 caption="IFB Parameter a2" default=(0.986863,0.078824) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_HiskersBant(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==0 pz=@sf(pz) else pz=@sp endif c=@cf(fpixel) else pz=@sf(pz) c=@seed endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 c=@cp1*c+@cp2 if @v==0 pz=c/pz^@pow+@p1 c=c*pz^@pow-@p1 elseif @v==1 a=pz pz=c/pz^@pow+@p1 c=c*a^@pow-@p1 elseif @v==2 c=c*pz^@pow-@p1 pz=c/pz^@pow+@p1 elseif @v==3 pz=c/pz^@pow+@p1 c=c*sqr(pz)^@pow-@p1 elseif @v==4 a=pz pz=c/pz^@pow+@p1 c=c*sqr(a)^@pow-@p1 elseif @v==5 pz=sqr(c/pz^@pow)+@p1 c=c*pz^@pow-@p1 endif return pz endfunc default: title="Hisker's Bant" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(1,0) visible=@mj==0 && @st==1 endparam param seed caption="Julia Seed" default=(-0.5,0) visible=@mj==1 endparam param v caption="HB Variant" enum="1""2""3""4""5""6" endparam param p1 caption="HB Parameter" default=(0.27,0) endparam param pow caption="Exponent" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param cp1 caption="C Parameter 1" default=(-1,0) endparam param cp2 caption="C Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc func cf caption="C Function" default=ident() visible=@mj==0 endfunc func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_MoukonyFazurut(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @st==0 pz=@sf(pz) c=@sf(fpixel) else pz=@sp c=@cf(fpixel) endif else pz=@sf(pz) if @version<101 c=@c else c=@c1 endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 d=(pz^2-@mfp1)/(pz^2+@mfp1) f=@mfp2+@mfp3*@mff(pz+c) pz=d*f*pz return pz endfunc default: title="Moukony Fazurut" int param version caption="Version" default=101 visible=@version<101 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@mj==0 && @st==1 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc func cf caption="C Function" default=ident() visible=(@mj==0 && @st==1) endfunc param mfp1 caption="MF Parameter 1" default=(-1,0) endparam param mfp2 caption="MF Parameter 2" default=(1,0) endparam param mfp3 caption="MF Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0.3,0) visible=(@mj==1 || (@mj==0 && @st==0)) && @version==100 endparam param c1 caption="Julia Seed" default=(0.3,0) visible=@mj==1 && @version==101 endparam func mff caption="MF Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Memzon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==0 pz=@sf(pz) else pz=@sp endif else pz=@sf(pz) endif i=0 return pz endfunc private: complex fPixel int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if @mj==0 if i<@mtp pz=pz^2+@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2+@mtf2(pz)+@c1 i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@c2 i=0 endif endif elseif @v==1 if @mj==0 if i<@mtp pz=pz^2+@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2-@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2+@mtf2(pz)+@c1+0.3 i=i+1 else pz=@mtf1(pz)^2-@mtf2(pz)+@c2+0.75 i=0 endif endif else if @mj==0 if i<@mtp pz=pz^2-@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2-@mtf2(pz)+@c1+2 i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@c2 i=0 endif endif endif return pz endfunc default: title="Memzon X 1" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@mj==0 && @st==1 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc param v caption="Memzon Variant" enum="1""2""3" endparam param mtp caption="Memzon Parameter" default=5 endparam func mtf1 caption="Memzon Function 1" default=sqr() endfunc func mtf2 caption="Memzon Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@mj==0 endfunc param c1 caption="Julia Seed 1" default=(-1,0) visible=@mj==1 endparam param c2 caption="Julia Seed 2" default=(-1.5,0) visible=@mj==1 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@mj==0 endparam param pp2 caption="Pixel Parameter 2" default=(1,0) visible=@mj==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc private: complex fPixel int i complex func Iterate(complex pz) if @v==0 pz=pz elseif @v==1 pz=sqr(pz) elseif @v==2 pz=cosh(pz) elseif @v==3 pz=cos(pz) elseif @v==4 pz=sinh(pz) elseif @v==5 pz=sin(pz) elseif @v==6 pz=pz^3 elseif @v==7 pz=pz-pz^2 elseif @v==8 pz=pz-0.5*exp(pz) elseif @v==9 pz=pz-2*tan(pz) elseif @v==10 pz=pz-0.375*cosh(pz) elseif @v==11 pz=pz-0.5*cos(pz) else pz=pz-2*sin(pz) endif pz=@zp1*pz+@zp2 if i<@mtp pz=pz^2+@pf(fpixel) i=i+1 else pz=exp(@mp1*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) i=0 endif return pz endfunc default: title="Memzon Mandelbrot/Munster" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param mtp caption="Memzon Parameter" default=5 min=1 endparam func pf caption="Pixel Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param v caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltMandelbrotNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if i<1 if @st==0 pz=pz^2+@pp*@sf(fpixel) else pz=pz^2+@pf(fpixel) endif i=i+1 else if @nv==0 f=pz^3-@np2 f1=3*pz^2 elseif @nv==1 f=pz^3+((pz-1)/(pz+1))^3-@np2 f1=3*pz^2+2*3*((pz-1)/(pz+1))^3/(pz^2-1) elseif @nv==2 f=((pz^2-1)/(pz+1))^3-@np2 f1=3*(pz-1)^2 elseif @nv==3 f=((pz^3-1)/(pz^2+1))^3+@np2 f1=3*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^2 elseif @nv==4 f=((pz^2+1)/pz)^3-@np2 f1=3*(pz^2-1)*(pz+1/pz)^3/(pz^3+pz) elseif @nv==5 f=pz^3+((pz-1i)/(pz+1i))^3-@np2 f1=3*pz^2+6i*((pz-1i)/(pz+1i))^3/(pz^2+1) elseif @nv==6 f=((pz^2-1i)/(pz+1i))^3+@np2 f1=3*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^2 elseif @nv==7 f=((pz^2-1i)/pz)^3-@np2 f1=3*(1+1i/pz^2)*(pz-1i/pz)^2 elseif @nv==8 f=((pz^2+1i)/(pz+1))^3-@np2 f1=3*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^2/(pz+1)^2 elseif @nv==9 f=(pz+1i)^3-@np2 f1=3*(pz+1i)^2 elseif @nv==10 f=(1/pz^2+1/pz)^3-@np2 f1=3*(pz+2)*((pz+1)/pz^2)^2/pz^2 elseif @nv==11 f=pz^3*(pz-2)/(1-2*pz)-@np2 f1=pz^2*(3*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @nv==12 f=((pz^2-2)/(1-2*pz))^3-@np2 f1=6*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^3/((2*pz-1)*(pz^2-2)) elseif @nv==13 f=recip(pz)^4-@np2 f1=-4*recip(pz)^3 elseif @nv==14 f=(pz+sqr(pz)+1/pz)^4-@np2 f1=4*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^3 elseif @nv==15 f=(sqr(pz)-1/pz)^4-@np2 f1=4*(1/pz^2+2*pz)*((pz^3-1)/pz)^3 elseif @nv==16 f=(pz-1i-1i/pz)^4-@np2 f1=4*(1+1i/pz^2)*(pz-1i/pz-1i)^3 elseif @nv==17 f=(pz+1i-1i/pz^2)^4-@np2 f1=4*(1+2i/pz^3)*(pz-1i/pz^2+1i)^3 elseif @nv==18 f=(pz+pz^2)^4+((pz-1)/(pz+1))^4-@np2 f1=4*(2*pz+1)*(pz^2+pz)^3+4*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^3 elseif @nv==19 f=pz^4+2*pz^3-3*pz^2+4*pz+@np2 f1=4*pz^3+6*pz^2-6*pz+4 elseif @nv==20 f=pz^5+1/pz+@np2 f1=(5*pz^6-1)/pz^2 elseif @nv==21 f=(pz^2-1)^3/pz^2-@np2 f1=4*pz^3+2/pz^3-6*pz elseif @nv==22 f=pz^4+recip(pz)^4+pz^7/(pz-1)^3+@np2 f1=4*pz^3-4*recip(pz)^3+pz^6*(4*pz-7)/(pz-1)^4 elseif @nv==23 f=((pz^2-1)/(pz+1))^3+pz^4+recip(pz)^4-@np2 f1=3*(pz-1)^2-4*recip(pz)^3 elseif @nv==24 f=(pz^2*(pz-2)/(1-2*pz))^2+@np2 f1=2*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^2/((pz-2)*pz*(2*pz-1)) elseif @nv==25 f=pz^3*(pz-1)+(pz^3-1)/pz-@np2 f1=4*pz^3-3*pz^2+1/pz^2+2*pz elseif @nv==26 f=pz^2*(pz+1)+(pz^4-1)/pz-@np2 f1=6*pz^2+1/pz^2+2*pz elseif @nv==27 f=pz^2*(pz+1)-(pz^4-1)/pz+pz^4-@np2 f1=4*pz^3-1/pz^2+2*pz elseif @nv==28 f=pz^3/3+pz^4/4+pz^5/5+recip(pz)^4-@np2 f1=pz^4+pz^3+pz^2-4*recip(pz)^3 elseif @nv==29 f=1/pz+1/pz^2+1/pz^3-@np2 f1=(pz^2+2*pz+3)/pz^4 elseif @nv==30 f=1/pz+1/pz^2+1/pz^3+pz^5-@np2 f1=(pz^2+2*pz+3)/pz^4+5*pz^4 elseif @nv==31 f=1/pz+1/pz^2+1/pz^3+1/pz^4+1/pz^5-@np2 f1=(pz^4+2*pz^3+3*pz^2+4*pz+5)/pz^6 elseif @nv==32 f=pz+1/pz+pz^2+1/pz^3+pz^4+1/pz^5-@np2 f1=-5/pz^6-3/pz^4+4*pz^3-1/pz^2+2*pz+1 elseif @nv==33 f=pz+1/pz^2+pz^3+1/pz^4+pz^5+1/pz^6-@np2 f1=-6/pz^7-4/pz^5+5*pz^4-2/pz^3+3*pz^2+1 elseif @nv==34 f=pz+1/pz+pz^2+1/pz^2+pz^3+1/pz^3-@np2 f1=(3*pz^6+2*pz^5+pz^4-pz^2-2*pz-3)/pz^4 else f=(pz+1/pz^3)^2-@np2 f1=2*(pz^4-3)*(pz^4+1)/pz^7 endif pz=pz-@np1*f/f1 i=0 endif return pz endfunc private: complex fpixel int i default: title="Alt Mandelbrot/Newton" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param np1 caption="Newton Parameter 1" default=(1,0) endparam param np2 caption="Newton Parameter 2" default=(1,0) endparam param nv caption="Newton Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MemzonIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 float a=real(pz)*imag(@d1)+real(@d1)*imag(pz) if i<@mp if a<@c1 pz=pz*fn1(@a1)+@b1 endif if @c2<=a pz=pz*fn2(@a1)+@b2 endif i=i+1 else if a<@c3 pz=pz*fn3(@a2)+@b3 endif if @c4<=a pz=pz*fn4(@a2)+@b4 endif i=0 endif return pz endfunc default: title="Memzon IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param a1 caption="IFB Parameter a1" default=(0.95,-0.65) endparam param a2 caption="IFB Parameter a2" default=(1,-0.4) endparam param b1 caption="IFB Parameter b1" default=(1,0) endparam param b2 caption="IFB Parameter b2" default=(1,0) endparam param b3 caption="IFB Parameter b3" default=(1,0) endparam param b4 caption="IFB Parameter b4" default=(1,0) endparam param c1 caption="IFB Parameter c1" default=0.0 endparam param c2 caption="IFB Parameter c2" default=0.0 endparam param c3 caption="IFB Parameter c3" default=0.0 endparam param c4 caption="IFB Parameter c4" default=0.0 endparam param d1 caption="IFB Parameter d1" default=(0,1) endparam func fn1 caption="IFB Function 1" default=sqr() endfunc func fn2 caption="IFB Function 2" default=flip() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc func fn4 caption="IFB Function 4" default=conj() endfunc param mp caption="Memzon Parameter" default=1 min=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltJuliaIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=pz^@pow+@c i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*sqr(@p1)+@p2 endif if @p5<=a pz=pz*log(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*sqr(@p1)+@p2 endif if @p5<=a pz=pz*log(@p1)+@p3 endif i=i+1 else pz=pz^@pow+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Julia/IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Julia First""IFB First" endparam param p1 caption="IFB parameter a" default=(0.55,0.52) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam param c caption="Julia Seed" default=(-1.2,0.7) endparam param pow caption="Julia Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0.11) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltMunsterIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=exp(@mp2*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=exp(@mp2*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=0 endif endif return pz endfunc private: int i default: title="Alt Munster/IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Munster First""IFB First" endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param mp1 caption="Munster parameter 1" default=(2,0) endparam param mp2 caption="Munster parameter 2" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltJuliaIFB2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Julia/IFB 2" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Julia First""IFB First" endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param c caption="Julia Seed" default=(0,0) endparam param pow caption="Julia Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltModJM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i<1 pz=(pz^(@jpow+1)-1)/(pz^(@jpow-1)+1)+@c i=i+1 else if @st==0 pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@pp*@sf(pixel) else pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@sf(pixel) endif i=0 endif else if i<1 if @st==0 pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@pp*@sf(pixel) else pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@sf(pixel) endif i=i+1 else pz=(pz^(@jpow+1)-1)/(pz^(@jpow-1)+1)+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Mod Julia/Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam param v caption="Alt Variant" enum="Julia First""Mandelbrot First" endparam param c caption="Julia Seed" default=(1,0) endparam param jpow caption="Julia Exponent" default=(2,0) endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param mpow caption="Mandelbrot Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltMandelbrotBurningShip(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @st==0 if @v==0 if i<1 pz=pz^@pow+@pp*@pf(fpixel) i=i+1 else pz=abs(pz)^@pow+@pp*@pf(fpixel) i=0 endif else if i<1 pz=abs(pz)^@pow+@pp*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp*@pf(fpixel) i=0 endif endif else if @v==0 if i<1 pz=pz^@pow+@pf(fpixel) i=i+1 else pz=abs(pz)^@pow+@pf(fpixel) i=0 endif else if i<1 pz=abs(pz)^@pow+@pf(fpixel) i=i+1 else pz=pz^@pow+@pf(fpixel) i=0 endif endif endif return pz endfunc private: complex fpixel int i default: title="Alt Mandelbrot/Burning Ship" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(1,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() endfunc param v caption="Alt Variant" enum="Mandelbrot First""Burning Ship First" endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_3AltMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==0 if @v==0 if i==0 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@sf(fpixel) i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@sf(fpixel) i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=0 endif endif else if @v==0 if i==0 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@pf(fpixel) i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@pf(fpixel) i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=0 endif endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i==0 pz=pz^@pow+@c1 i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@c1 i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 elseif i==1 pz=pz^@pow+@c1 i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 else pz=pz^@pow+@c1 i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 else pz=pz^@pow+@c1 i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 elseif i==1 pz=pz^@pow+@c1 i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=0 endif endif return pz endfunc private: int i default: title="3Alt Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c1 caption="Julia Seed 1" default=(0.85,-0.4) endparam param c2 caption="Julia Seed 2" default=(1,0) endparam param c3 caption="Julia Seed 3" default=(1,0) endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltMandelbrotJuliaIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i==0 pz=pz^@jpow+@c i=i+1 elseif i==1 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 else float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif elseif @v==1 if i==0 pz=pz^@jpow+@c i=i+1 elseif i==1 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=0 endif elseif @v==2 if i==0 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 elseif i==1 pz=pz^@jpow+@c i=i+1 else float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif elseif @v==3 if i==0 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 elseif i==1 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=pz^@jpow+@c i=0 endif elseif @v==4 if i==0 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 elseif i==1 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 else pz=pz^@jpow+@c i=0 endif elseif @v==5 if i==0 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 elseif i==1 pz=pz^@jpow+@c i=i+1 else if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot/Julia/IFB" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c caption="Julia Seed" default=(-0.3,0) endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param jpow caption="Julia Exponent" default=(2,0) endparam param mpow caption="Mandelbrot Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 float a=real(pz)*imag(@c)+real(@c)*imag(pz) if i==0 if a<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 elseif i==1 if a<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 else if a<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=0 endif return pz endfunc private: int i default: title="3Alt IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param a1 caption="IFB parameter a1" default=(-0.75,-0.9) endparam param a2 caption="IFB parameter a2" default=(-0.95,-0.4) endparam param a3 caption="IFB parameter a3" default=(0.85,-0.5) endparam param b1 caption="IFB parameter b1" default=(1.2,0) endparam param b2 caption="IFB parameter b2" default=(1,0) endparam param b3 caption="IFB parameter b3" default=(1,0) endparam param b4 caption="IFB parameter b4" default=(1.2,0) endparam param b5 caption="IFB parameter b5" default=(1,0) endparam param b6 caption="IFB parameter b6" default=(1,0) endparam param c caption="IFB parameter c" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc func fn3 caption="IFB Function 3" default=flip() endfunc func fn4 caption="IFB Function 4" default=conj() endfunc func fn5 caption="IFB Function 5" default=cotanh() endfunc func fn6 caption="IFB Function 6" default=flip() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltMagnetMandelbrotJulia(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) i=0 return pz endfunc private: complex fpixel int i complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 if i==0 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 elseif i==1 pz=pz^2+@sf(fpixel) i=i+1 else pz=pz^2+@c i=0 endif elseif @v==1 if i==0 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=pz^2+@sf(fpixel) i=0 endif elseif @v==2 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 else pz=pz^2+@sf(fpixel) i=0 endif elseif @v==3 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=pz^2+@sf(fpixel) i=i+1 else pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=0 endif elseif @v==4 if i==0 pz=pz^2+@sf(fpixel) i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=0 endif else if i==0 pz=pz^2+@sf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 else pz=pz^2+@c i=0 endif endif return pz endfunc default: title="3Alt Magnet/Mandelbrot/Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="Magnet Parameter" default=(1,0) endparam param c caption="Julia Seed" default=(-1.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v2==0 pz=pz elseif @v2==1 pz=sqr(pz) elseif @v2==2 pz=recip(pz) elseif @v2==3 pz=pz+sqr(pz) elseif @v2==4 pz=pz-sqr(pz) elseif @v2==5 pz=pz^3 elseif @v2==6 pz=pz+sqr(pz)/2 elseif @v2==7 pz=pz-sqr(pz)/2 elseif @v2==8 pz=pz+sqr(pz)/3 elseif @v2==9 pz=pz-sqr(pz)/3 elseif @v2==10 pz=pz+pz^3/2 elseif @v2==11 pz=pz-pz^3/2 elseif @v2==12 pz=pz+pz^3/3 elseif @v2==13 pz=pz-pz^3/3 endif if @v==0 if i==0 pz=pz-@np1*(pz-1) i=i+1 elseif i==1 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 else pz=pz-@np3*(pz^3-1)/(3*pz^2) i=0 endif elseif @v==1 if i==0 pz=pz-@np1*(pz-1) i=i+1 elseif i==1 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 else pz=pz-@np2*(pz^2-1)/(2*pz) i=0 endif elseif @v==2 if i==0 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 elseif i==1 pz=pz-@np1*(pz-1) i=i+1 else pz=pz-@np3*(pz^3-1)/(3*pz^2) i=0 endif elseif @v==3 if i==0 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 elseif i==1 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 else pz=pz-@np1*(pz-1) i=0 endif elseif @v==4 if i==0 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 elseif i==1 pz=pz-@np1*(pz-1) i=i+1 else pz=pz-@np2*(pz^2-1)/(2*pz) i=0 endif elseif @v==5 if i==0 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 elseif i==1 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 else pz=pz-@np1*(pz-1) i=0 endif endif return pz endfunc private: int i default: title="3Alt Newton" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="123""132""213""231""312""321" endparam param v2 caption="Modifier" enum="ident(z)""sqr(z)""recip(z)""z+sqr(z)""z-sqr(z)""cube(z)"\ "z+sqr(z)/2""z-sqr(z)/2""z+sqr(z)/3""z-sqr(z)/3""z+cube(z)/2"\ "z-cube(z)/2""z+cube(z)/3""z-cube(z)/3" endparam param np1 caption="Newton Parameter 1" default=(-0.5,0) endparam param np2 caption="Newton Parameter 2" default=(1.55,0) endparam param np3 caption="Newton Parameter 3" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000000001 exponential=true endparam } class OM_3AltMagnetJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) m_ZOld=pz if @f pz=flip(pz) endif pz=@zp1*pz+@zp2 if i==0 pz=((pz^2+@mp1-1)/(2*pz+@mp1-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2-1)/(2*pz+@mp2-2))^2 i=i+1 else pz=((pz^2+@mp3-1)/(2*pz+@mp3-2))^2 i=0 endif return pz endfunc default: title="3Alt Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Magnet Parameter 1" default=(2.35,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param f caption="flip(z)" default=false endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc private: complex fpixel int i complex func Iterate(complex pz) ,m_ZOld=pz pz=@zp1*pz+@zp2 if @st==0 if i==0 pz=((pz^2+@mp1*@sf(fpixel)-1)/(2*pz+@mp1*@sf(fpixel)-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2*@sf(fpixel)-1)/(2*pz+@mp2*@sf(fpixel)-2))^2 i=i+1 else pz=((pz^2+@mp3*@sf(fpixel)-1)/(2*pz+@mp3*@sf(fpixel)-2))^2 i=0 endif else if i==0 pz=((pz^2+@mp1*@pf(fpixel)-1)/(2*pz+@mp1*@pf(fpixel)-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2*@pf(fpixel)-1)/(2*pz+@mp2*@pf(fpixel)-2))^2 i=i+1 else pz=((pz^2+@mp3*@pf(fpixel)-1)/(2*pz+@mp3*@pf(fpixel)-2))^2 i=0 endif endif return pz endfunc default: title="3Alt Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter 1" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param mp1 caption="Magnet Parameter 1" default=(0.3,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @rec pz=recip(pz) endif if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=pz+0.35*conj(flip(pz)) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=pz^2*(pz-1.5)/(1-1.5*pz) elseif @m==5 pz=pz^2*(pz-1.5)/(1-1.5*pz) pz=flip(pz) elseif @m==6 pz=pz^2*(pz-1.5)/(1-1.5*pz) pz=flip(conj(pz)) elseif @m==7 pz=pz^2*(pz+1.5)/(1+1.5*pz) elseif @m==8 pz=pz^2*(pz+1.5)/(1+1.5*pz) pz=flip(pz) else pz=pz^2*(pz+1.5)/(1+1.5*pz) pz=flip(conj(pz)) endif pz=@zp1*pz+@zp2 if i==0 pz=exp(@mp4*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) i=i+1 else pz=exp(@mp6*1i)*pz^2*(pz-@mp3)/(1-@mp3*pz) i=0 endif return pz endfunc private: int i default: title="3Alt Munster" int param version caption="Version" default=100 visible=@version<100 endparam param rec caption="Recip(Z)" default=false endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10" endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param mp3 caption="Munster Parameter 3" default=(1.25,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MunsterX(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @rec pz=recip(pz) endif if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=pz+0.35*conj(flip(pz)) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=pz-0.2*sqr(recip(pz)) elseif @m==5 pz=recip(flip(pz)) elseif @m==6 pz=(pz-11)/(1-11*pz) elseif @m==7 pz=(pz-11)/(1-11*pz) pz=flip(pz) elseif @m==8 pz=(pz-11)/(1-11*pz) pz=flip(conj(pz)) elseif @m==9 pz=(pz+6)/(1+6*pz) elseif @m==10 pz=pz^2*(pz-5)/(1-5*pz) elseif @m==11 pz=pz^2*(pz-5)/(1-5*pz) pz=recip(flip(pz)) elseif @m==12 pz=pz^2*(pz-5)/(1-5*pz) pz=recip(pz) elseif @m==13 pz=pz^2*(pz-5)/(1-5*pz) pz=flip(conj(pz)) else pz=pz^2*(pz+3)/(1+3*pz) pz=flip(recip(pz)) endif pz=@zp1*pz+@zp2 if i<1 pz=exp(@mp4*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) elseif i>0 && i<@mem pz=exp(@mp5*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) else pz=exp(@mp6*1i)*pz^2*(pz-@mp3)/(1-@mp3*pz) endif i=i+1 return pz endfunc private: int i default: title="Memzon Munster" int param version caption="Version" default=100 visible=@version<100 endparam param rec caption="Recip(Z)" default=false endparam param mem caption="X Parameter" default=6 min=2 endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15" endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param mp3 caption="Munster Parameter 3" default=(1.25,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MemzonWigwamBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=conj(pz) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=conj(flip(pz)) elseif @m==5 pz=pz+flip(conj(pz)) else pz=pz-flip(conj(pz)) endif if i<@mtp if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif i=0 endif return pz endfunc default: title="Memzon Wigwam/Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param mtp caption="Memzon Parameter" default=2 min=1 endparam func sf caption="Start Function" default=ident() endfunc param m caption="Modifier" enum="1""2""3""4""5""6""7" endparam param wp caption="Wigwam Parameter" default=(0.25,1.05) endparam param bp1 caption="Barnsley Parameter 1" default=(0.9,0.25) endparam param bp2 caption="Barnsley Parameter 2" default=(1.6,-1.15) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonWigwam(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+0.1*flip(pz) elseif @v==2 pz=pz+0.1*exp(pz) elseif @v==3 pz=pz+0.1*acos(pz) elseif @v==4 pz=pz+0.1*cos(pz) elseif @v==5 pz=pz+0.1*trunc(pz) elseif @v==6 pz=pz-0.1*flip(pz) elseif @v==7 pz=pz-0.1*conj(pz) elseif @v==8 pz=pz-0.1*cabs(pz) elseif @v==9 pz=pz-0.1*abs(pz) elseif @v==10 pz=pz-0.1*sqr(pz) elseif @v==11 pz=pz-0.1*acosh(pz) elseif @v==12 pz=pz-0.1*cosh(pz) elseif @v==13 pz=pz-0.1*cos(pz) elseif @v==14 pz=pz+0.1*flip(abs(pz)) elseif @v==15 pz=pz+0.1*flip(floor(pz)) elseif @v==16 pz=pz-0.1*flip(conj(pz)) elseif @v==17 pz=pz-0.1*flip(acosh(pz)) elseif @v==18 pz=pz-0.1*flip(ceil(pz)) elseif @v==19 pz=pz-0.1*flip(floor(pz)) elseif @v==20 pz=pz+0.1*cabs(exp(pz)) elseif @v==21 pz=pz-0.1*cabs(round(pz)) elseif @v==22 pz=pz+0.1*abs(sqrt(pz)) elseif @v==23 pz=pz+0.1*exp(sqrt(pz)) elseif @v==24 pz=pz+0.1*exp(sqr(pz)) elseif @v==25 pz=pz+0.1*exp(atan(pz)) elseif @v==26 pz=pz+0.1*exp(cos(pz)) elseif @v==27 pz=pz-0.1*exp(exp(pz)) elseif @v==28 pz=pz-0.1*exp(cosh(pz)) elseif @v==29 pz=pz-0.1*exp(cos(pz)) elseif @v==30 pz=pz+0.1*exp(trunc(pz)) elseif @v==31 pz=pz+0.1*log(cos(pz)) elseif @v==32 pz=pz+0.1*sqrt(sqrt(pz)) elseif @v==33 pz=pz-0.1*sqrt(acosh(pz)) elseif @v==34 pz=pz+0.1*sqr(atanh(pz)) elseif @v==35 pz=pz+0.1*sqr(cos(pz)) elseif @v==36 pz=pz-0.1*sqr(cosh(pz)) elseif @v==37 pz=pz+0.1*cotanh(acos(pz)) elseif @v==38 pz=pz+0.1*cotanh(cosh(pz)) elseif @v==39 pz=pz-0.1*cotanh(log(pz)) elseif @v==40 pz=pz+0.1*atanh(acos(pz)) elseif @v==41 pz=pz+0.1*atanh(cos(pz)) elseif @v==42 pz=pz-0.1*atanh(acosh(pz)) elseif @v==43 pz=pz-0.1*atanh(cos(pz)) elseif @v==44 pz=pz+0.1*atan(cos(pz)) elseif @v==45 pz=pz+0.1*atan(log(pz)) elseif @v==46 pz=pz+0.1*acos(trunc(pz)) elseif @v==47 pz=pz+0.1*acos(recip(pz)) elseif @v==48 pz=pz+0.1*acos(exp(pz)) elseif @v==49 pz=pz+0.1*acos(sqrt(pz)) elseif @v==50 pz=pz+0.1*cosh(sqr(pz)) elseif @v==51 pz=pz-0.1*cosh(sqr(pz)) elseif @v==52 pz=pz-0.1*asin(acosh(pz)) else pz=pz-0.1*asin(cosh(pz)) endif if i<@mtp if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 else if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=0 endif return pz endfunc default: title="Memzon Wigwam" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mtp caption="Memzon Parameter" default=5 min=1 endparam param v caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54" endparam param wp1 caption="Wigwam Parameter 1" default=(1,0.4) endparam param wp2 caption="Wigwam Parameter 2" default=(-1,0.5) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonWigwam2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+0.1*sqr(pz) elseif @v==2 pz=pz+0.1*cabs(pz) elseif @v==3 pz=pz+0.1*abs(pz) elseif @v==4 pz=pz-0.1*cos(pz) elseif @v==5 pz=pz+0.1*cosh(pz) elseif @v==6 pz=pz-0.01*recip(pz) elseif @v==7 pz=pz-0.1*conj(flip(pz)) elseif @v==8 pz=pz-0.1*cabs(pz) elseif @v==9 pz=pz-0.1*abs(sqrt(pz)) elseif @v==10 pz=pz-0.1*abs(sin(pz)) elseif @v==11 pz=pz-0.1*exp(abs(pz)) elseif @v==12 pz=pz-0.01*exp(exp(pz)) elseif @v==13 pz=pz-0.1*exp(sqr(pz)) elseif @v==14 pz=pz+0.1*log(acosh(pz)) elseif @v==15 pz=pz-0.1*sqrt(sqrt(pz)) elseif @v==16 pz=pz-0.1*sqrt(sqr(pz)) elseif @v==17 pz=pz-0.1*sqrt(cotanh(pz)) elseif @v==18 pz=pz-0.1*atan(exp(pz)) elseif @v==19 pz=pz-0.1*acosh(cos(pz)) elseif @v==20 pz=pz-0.1*acosh(abs(pz)) elseif @v==21 pz=pz-0.1*recip(acosh(pz)) elseif @v==22 pz=pz+0.1*cabs(acosh(pz)) elseif @v==23 pz=pz+0.1*sqrt(cos(pz)) elseif @v==24 pz=pz+0.1*sqrt(tanh(pz)) elseif @v==25 pz=pz+0.1*atan(acos(pz)) elseif @v==26 pz=pz+0.1*sin(acos(pz)) elseif @v==27 pz=pz+0.1*recip(acos(pz)) elseif @v==28 pz=pz+0.1*floor(pz) elseif @v==29 pz=pz+0.1*floor(flip(pz)) elseif @v==30 pz=pz-0.1*floor(flip(pz)) elseif @v==31 pz=pz+0.1*sqrt(tanh(pz)) elseif @v==32 pz=pz-0.1*ceil(abs(pz)) elseif @v==33 pz=pz+0.1*sqrt(cos(pz)) elseif @v==34 pz=pz-0.1*ceil(cabs(pz)) elseif @v==35 pz=pz-0.1*sqrt(abs(pz)) elseif @v==36 pz=pz+0.1*trunc(exp(pz)) elseif @v==37 pz=pz+0.1*cotanh(recip(pz)) elseif @v==38 pz=pz+0.1*round(atanh(pz)) elseif @v==39 pz=pz-0.1*cotan(tanh(pz)) elseif @v==40 pz=pz-0.1*tanh(exp(pz)) elseif @v==41 pz=pz-0.1*cosh(cosh(pz)) elseif @v==42 pz=pz-0.1*cosh(atan(pz)) elseif @v==43 pz=pz-0.1*cosh(sqrt(pz)) elseif @v==44 pz=pz-0.1*cosh(cabs(pz)) elseif @v==45 pz=pz-0.1*cos(atanh(pz)) else pz=pz-0.1*cos(atan(pz)) endif if i==0 if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 elseif i>0 && i<@mtp if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=i+1 else i=0 endif return pz endfunc default: title="Memzon Wigwam 2" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mtp caption="Memzon Parameter" default=5 min=2 endparam param v caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param wp1 caption="Wigwam Parameter 1" default=(1.05,0.8) endparam param wp2 caption="Wigwam Parameter 2" default=(-1.05,0.2) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_IFB33(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=1/real(fn3(round(trunc(pz)))) if a<@p4 pz=pz*recip(@p1)+@p2 endif if @p5<=a pz=pz*ceil(@p25)+@p3 endif if a<@p8 pz=pz*tan(@p25)+@p9 endif if @p10<=a pz=pz*recip(@p1)+@p11 endif return pz endfunc default: title="IFB 33" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=-1.38 endparam param p1 caption="IFB Parameter a1" default=(-2,-1) endparam param p25 caption="IFB Parameter a2" default=(2.4,1.05) endparam param p2 caption="IFB Parameter b1" default=(0.26,2.26) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1.2,-0.7) endparam param p11 caption="IFB Parameter b4" default=(10.75,-2.36) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(0.82,-1.02) endparam param p7 caption="Z Parameter 2" default=(1.45,-1.7) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltWigwam(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @m==0 pz=pz elseif @m==1 pz=flip(pz)-0.5 elseif @m==2 pz=conj(pz) elseif @m==3 pz=pz+0.35*conj(flip(pz)) elseif @m==4 pz=pz-0.3*flip(trunc(pz)) elseif @m==5 pz=pz+0.35*sin(pz) elseif @m==6 pz=pz-0.1*acosh(pz) elseif @m==7 pz=pz+0.9*cosh(asin(pz)) elseif @m==8 pz=pz-2*sin(pz) elseif @m==9 pz=pz-2.05*sin(asin(pz)) elseif @m==10 pz=pz+0.35*cos(asin(pz)) elseif @m==11 pz=pz+0.9*atan(cos(pz)) else pz=pz-0.05*atan(cotanh(pz)) endif pz=@zp1*pz+@zp2 if i==0 if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 elseif i==1 if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=i+1 else if real(pz)<0.5 pz=@wp3*pz else pz=@wp3*(1-pz) endif i=0 endif return pz endfunc private: int i default: title="3Alt Wigwam" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param wp1 caption="Wigwam parameter 1" default=(1.35,-0.42) endparam param wp2 caption="Wigwam parameter 2" default=(0.93,0.03) endparam param wp3 caption="Wigwam parameter 3" default=(-1.02,0.31) endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltBivarJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pk=@sf(pz) pz=@sf(pz) i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i<1 a=pz pz=pz^2+@bp1*pk+@c1 pk=pk^2+@bp2*a+@c1 i=i+1 else b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2 i=0 endif else if i<1 b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2 i=i+1 else a=pz pz=pz^2+@bp1*pk+@c1 pk=pk^2+@bp2*a+@c1 i=0 endif endif return pz return pk endfunc default: title="Alt Bivar Julia" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Julia Seed 1" default=(-0.15,-0.1) endparam param c2 caption="Julia Seed 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltBivarMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pk=@sf(pz) pz=@sp else pz=@sp pk=@sp endif i=0 return pz return pk endfunc private: complex fpixel complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i<1 a=pz pz=pz^2+@bp1*pk+@c1*@pf(fpixel) pk=pk^2+@bp2*a+@c1*@pf(fpixel) i=i+1 else b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2*@pf(fpixel) i=0 endif else if i<1 b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2*@pf(fpixel) i=i+1 else a=pz pz=pz^2+@bp1*pk+@c1*@pf(fpixel) pk=pk^2+@bp2*a+@c1*@pf(fpixel) i=0 endif endif return pz return pk endfunc default: title="Alt Bivar Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param av caption="Alt Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.1,0) visible=@sv!=0 endparam param c1 caption="Pixel Parameter 1" default=(-0.35,0) endparam param c2 caption="Pixel Parameter 2" default=(-0.45,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=3 endfunc func pf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AwunonIxatrisep4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz pz=fn1(pz) if @sv=="1" pz=pz elseif @sv=="2" if real(pz)imag(pz) pz=flip(pz) endif elseif @sv=="4" if real(pz)imag(pz) pz=flip(pz) endif pz=2*abs(pz) elseif @Va=="16" if real(pz)>imag(pz) pz=flip(pz) endif pz=-2*abs(pz) elseif @Va=="17" if real(pz)>imag(pz) pz=flip(pz) endif pz=1.75*tanh(pz) elseif @Va=="18" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif elseif @Va=="19" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif pz=flip(pz) elseif @Va=="20" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif pz=2.3*pz elseif @Va=="21" pz=pz+0.1*cos(pz) elseif @Va=="22" pz=pz-0.0175*recip(pz) elseif @Va=="23" pz=pz+0.0175*recip(pz) endif pz=recip(pz) pz=@p2*fn4(log(abs((10*pz^9-495*pz^8+10560*pz^7-127050*pz^6+946638*pz^5\ -4510275*pz^4+13667720*pz^3-25228500*pz^2+25507152*pz\ -10628640)/10628640)))^2+@p3*@fn5(fpixel) endwhile pz=@adj*pz/100 return pz endfunc private: complex fpixel int i default: title="Awunon Ixatrisep 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param Va caption="Loop Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param p2 caption="Labs Parameter" default=(1,0) endparam param p3 caption="Pixel Parameter " default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function" default=ident() endfunc func fn5 caption="Pixel Function" default=ident() endfunc param p6 caption="Möbius Parameter" default=(0,0) endparam param p8 caption="Add Sqr Parameter" default=(0,0) endparam param iter caption="Iterations" default=2 endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IFB34(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(flip(pz)))-real(fn3(cotan(pz))) if a<@p4 pz=pz*flip(@p1)+@p2 endif if @p5<=a pz=pz*atan(@p25)+@p3 endif if a<@p8 pz=pz*sinh(@p25)+@p9 endif if @p10<=a pz=pz*conj(@p1)+@p11 endif return pz endfunc default: title="IFB 34" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=1.0 endparam param p1 caption="IFB Parameter a1" default=(-0.84569,-0.74706) endparam param p25 caption="IFB Parameter a2" default=(1,0) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_DKPT(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) return pz endfunc default: title="DKPT" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="DKPT Parameter 1" default=(1,0) endparam param p2 caption="DKPT Parameter 2" default=(1,0) endparam param p3 caption="DKPT Parameter 3" default=(1,0) endparam param p4 caption="DKPT Parameter 4" default=(9.5,0) endparam param p5 caption="DKPT Parameter 5" default=(-7.5,0) endparam param p6 caption="DKPT Parameter 6" default=(-2.55,0) endparam param p7 caption="DKPT Parameter 7" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AltDKPT(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if i==0 pz=pz-@p5*(pz^4+pz^3+pz^2+pz-@p1)/((pz-@p2)*(pz-@p3)*(pz-@p4)) i=i+1 else pz=pz+@p5*(pz^4+pz^3+pz^2+pz-@p1)/((pz-@p2)*(pz-@p3)*(pz-@p4)) i=0 endif return pz endfunc private: int i default: title="Alt DKPT" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="DKPT Parameter 1" default=(1.75,0) endparam param p2 caption="DKPT Parameter 2" default=(1.25,0) endparam param p3 caption="DKPT Parameter 3" default=(-2.55,0) endparam param p4 caption="DKPT Parameter 4" default=(0.45,0) endparam param p5 caption="DKPT Parameter 5" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AltDKPTNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @av==0 if i==0 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) i=i+1 else pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/(4*pz^3+3*@p1*pz^2+2*@p2*pz+@p3) i=0 endif else if i==0 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/(4*pz^3+3*@p1*pz^2+2*@p2*pz+@p3) i=i+1 else pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) i=0 endif endif return pz endfunc private: int i default: title="Alt DKPT/Newton" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param p1 caption="Parameter 1" default=(4.15,0) endparam param p2 caption="Parameter 2" default=(1,0) endparam param p3 caption="Parameter 3" default=(1,0) endparam param p4 caption="Parameter 4" default=(9.5,0) endparam param p5 caption="Parameter 5" default=(-7.5,0) endparam param p6 caption="Parameter 6" default=(-2.55,0) endparam param p7 caption="Parameter 7" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_IFB36(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 float a=real(@fn3(cotanh(pz))*exp(@p26))+imag(@fn3(flip(pz))*@p26) if a<@p4 pz=pz*cabs(@p1)+@p2 endif if @p5<=a pz=pz*atan(@p25)+@p3 endif if a<@p8 pz=pz*@p25+@p9 endif if @p10<=a pz=pz*sqr(@p1)+@p11 endif return pz endfunc default: title="IFB 36" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="IFB Parameter a1" default=(0.521,-1.01) endparam param p25 caption="IFB Parameter a2" default=(-0.576,0.854) endparam param p2 caption="IFB Parameter b1" default=(2.629,2.73) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(0.79,-0.105) endparam param p11 caption="IFB Parameter b4" default=(1.98,-0.79) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p26 caption="IFB Parameter d" default=(2.156,9.669) endparam param p6 caption="Z Parameter 1" default=(0.685,0.736) endparam param p7 caption="Z Parameter 2" default=(-1.4,0.37) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltMandelbrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3+@p2*@pf(fpixel) i=i+1 else pz=pz^4+@p3*@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4+@p2*@pf(fpixel) i=i+1 else pz=pz^3+@p3*@pf(fpixel) i=0 endif elseif @av==2 if i==0 pz=pz^3+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^4+@p3*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=pz^3+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p3*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=pz^4+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^3+@p3*@pf(fpixel) i=0 endif elseif @av==5 if i==0 pz=pz^4+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p3*@pf(fpixel) i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*c i=i+1 elseif i==1 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 else pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*c i=i+1 elseif i==1 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 else pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=0 endif elseif @av==2 if i==0 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 elseif i==1 pz=pz^2+@p1*c i=i+1 else pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=0 endif elseif @av==3 if i==0 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 elseif i==1 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 else pz=pz^2+@p1*c i=0 endif elseif @av==4 if i==0 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p1*c i=i+1 else pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=0 endif else if i==0 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 elseif i==1 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 else pz=pz^2+@p1*c i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 else pz=3*pz^3+@p3*@pf(fpixel)^3 i=0 endif elseif @av==1 if i==0 pz=pz+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 else pz=2*pz^2+@p2*@pf(fpixel)^2 i=0 endif elseif @av==2 if i==0 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 elseif i==1 pz=pz+@p1*@pf(fpixel) i=i+1 else pz=3*pz^3+@p3*@pf(fpixel)^3 i=0 endif elseif @av==3 if i==0 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 elseif i==1 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 else pz=pz+@p1*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 elseif i==1 pz=pz+@p1*@pf(fpixel) i=i+1 else pz=2*pz^2+@p2*@pf(fpixel)^2 i=0 endif else if i==0 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 elseif i==1 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 else pz=pz+@p1*@pf(fpixel) i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*exp(c) i=i+1 elseif i==1 pz=pz^2+@p2*tan(c) i=i+1 else pz=pz^2+@p3*sqr(c) i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*exp(c) i=i+1 elseif i==1 pz=pz^2+@p3*sqr(c) i=i+1 else pz=pz^2+@p2*tan(c) i=0 endif elseif @av==2 if i==0 pz=pz^2+@p2*tan(c) i=i+1 elseif i==1 pz=pz^2+@p1*exp(c) i=i+1 else pz=pz^2+@p3*sqr(c) i=0 endif elseif @av==3 if i==0 pz=pz^2+@p2*tan(c) i=i+1 elseif i==1 pz=pz^2+@p3*sqr(c) i=i+1 else pz=pz^2+@p1*exp(c) i=0 endif elseif @av==4 if i==0 pz=pz^2+@p3*sqr(c) i=i+1 elseif i==1 pz=pz^2+@p1*exp(c) i=i+1 else pz=pz^2+@p2*tan(c) i=0 endif else if i==0 pz=pz^2+@p3*sqr(c) i=i+1 elseif i==1 pz=pz^2+@p2*tan(c) i=i+1 else pz=pz^2+@p1*exp(c) i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*sqr(exp(c)) i=i+1 elseif i==1 pz=pz^2+@p2*sin(sin(c)) i=i+1 else pz=pz^2+@p3*c i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*sqr(exp(c)) i=i+1 elseif i==1 pz=pz^2+@p3*c i=i+1 else pz=pz^2+@p2*sin(sin(c)) i=0 endif elseif @av==2 if i==0 pz=pz^2+@p2*sin(sin(c)) i=i+1 elseif i==1 pz=pz^2+@p1*sqr(exp(c)) i=i+1 else pz=pz^2+@p3*c i=0 endif elseif @av==3 if i==0 pz=pz^2+@p2*sin(sin(c)) i=i+1 elseif i==1 pz=pz^2+@p3*c i=i+1 else pz=pz^2+@p1*sqr(exp(c)) i=0 endif elseif @av==4 if i==0 pz=pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p1*sqr(exp(c)) i=i+1 else pz=pz^2+@p2*sin(sin(c)) i=0 endif else if i==0 pz=pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p2*sin(sin(c)) i=i+1 else pz=pz^2+@p1*sqr(exp(c)) i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 6" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltJuliaMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@pf(fpixel) i=i+1 elseif i==1 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 else pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 else pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=0 endif elseif @av==2 if i==0 pz=pz^2+@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 else pz=(pz^2+@pf(fpixel))^2+@c i=0 endif elseif @av==3 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 else pz=(pz^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=pz^2+@pf(fpixel) i=i+1 else pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==5 if i==0 pz=(pz^2+@c)^2+@pf(fpixel) pz=pz^2+@c i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=0 endif elseif @av==6 if i==0 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 else pz=pz^2+@pf(fpixel) i=0 endif elseif @av==7 if i==0 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 else pz=pz^2+@c i=0 endif elseif @av==8 if i==0 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@pf(fpixel) i=i+1 else pz=(pz^2+@pf(fpixel))^2+@c i=0 endif elseif @av==9 if i==0 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=(pz^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 else pz=pz^2+@pf(fpixel) i=0 endif elseif @av==11 if i==0 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 else pz=pz^2+@c i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Julia/Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c caption="Seed" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ModifiedNewton3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) else if @st==0 pz=@pf(pz) else pz=@sp endif endif i=0 return pz endfunc private: int i complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@zp1*pz+@zp2 if @alt if i==0 if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2+@pf(fpixel) endif i=i+1 else if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2+@pf(fpixel) endif i=0 endif else if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2+@pf(fpixel) endif endif return pz endfunc default: title="Modified Newton 3" int param version caption="Version" default=100 visible=@version<100 endparam param alt caption="Alt" default=false endparam param jm caption="J/M" enum="J""M1""M2" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 && @st==1 endparam func pf caption="Pixel Function" default=ident() endfunc param p1 caption="MN Parameter 1" default=(-0.25,0) endparam param p2 caption="MN Parameter 2" default=(2,0) endparam param p3 caption="MN Parameter 3" default=(1,0) endparam param p4 caption="MN Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_3AltMandelbrot7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz) c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 else pz=pz^3+(@c3*exp(c)-1)*pz i=0 endif elseif @av==1 if i==0 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 else pz=pz^3+(@c2*sqr(c)-1)*pz i=0 endif elseif @av==2 if i==0 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 else pz=pz^3+(@c3*exp(c)-1)*pz i=0 endif elseif @av==3 if i==0 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 else pz=pz^3+(@c1*cotanh(c)-1)*pz i=0 endif elseif @av==4 if i==0 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 else pz=pz^3+(@c2*sqr(c)-1)*pz i=0 endif elseif @av==5 if i==0 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 else pz=pz^3+(@c1*cotanh(c)-1)*pz i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 7" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c1 caption="C Parameter 1" default=(1,0) endparam param c2 caption="C Parameter 2" default=(1,0) endparam param c3 caption="C Parameter 3" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ModifiedMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz) return pz endfunc private: