Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Fractal Curves: Short & Fast Codes?

by Willard B. Trophy (Hermit)
on Jun 17, 2003 at 13:42 UTC ( [id://266474]=note: print w/replies, xml ) Need Help??


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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://266474]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2024-03-28 15:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found