{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Plot " 0 13 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 707 " The following, somewh at lengthly program, is a Van Koch line fractal genorater. What it do es is start with a line. The line is devided into 3 parts and the mid dle section is either shifted up, down, to the right, or left. There \+ is a function for each of the shift directions which are basicaly all \+ a copy of each other except for the direction which it is shifted in. \+ The new generated line is placed in a list of lines to shifted into a new direction specified by the list it is placed in. The code is far from an acceptable size but it does work and since speed is not a big issue, I don't worry about it. The up side of this program is that i t is relativly easy to see the individual functions." }}{PARA 0 "" 0 " " {TEXT -1 362 " If you wish to read this program, only read one o f the shift functions, the other 3 are almost identical. In fact, I c opied them and only changed what was different. The last function is \+ the one you call to make the fractal. That one should be read too. I t basicaly calls each shift function, then takes the return from them \+ and remakes the shift lists." }}{PARA 0 "" 0 "" {TEXT -1 249 " There is one error in this code. In the main function, the loop doesn't wo rk properly. To repeat the loop 4 times, a value of around 30 must be put in. Otherwise, it does work. If you see the problem, please con tact me at jawney@hotmail.com " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 142 " An more detailed explanation of the V an Koch line fractal can be seen on the web at: http://pages.infinit.n et/garrick/fractals/vankoch.html" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 839 "hzlnup:=proc(hzlist)\nlocal i,lne,lf_pt,rt_pt,space, mlf_pt,mlf_pt_up,mrt_pt,mrt_pt_up, hzlist2up,vtlist2lf,vtlist2rt;\nfor i to nops(hzlist) do\nlne:=op(i,hzlist);\nlf_pt:=op(1,lne);\nrt_pt:=o p(2,lne);\nspace:=abs(rt_pt[1]-lf_pt[1])/3;\nmlf_pt:=[ lf_pt[1] + spac e, lf_pt[2] ];\nmlf_pt_up:=[ lf_pt[1] + space, lf_pt[2] + space ];\nmr t_pt:=[ lf_pt[1] + 2*space, lf_pt[2] ];\nmrt_pt_up:=[ lf_pt[1] + 2*spa ce, lf_pt[2] + space ];\nnew_hz.i.1:=[lf_pt,mlf_pt];\nnew_hz.i.2:=[mlf _pt_up,mrt_pt_up];\nnew_hz.i.3:=[mrt_pt,rt_pt];\nnew_vt.i.1:=[mlf_pt,m lf_pt_up];\nnew_vt.i.2:=[mrt_pt,mrt_pt_up];\nod;\nhzlist2up:=[ \nseq(n ew_hz.i.1,i=1..nops(hzlist)),\nseq(new_hz.i.2,i=1..nops(hzlist)),\nseq (new_hz.i.3,i=1..nops(hzlist)) ];\nvtlist2lf:=[\nseq(new_vt.i.2,i=1..n ops(hzlist)) ];\nvtlist2rt:=[\nseq(new_vt.i.1,i=1..nops(hzlist)) ];\nR ETURN(hzlist2up,vtlist2lf,vtlist2rt);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 839 "vtlnrt:=proc(vtlist)\nlocal i,lne,bt_pt,tp_pt,spa ce,mbt_pt,mbt_pt_rt,mtp_pt,mtp_pt_rt, hzlist2up,vtlist2rt,hzlist2dn;\n for i to nops(vtlist) do\nlne:=op(i,vtlist);\nbt_pt:=op(1,lne);\ntp_pt :=op(2,lne);\nspace:=abs(tp_pt[2]-bt_pt[2])/3;\nmbt_pt:=[ bt_pt[1], bt _pt[2] + space ];\nmbt_pt_rt:=[ bt_pt[1] + space, bt_pt[2] + space ]; \nmtp_pt:=[ bt_pt[1], bt_pt[2] + 2*space ];\nmtp_pt_rt:=[ bt_pt[1] + s pace, bt_pt[2] + 2*space ];\nnew_vt.i.1:=[bt_pt,mbt_pt];\nnew_vt.i.2:= [mbt_pt_rt,mtp_pt_rt];\nnew_vt.i.3:=[mtp_pt,tp_pt];\nnew_hz.i.1:=[mbt_ pt,mbt_pt_rt];\nnew_hz.i.2:=[mtp_pt,mtp_pt_rt];\nod;\nvtlist2rt:=[ \ns eq(new_vt.i.1,i=1..nops(vtlist)),\nseq(new_vt.i.2,i=1..nops(vtlist)), \nseq(new_vt.i.3,i=1..nops(vtlist)) ];\nhzlist2dn:=[\nseq(new_hz.i.2,i =1..nops(vtlist)) ];\nhzlist2up:=[\nseq(new_hz.i.1,i=1..nops(vtlist)) \+ ];\nRETURN(vtlist2rt,hzlist2up,hzlist2dn);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 839 "vtlnlf:=proc(vtlist)\nlocal i,lne,bt_pt,tp_p t,space,mbt_pt,mbt_pt_lf,mtp_pt,mtp_pt_lf, hzlist2up,vtlist2lf,hzlist2 dn;\nfor i to nops(vtlist) do\nlne:=op(i,vtlist);\nbt_pt:=op(1,lne);\n tp_pt:=op(2,lne);\nspace:=abs(tp_pt[2]-bt_pt[2])/3;\nmbt_pt:=[ bt_pt[1 ], bt_pt[2] + space ];\nmbt_pt_lf:=[ bt_pt[1] - space, bt_pt[2] + spac e ];\nmtp_pt:=[ bt_pt[1], bt_pt[2] + 2*space ];\nmtp_pt_lf:=[ bt_pt[1] - space, bt_pt[2] + 2*space ];\nnew_vt.i.1:=[bt_pt,mbt_pt];\nnew_vt.i .2:=[mbt_pt_lf,mtp_pt_lf];\nnew_vt.i.3:=[mtp_pt,tp_pt];\nnew_hz.i.1:=[ mbt_pt_lf,mbt_pt];\nnew_hz.i.2:=[mtp_pt_lf,mtp_pt];\nod;\nvtlist2lf:=[ \nseq(new_vt.i.1,i=1..nops(vtlist)),\nseq(new_vt.i.2,i=1..nops(vtlist )),\nseq(new_vt.i.3,i=1..nops(vtlist)) ];\nhzlist2dn:=[\nseq(new_hz.i. 2,i=1..nops(vtlist)) ];\nhzlist2up:=[\nseq(new_hz.i.1,i=1..nops(vtlist )) ];\nRETURN(vtlist2lf,hzlist2up,hzlist2dn);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 839 "hzlndn:=proc(hzlist)\nlocal i,lne,lf_pt, rt_pt,space,mlf_pt,mlf_pt_dn,mrt_pt,mrt_pt_dn, hzlist2dn,vtlist2lf,vtl ist2rt;\nfor i to nops(hzlist) do\nlne:=op(i,hzlist);\nlf_pt:=op(1,lne );\nrt_pt:=op(2,lne);\nspace:=abs(rt_pt[1]-lf_pt[1])/3;\nmlf_pt:=[ lf_ pt[1] + space, lf_pt[2] ];\nmlf_pt_dn:=[ lf_pt[1] + space, lf_pt[2] - \+ space ];\nmrt_pt:=[ lf_pt[1] + 2*space, lf_pt[2] ];\nmrt_pt_dn:=[ lf_p t[1] + 2*space, lf_pt[2] - space ];\nnew_hz.i.1:=[lf_pt,mlf_pt];\nnew_ hz.i.2:=[mlf_pt_dn,mrt_pt_dn];\nnew_hz.i.3:=[mrt_pt,rt_pt];\nnew_vt.i. 1:=[mlf_pt_dn,mlf_pt];\nnew_vt.i.2:=[mrt_pt_dn,mrt_pt];\nod;\nhzlist2d n:=[ \nseq(new_hz.i.1,i=1..nops(hzlist)),\nseq(new_hz.i.2,i=1..nops(hz list)),\nseq(new_hz.i.3,i=1..nops(hzlist)) ];\nvtlist2lf:=[\nseq(new_v t.i.2,i=1..nops(hzlist)) ];\nvtlist2rt:=[\nseq(new_vt.i.1,i=1..nops(hz list)) ];\nRETURN(hzlist2dn,vtlist2lf,vtlist2rt);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1166 "square_flake_fractal:=proc(timss) \nlocal i, hzlistup,vtlistlf,hzback,vtback,p1,p2,p3,p4,hzback2,vtback2 ,vtlistrt,hzlistdn;\nhzlistup:=[[[-5,5],[5,5]]];\nvtlistrt:=[[[5,-5],[ 5,5]]];\nvtlistlf:=[[[-5,-5],[-5,5]]];\nhzlistdn:=[[[-5,-5],[5,-5]]]; \nfor i from 1 to timss do\nhzback:=[hzlnup(hzlistup)];\nhzback2:=[hzl ndn(hzlistdn)];\nvtback:=[vtlnlf(vtlistlf)];\nvtback2:=[vtlnrt(vtlistr t)];\nhzlistup:=[ \nseq(hzback[1][i],i=1..nops(hzback[1])),\nseq(vtbac k[2][i],i=1..nops(vtback[2])),\nseq(vtback2[2][i],i=1..nops(vtback2[2] )) ];\nhzlistdn:=[ \nseq(hzback2[1][i],i=1..nops(hzback[1])),\nseq(vtb ack[3][i],i=1..nops(vtback[3])),\nseq(vtback2[3][i],i=1..nops(vtback2[ 3])) ];\nvtlistlf:=[ \nseq(vtback[1][i],i=1..nops(vtback[1])),\nseq(hz back[2][i],i=1..nops(hzback[2])),\nseq(hzback2[2][i],i=1..nops(hzback2 [2])) ];\nvtlistrt:=[ \nseq(vtback2[1][i],i=1..nops(vtback[1])),\nseq( hzback[3][i],i=1..nops(hzback[3])),\nseq(hzback2[3][i],i=1..nops(hzbac k2[3])) ];\nod;\np1:=plot(hzlistup,x=-20..20, color=red):\np2:=plot(hz listdn,x=-20..20, color=red):\np3:=plot(vtlistlf,x=-20..20, color=red) :\np4:=plot(vtlistrt,x=-20..20, color=red):\nplots[display]([p1,p2,p3, p4], view=[-10..10,-10..10], axes=NONE);\nend: " }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 24 "square_flake_fractal(4);" }}{PARA 13 "" 1 "" {INLPLOT "6cq-%'CURVESG6$7$7$$!\"&\"\"!$\"\"&F*7$$!1*)))))))))))))Q!#: F+-%'COLOURG6&%$RGBG$\"*++++\"!\")F*F*-F$6$7$7$$!1nmmmmmm;F0$\"1MLLLLL L$)F07$$!1cbbbbbbb!#;F>F1-F$6$7$7$$\"1nmmmmmm;F0F+7$$\"1yxxxxxxFF0F+F1 -F$6$7$7$$!1MLLLLLL$)F0F<7$$!1AAAAAAAsF0F7$FHF>F1-F$6$7$7$F\\pF+7$F+F+F1-F$6$7$7$FcpF<7$ F(FFFA7$FboFAF1-F$6$7$7$F+FK7$ FenFKF1-F$6$7$7$FFHF1-F$6$7$7$FcpF\\o7$F(F\\oF1-F $6$7$7$F^sFeo7$FQFeoF1-F$6$7$7$FcpF\\p7$F(F\\pF1-F$6$7$7$FeoFjp7$FHFjp F1-F$6$7$7$FeoFcp7$FHFcpF1-F$6$7$7$F+F\\o7$FenF\\oF1-F$6$7$7$F>Feo7$Fb oFeoF1-F$6$7$7$F+F\\p7$FenF\\pF1-F$6$7$7$F " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 4 0" 142 }{VIEWOPTS 1 1 0 3 4 1802 }