http://qs1969.pair.com?node_id=266474


in reply to Fractal Curves: Short & Fast Codes?

of course, if you don't consider using GhostScript to render your fractal as cheating, here's a simple one using the very old technique of string replacement:
#!/usr/bin/perl -w use strict; use integer; my $depth = 4; my $start = '_/_\_\_/_'; # _ = forward, / = left, \ = right my $fractal = $start; $fractal =~ s/_/$start/og for ( 0 .. $depth ); $fractal =~ s/_/0 0.8 rlineto /g; $fractal =~ s,/,90 rotate ,g; $fractal =~ s,\\,270 rotate ,g; print '%!', "\n", '0.1 setlinewidth 500 100 moveto ', $fractal, 'stroke showpage', "\n";

Can't remember what this fractal is called, sorry. As it stands, it should render on A4 and Letter paper.

--
bowling trophy thieves, die!

Replies are listed 'Best First'.
Re: Re: Fractal Curves: Short & Fast Codes?
by chunlou (Curate) on Jun 17, 2003 at 15:09 UTC
    Cool. Didn't think of using PostScript before. That looks like some sort of 1D automata. (If anyone wanna see, view it here, which was flap 90 degree clockwise , just to fit the screen better.)
      It's definitely a fractal curve. It's just so long since I did fractal things, I don't remember what people were calling these them.

      String rewriting is all in The Science of Fractal Images, ed Peitgen & Saupe (Springer-Verlag, 1991, ISBN: 0387966080). Of course, they were using an awkward Pascal-like pseudocode language with no regular expressions ...

      Here's at least part of the famous snowflake. I think I changed three lines:

      #!/usr/bin/perl -w use strict; use integer; my $depth = 4; my $start = '_/_\_/_'; # _ = forward, / = left, \ = right my $fractal = $start; $fractal =~ s/_/$start/og for ( 0 .. $depth ); $fractal =~ s/_/0 0.8 rlineto /g; $fractal =~ s,/,60 rotate ,g; $fractal =~ s,\\,240 rotate ,g; print '%!', "\n", '0.1 setlinewidth 500 100 moveto ', $fractal, 'stroke showpage', "\n";

      Now what would be really cool would be a Perl routine that would parse ASCII-art axioms and production rules, and generate the fractal. My free time is not that copious.

      --
      bowling trophy thieves, die!

        Fractals generated by iterative text replacement rules on strings interpreted as drawing instructions are called L-systems, if memory serves.

        Makeshifts last the longest.

        Neat short code for Koch curve. Good demonstration of the synergy between Perl and PostScript to produce graph real fast, esoteric code and large uncompressed PS file size notwithstanding.