#!/usr/bin/perl -w
use strict;
#use lib("/path/to/bin/lib/site_perl");
use SWF ("Shape");

SWF::setVersion(4);

my $width=200;
my $height=200;
my $MAXITER=22;
my $grenze=10;
my $l=-0.75;
my $r=2.25;
my $t=-1.5;
my $b=1.5;
my $startx=48;
my $starty=48;
my $endx=52;
my $endy=52;
my $stepx=0.02;
my $stepy=0.02;

my $s= new SWF::Shape;
$s->setLine(10,0x66,0,0);
my @p;
&drawIt;
sub drawIt {
  SWF::setScale(1);
	my ($x, $y, $zIm,, $zRe, $cIm, $cRe, $zRhoch2, $zIhoch2, $i);
	for ($x = $startx; $x < $endx; $x+=$stepx){
		$cRe = $l + $x*($r - $l)/$width;
		for ($y = $starty; $y < $endy; $y+=$stepy){
			$cIm = $b + $y*($t - $b)/$height;
			$zRe = 0;
			$zIm = 0;
			$zRhoch2 = 0;
			$zIhoch2 = 0;
			$i = 0;
			do {
				$zIm            = 2*$zIm*$zRe - $cIm;
				$zRe            = $zRhoch2 - $zIhoch2 - $cRe;
				$zRhoch2        = $zRe*$zRe;
				$zIhoch2        = $zIm*$zIm;
				$i++;
			} while ($i < $MAXITER) or (($zRhoch2 + $zIhoch2) > $grenze);
			
			my $color=(($zRhoch2 + $zIhoch2)*256)%250;
			#print(" $x $y $color $zRhoch2 $zIhoch2\n");
			if (($zRhoch2 + $zIhoch2) <= 10){
			  $p[$x*40][$y*40]={color=>$color, group=>0};
				$s->setLine(50,255-$color,$color,$color);
			  $s->movePenTo(($x-$startx)/$stepx*40, ($y-$starty)/$stepy*40);
        $s->drawLine(1*10,1*10);
			}
		}
	}
}
SWF::setScale(20);
my $m=new SWF::Movie();
$m->setDimension($width*2,$height*2);
$m->setBackground(0xFF,0xFF,0xFF);
my $si=$m->add($s);
$m->nextFrame;
$m->save("$0.swf");
