Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Fractal Curves: Short & Fast Codes?

by Willard B. Trophy (Hermit)
on Jun 17, 2003 at 13:42 UTC ( #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!


Comment on Re: Fractal Curves: Short & Fast Codes?
Download Code
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!

        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.
        Fractals generated by iterative text replacement rules on strings interpreted as drawing instructions are called L-systems, if memory serves.

        Makeshifts last the longest.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2014-07-28 06:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (192 votes), past polls