This isn't actually equivalent but this is the mandelbrot generator I include as an example in Linux::Svgalib:
#!/usr/bin/perl -w
use strict;
use Linux::Svgalib;
use vars qw($P @Q $col $row @colours );
my (
$max_iterations,
$max_size ) = (512,4);
my $screen = Linux::Svgalib->new();
$screen->init();
$screen->setmode(8);
my ($XMax,$XMin,$YMax,$YMin) = (1.2,-2.0,1.2,-1.2);
my $maxcol = $screen->getxdim();
my $maxrow = $screen->getydim();
my $max_colours = $screen->getcolors();
my $deltaP = ($XMax - $XMin) / $maxcol;
my $deltaQ = ($YMax - $YMin) / $maxrow;
$Q[0] = $YMax;
$screen->clear();
for( 1 .. $maxrow )
{
$Q[$_] = $Q[$_ -1] - $deltaQ;
}
$P = $XMin;
for $col ( 0 .. $maxcol -1 )
{
for $row ( 0 .. $maxrow - 1)
{
my ($X,$Y,$XSquare,$YSquare) = (0,0,0,0);
my $colour = 1;
while (( $colour < $max_iterations ) &&
(($XSquare + $YSquare ) < $max_size ))
{
$XSquare = $X * $X;
$YSquare = $Y * $Y;
$Y *= $X;
$Y += $Y + $Q[$row];
$X = $XSquare - $YSquare + $P;
$colour++;
}
$screen->setcolor($colour % $max_colours);
$screen->drawpixel($col,$row);
}
$P += $deltaP;
}
$screen->getch();
$screen->setmode(TEXT);
This is quite fast, especially when the exact same algorithm in C used to take nearly a day to render on an Amiga 500
/J\
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.