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

SWF::setVersion(4);

my $width=100;
my $height=100;
my $MAXITER=20;
my $grenze=10;

my $l=.75;
my $r=1.35;
my $t=0;
my $b=0.7;

my $startx=0;
my $starty=0;
my $endx=100;
my $endy=100;
my $stepx=1;
my $stepy=1;

SWF::setScale(20);
my $m=new SWF::Movie();
$m->setDimension(150,150);
$m->setRate(20);
$m->setBackground(0xFF,0xFF,0xFF);

#my @p;
my $si;
my @s;
for (my $i=6;$i<20; $i+=2){
  $MAXITER=$i; 
  &drawIt;
}
sub drawIt {
  SWF::setScale(1);
	my $s= new SWF::Shape;
	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][$y]={color=>$color, group=>0};
				$s->setLine(50,255-$color,$color,$color);
			  $s->movePenTo(($x-$startx)/$stepx*30, ($y-$starty)/$stepy*30);
        $s->drawLine(1*10,1*10);
			}
		}
	}	

	# and add te new
	$si=$m->add($s);
	push(@s,$s);
  $si->move(0,-0*20);
	$m->nextFrame;
	# remove old shape intsance from the timeline 
	$si->remove;

}

while(@s){
	$si=$m->add(pop(@s));
	$m->nextFrame;
	$si->remove;
}

$m->save("$0.swf");
