Dear reader Intro About three or four years ago I downloaded fractint and winfract. Since then, every year, during wintertime I'm playing with those programs. It's the formula parser that has my main interest. I can subdivide this in three things: 1. What are the possibilities of the parser? 2. Do I understand what it is doing? 3. Can I produce pictures, which are somehow interesting and/or beautiful? Now I feel the need to show some of my "investigations" to people who are interested. I'm not sure this list is the right place, because emails I read are mainly about implementation-problems. Well, we will see. Quit normal, during my investigations, a lot of questions pop up. Questions I couldn't answer. Maybe someone can. Short formulas and graphs of real valued functions This first time I like to show is that you can make really short formulas. Here's one: formula#1 jhline { : |Imag(Pixel)|<p1 } I like it: there is no initiation, nothing in the looping part, there is only a criteria to stop. The formula draws the x-as. The thickness of the line depends on the parameter p1. So I ask myself: "What is the shortest, meaningful formula possible". I came with this: formula#2 jhshortest { : Pixel<0 } This formula divides the plane in two half-planes. Apart from the name there are 10 symbols. Naturally this gives my first question: question#1 Is there a shorter formula possible? Does anybody know a shorter one? Because Pixel=( , ) is a complex number or otherwise interpreted a point of the plain, the statement Pixel<0 has mathematical spoken no meaning: there is no ordering in Z or R2. Nevertheless the generator interprets the statement. So question#2 How interprets the formulagenerator things like z<1? For sure these formulas have nothing to do with fractals. But they have to do with fractint. And the first one gave me a marvellous idea (at least that's what I think): you can use the formulagenerator for drawing the graph of real valued functions in a rather simple way. Here are two formulas doing that. The first draws a parabola, the second draws the graphs of functions of the form f(x)=(ax+b)/(cx^2+dx+e) formula#3 jhparabola {;Jos Hendriks,2002 : |real(Pixel)^2-imag(Pixel)-1.25|<p1 } formula#4 jhgraphs1 {;Jos Hendriks,2002 ;graph of y= (a1*x+a2*x)/(a3*x^2+a4*x+a5)\ ;imag(p3) gives the thickness : |(real(p1)*real(Pixel)+imag(p1))/\ (real(p2)*real(Pixel)^2+imag(p2)*\ real(Pixel)+real(p3))-imag(Pixel)|<imag(p3)||\ |real(Pixel)|<.001|||imag(Pixel)|<.001 } In these formulas is the amount of typework not greater then in a "math-program". The rendering time is not too long: a few seconds or less. Moreover, and I think the most interesting part: The unusual way fractint draws the graph (it's scanning if a point belongs to the graph or not) makes a graph a quite elegant drawing because the thickness of the line is not everywhere the same. So you can create elegant curves. About this maybe another time. For convenience I have included some parameter files, because some picture parameters are important. For instance maxiter=2. I have the frms also repeated. In this way you can transport all at once into a par file. p.s:don't blame me for mistakes I make in writing English: it's not my native language frm:jhline { ;Jos Hendriks,2002 ;draws the line y=0, p1 gives the thickness of the line ;watch out: only two colors are used ;take for instance maxiter=2, inside=0, outside=iter : |Imag(Pixel)|<p1 } x-as {;Jos Hendriks,2002 reset=2000 type=formula formulaname=jhline center-mag=0/0/0.6666667 params=0.001/0 float=y maxiter=2 inside=0 colors=00000e } frm:jhparabola{ ;Jos Hendriks,2002, ;draws a parabola. Thickness depends on p1. ;use maxiter=2,inside color=0, outside=iter : |real(Pixel)^2-imag(Pixel)-1.25|<p1 } jhparabola1 {;Jos Hendriks,2002 reset=2000 type=formula formulafile=sier.frm formulaname=jhparabola center-mag=0.0301786/0.369842/0.4959278 params=0.1/0 float=y maxiter=2 inside=0 colors=00000e } frm:jhgraphs1 { ;Jos Hendriks,2002 ;graph of y= (a1*x+a2*x)/(a3*x^2+a4*x+a5)\ ;imag(p3) gives the thickness ;also the x- and y-axes are drawn : |(real(p1)*real(Pixel)+imag(p1))/\ (real(p2)*real(Pixel)^2+imag(p2)*\ real(Pixel)+real(p3))-imag(Pixel)|<imag(p3)||\ |real(Pixel)|<.001|||imag(Pixel)|<.001 { graph1 { ;Jos Hendriks,2002, broken polynomial function ; also x- en y-axes are visible reset=2000 type=formula formulafile=sier.frm formulaname=jhgraphs1 passes=1 center-mag=-0.791138/1.96774/0.2142747 params=0/5/-1/2/1/0.02 float=y maxiter=2 inside=0 cyclerange=1/1 colors=00000e } graph2 { ; Jos Hendriks,2002, broken polynomial function ; also x- en y-as are visible reset=2000 type=formula formulafile=sier.frm formulaname=jhgraphs1 passes=1 center-mag=-0.791138/1.96774/0.2142747 params=0/5/1/-2/-3/0.05 float=y maxiter=2 inside=0 cyclerange=1/1 colors=00000e } graph3 { ; Jos Hendriks,2002, broken polynomial function ; also x- en y-axes are visible reset=2000 type=formula formulafile=sier.frm formulaname=jhgraphs1 passes=1 center-mag=-0.791138/1.96774/0.2142747 params=0/5/1/0/1/0.05 float=y maxiter=2 inside=0 cyclerange=1/1 colors=00000e } graph4 { ; Jos Hendriks,2002, broken polynomial function ; also x- en y-as are visible reset=2000 type=formula formulafile=sier.frm formulaname=jhgraphs1 passes=1 center-mag=-0.791138/1.96774/0.2142747 params=-5/5/1/0/1/0.05 float=y maxiter=2 inside=0 cyclerange=1/1 colors=00000e } graph5 { ; Jos Hendriks,2002, ;with correct choosen parameters graph of linear f: a line ; also x- en y-axes are visible reset=2000 type=formula formulafile=sier.frm formulaname=jhgraphs1 passes=1 center-mag=-0.791138/1.96774/0.2142747 params=1/3/0/0/1/0.05 float=y maxiter=2 inside=0 cyclerange=1/1 colors=00000e }
hi fractinters, merry x-mas and a happy new year.. **************** ny2003-1 { ; Version 2002 Patchlevel 3 reset=2002 type=formula formulafile=new2003.frm formulaname=new2003 function=log/cosxx/exp/cotan passes=1 center-mag=-0.714002/0.738264/1.736321/-1/154.999999999999943/1.77725889\ 56077584e-013 params=1.069152195806757/0.9393722342600787/0.06774529251991225/-0.94344\ 34034241768/1.436170537430952/-2.349223303933836/0.1527591784417249/0.13\ 08709982604449/1.995343485824152/41 float=y maxiter=200 inside=bof60 decomp=256 symmetry=none periodicity=0 colors=wiIxkJzlJ<14>YRCWPBUOB<5>IF6GD6EC5CA5A94<3>221000000<25>S4nT4pU4r\ <2>Y5xZ5zY5x<18>D2OC2MA2K<3>61C50A408<3>000<24>nT2pU2rW2<3>z_2<25>C70A50\ 840<2>210000021<24>GncHpeHrg<2>JxkKzmJxk<20>6KF5IE4GC<3>286265143122000<\ 9>LF6NH7PI7<3>XPAZRB`SB<3>h_EjaFlbG<4>viI } ny2003-2 { ; Version 2002 Patchlevel 3 reset=2002 type=formula formulafile=new2003.frm formulaname=new2003 function=recip/cosh/sqr/conj passes=1 center-mag=7.54576/2.48156/0.4055098/1/-47.5000000000000639/3.8552494530\ 1085609e-014 params=3.395733512375255/5.356816309091463/0.4419049653614918/-2.7911099\ 58189642/7.637836848048342/1.882442701498459/-0.1814630573442793/-1.4827\ 22217474899/4.100650044251839/38 float=y maxiter=500 inside=bof60 decomp=256 symmetry=none periodicity=0 colors=@4-lake.map } ny2003-3 { ; Version 2002 Patchlevel 3 reset=2002 type=formula formulafile=new2003.frm formulaname=new2003 function=recip/cosh/sqr/conj passes=1 center-mag=0.132034/-0.297903/2.077494/-1/130/1.14117049143658278e-013 params=5.936033204138311/5.57642750328074/1.596542252876369/-1.896673482\ 467117/-0.3586230048524422/-1.874935148167363/-0.05415082247383037/0.009\ 330762657551719/4.100650044251839/33 float=y maxiter=100 inside=bof60 decomp=256 symmetry=none periodicity=0 colors=000021000<19>l88n88q89<3>zAA<18>F22C22A11<3>000000<18>33k33n34p<3\
44z<19>11E01C009<2>002000220<17>kjAnlBpoB<3>zyD<19>EE3CC2992<3>000<18>T\ 6kV6nX6p<3>b7z<18>91F71C61A<2>102000021<18>DlPDnQEqS<3>GzX<22>152 }
-0.0947&&x<-0.06555 xCW=4*x chrW9 = y<xCW+0.47641&&y>xCW+0.44693||(y>-xCW+0.19692&&y<-xCW+0.226\ 4)&&y<0.33667||(y>-xCW+0.12359&&y<-xCW+0.15307)||(y<xCW+0.40308&&y>\ xCW+0.3736) chrY11 = y<xCY+0.2279&&y>xCY+0.21191||(y>-xCY+0.4161&&y<-xCY+0.4320\ 9)&&y>xCY+0.21191 chrE12 = x<0.08639||y<0.30715||(y<0.33108&&y>0.32393)||y>0.34785&&x\ 0.07924&&x<0.10839 chrA13 = y>xCA-0.07089||y>-xCA+0.75828||(y<0.322&&y>0.31485)&&y<xCA\ -0.04828&&y<-xCA+0.78089 xCR=2*x chrR14 = y<0.33108&&y>0.32393||y>0.34785||x<0.17515&&x>0.168&&x<0.1\ 8615||(abs(cabs(z+(-0.18615,-0.33946))-0.01196)<0.00357&&x>=0.18615\ )||(y<0.3275&&y<-xCR+0.70337&&y>-xCR+0.68738) x2=2.5*x chr216 = abs(cabs(z+(-0.25242,-0.33946))-0.01196)<0.00357&&(y>0.339\ 46||y>-x/1.22571+0.5454)||(y<1.22571*x+0.0168&&y>1.22571*x+0.00549&\ &y<-x/1.22571+0.5454)||y<0.30715&&x>0.23688&&x<0.26796 chr017 = abs(cabs(z+(-0.2912,-0.33946))-0.01196)<0.00357&&y>0.33946\ ||(abs(cabs(z+(-0.2912,-0.31554))-0.01196)<0.00357&&y<0.31554)||(((\ x>0.27566&&x<0.28281)||(x>0.29958&&x<0.30673))&&y>0.31554&&y<0.3394\
ny2003-4 { ; Version 2002 Patchlevel 3 reset=2002 type=formula formulafile=new2003.frm formulaname=new2003 function=abs/tanh/sqr/sinh passes=1 center-mag=0.223577/-0.408861/2.134535/1/-30.0000000000000178/-1.0139111\ 7723892421e-013 params=5.721457564012574/4.859273049104282/1.706256294442579/-2.12803430\ 2804652/-0.2790002136295655/-2.104403820917386/-0.03398113956114383/0.00\ 9330762657551719/4.100650044251839/55 float=y maxiter=100 inside=bof60 decomp=256 symmetry=none periodicity=0 colors=000236<51>Q_tQ`uR`v<2>SbyTczSby<55>236235124123112001000000<57>ta\ JubJvbK<2>ydLzeLydL<55>642531421<2>100000001<3>235 } frm:new2003 { ; using a standard Mandelbrot formula ; and the lake transform from Sylvie Gallet, Jan 16, 2000 ; --- ; real(p1) = merging of text (function dependent) ; imag(p1) = idem ; real(p2) = idem ; imag(p2) = idem ; real(p3) = x-pos. of text-bailout ; imag(p3) = y-pos. of text-bailout ; --- ; If (B=A*C) then the text is invisible, else=visible! ; A = real(p4), B = imag(p4), C = real(p5) ; ----- ; real(p4) = diam. of fractal ; imag(p4) = diam. of text-fractal ; real(p5) = diam. & direction on x-axis of fractal ; ----- ; imag(p5) = Waterlevel (0-100 % of screen hight) ; ----- ; 'periodicity=0' and 'passes=1' recommended pp_3=(0.3,200) if (imag(p5) > 0 && imag(p5) <= 100) level = imag(p5) / 100 ampl = real(pp_3) freq = imag(pp_3) angle = real(rotskew * pi / 180) exp_irot = exp(-flip(angle)) h = 1 / real(magxmag) w = h / 0.75 * imag(magxmag) tanskew = tan(imag(rotskew * pi / 180)) u = 2 * w * exp_irot v = 2 * h * (tanskew + flip(1)) * exp_irot z3rd = center + (-w-h*tanskew - flip(h)) * exp_irot z = pixel - z3rd b = imag(conj(u)*z) / imag(conj(u)*v) if (b <= level) dy = level - b z = z + 2*dy * (1+ampl*sin(freq*dy^0.2)) * v endif pixel = z + z3rd endif z=fn1(fn2(pixel))*fn3(fn4(pixel))-p2/p1 x=real(z), y=imag(z) chrH1 = x<-0.37433||x>-0.35783||(y<0.33108&&y>0.32393)&&x>-0.38148&\ &x<-0.35068 xCA=3*x chrA2 = y>xCA+1.30632||y>-xCA-0.61893||(y<0.322&&y>0.31485)&&y<xCA+\ 1.32893&&y<-xCA-0.59632 chrP3 = y<0.33108&&y>0.32393||y>0.34785||x<-0.28392&&x>-0.29107&&x<\ -0.27292||(abs(cabs(z+(0.27292,-0.33946))-0.01196)<0.00357&&x>=-0.2\ 7292) chrP4 = y<0.33108&&y>0.32393||y>0.34785||x<-0.24254&&x>-0.24969&&x<\ -0.23154||(abs(cabs(z+(0.23154,-0.33946))-0.01196)<0.00357&&x>=-0.2\ 3154) xCY=2*x chrY5 = y<xCY+0.7056&&y>xCY+0.68961||(y>-xCY-0.0616&&y<-xCY-0.04561\ )&&y>xCY+0.68961 xCN=2.5*x chrN7 = x>-0.1321&&x<-0.12495||(x>-0.1101&&x<-0.1024)||(y>-xCN+0.02\ 474&&y<-xCN+0.04399) chrE8 = x<-0.08755||y<0.30715||(y<0.33108&&y>0.32393)||y>0.34785&&x\ 6) chr018 = abs(cabs(z+(-0.32997,-0.33946))-0.01196)<0.00357&&y>0.3394\ 6||(abs(cabs(z+(-0.32997,-0.31554))-0.01196)<0.00357&&y<0.31554)||(\ ((x>0.31443&&x<0.32158)||(x>0.33836&&x<0.34551))&&y>0.31554&&y<0.33\ 946) x3=0.7*x chr319 = abs(cabs(z+(-0.36594,-0.31554))-0.01196)<0.00357||abs(cabs\ (z+(-0.36594,-0.33946))-0.01196)<0.00357&&(y>-x3+0.59562||y<x3+0.05\ 938||x>0.36594) test1 = chrH1||chrA2||chrP3||chrP4||chrY5||chrN7||chrE8||chrW9||chr\ Y11||chrE12||chrA13||chrR14||chr216||chr017||chr018||chr319&&y>0.3&\ &y<0.355 xCM=2.5*x chrM20 = y>-xCM+0.0545&&y<-xCM+0.06904||(y<xCM+0.9155&&y>xCM+0.9009\ 6)&&y>0.485||(x>-0.1842&&x<-0.1788)||(x>-0.15978&&x<-0.15438) chrE21 = x<-0.14223||y<0.4754||(y<0.4952&&y>0.4898)||y>0.5096&&x>-0\ .14763&&x<-0.12423 chrR22 = y<0.4952&&y>0.4898||y>0.5096||x<-0.11208&&x>-0.11748&&x<-0\ .10308||(abs(cabs(z+(0.10308,-0.5024))-0.0099)<0.0027&&x>=-0.10308)\ ||(y<0.4925&&y<-xCR+0.28903&&y>-xCR+0.27696) chrR23 = y<0.4952&&y>0.4898||y>0.5096||x<-0.07833&&x>-0.08373&&x<-0\ .06933||(abs(cabs(z+(0.06933,-0.5024))-0.0099)<0.0027&&x>=-0.06933)\ ||(y<0.4925&&y<-xCR+0.35653&&y>-xCR+0.34446) chrY24 = y<xCY+0.56097&&y>xCY+0.54889||(y>-xCY+0.41503&&y<-xCY+0.42\ 711)&&y>xCY+0.54889 xCX=2*x chrX26 = y<xCX+0.44539&&y>xCX+0.43332||(y>-xCX+0.53961&&y<-xCX+0.55\ 168) chrDS27 = y<0.4907&&y>0.4853&&x>0.04759&&x<0.07324 chrM28 = y>-xCM+0.71498&&y<-xCM+0.72952||(y<xCM+0.25502&&y>xCM+0.24\ 048)&&y>0.485||(x>0.07999&&x<0.08539)||(x>0.10441&&x<0.10981) chrA29 = y>xCA+0.10325||y>-xCA+0.90967||(y<0.488&&y>0.4826)&&y<xCA+\ 0.12033&&y<-xCA+0.92675 chrS30 = abs(cabs(z+(-0.1716,-0.5024))-0.0099)<0.0027&&(x<=0.1716||\ y>0.5024)||(abs(cabs(z+(-0.1716,-0.4826))-0.0099)<0.0027&&(x>0.1716\ ||y<0.4826)) test2 = chrM20||chrE21||chrR22||chrR23||chrY24||chrX26||chrDS27||ch\ rM28||chrA29||chrS30&&y>0.47&&y<0.515 chrf31 = abs(cabs(z+(0.1771,0.09654))-0.00409)<0.0012&&y>-0.09654||\ (x>-0.18238&&x<-0.17998&&y<-0.09654)||(x>-0.18443&&x<-0.1759&&y>-0.\ 1012&&y<-0.0988) chrr32 = x>-0.16901&&x<-0.16661&&y<-0.095||(abs(cabs(z+(0.16372,0.1\ 0029))-0.00409)<0.0012&&y>-0.10029) chro33 = abs(cabs(z+(0.14813,0.1025))-0.0063)<0.0012 chrm34 = x>-0.13783&&x<-0.13543&&y<-0.095||(abs(cabs(z+(0.13255,0.1\ 0029))-0.00409)<0.0012&&y>-0.10029)||(x>-0.12966&&x<-0.12726&&y<-0.\ 10029)||(abs(cabs(z+(0.12437,0.10029))-0.00409)<0.0012&&y>-0.10029)\ ||(x>-0.12148&&x<-0.11908&&y<-0.10029) chrF36 = x<-0.10388||(y<-0.0988&&y>-0.1012)||y>-0.0924&&x>-0.10628&\ &x<-0.09588 chru37 = x>-0.09308&&x<-0.09068&&y>-0.10471&&y<-0.095||(abs(cabs(z+\ (0.0878,0.10471))-0.00409)<0.0012&&y<-0.10471)||(x>-0.08491&&x<-0.0\ 8251&&y<-0.095) chrn38 = x>-0.07971&&x<-0.07731&&y<-0.095||(abs(cabs(z+(0.07442,0.1\ 0029))-0.00409)<0.0012&&y>-0.10029)||(x>-0.07153&&x<-0.06913&&y<-0.\ 10029) chrG39 = abs(cabs(z+(0.05633,0.1))-0.0088)<0.0012&&(x<-0.05633||y<-\ 0.0988||y>-0.0976)||(x>-0.05633&&x<=-0.04873&&y<-0.0988&&y>-0.1012) chru40 = x>-0.04353&&x<-0.04113&&y>-0.10471&&y<-0.095||(abs(cabs(z+\ (0.03825,0.10471))-0.00409)<0.0012&&y<-0.10471)||(x>-0.03536&&x<-0.\ 03296&&y<-0.095) xy=2.5*x chry41 = y<xy-0.0496&&y>xy-0.05607||(y>-xy-0.1704&&y<-xy-0.16393)&&\ y>xy-0.05607&&y<-0.095&&y>-0.12 test3 = chrf31||chrr32||chro33||chrm34||chrF36||chru37||chrn38||chr\ G39||chru40&&y>-0.11||chry41&&y<-0.09 test=test1||test2||test3 test0=test0&&whitesq test0=((test0||test)==0) f1=(1/conj(real(p5)))*(1/conj(real(p4)))*pixel f2=(1/imag(p4))*pixel pixel=(test==0)*f1+test*f2 x=pixel+p3 pixel=(x+y) z=c=pixel: z=z*z+c |z| <=4 } *********** have fun, cheers, Guy
Hallo Guy Thank you for the "best wishes". I am really impressed. I never saw a "text-fractal" before. Because I don't want only see the picture, but also I want to understand how the formula works,I tried to analyse de formula. Though I understand parts of it, it would be helpfull if you know a place where I can find some info about these kind of fractals. If you know I would be very glad if you give me the information Cheers
Hi Jos, At 21:57 27/12/02 +0100, you wrote:
Hallo Guy
Thank you for the "best wishes". I am really impressed. I never saw a "text-fractal" before. Because I don't want only see the picture, but also I want to understand how the formula works,I tried to analyse de formula. Though I understand parts of it, it would be helpfull if you know a place where I can find some info about these kind of fractals. If you know I would be very glad if you give me the information Cheers
I'm a bit short in time actually, but please download 'fractext.zip', a good site for the download is that of Paul N. Lee: http://66.39.71.195/Software/ see for the file called "FractText.zip". There are good examples included, +/- easy to understand. If the examples are not on P.N.L's Site, let me know, I will send them to your private address.. Some infos about the ny2003.frm I will give you later, if you still need them.. enjoy fractext.exe.. cheers, Guy
participants (2)
-
Guy Marson -
jos hendriks