#!/usr/bin/perl use strict; my %options = ( minx => -2.0, maxx => 2.0, miny => -2.0, maxy => 2.0, width => 480, height => 480, iters => 20, o => "mandelbrot.ppm", ); { #lazy getopt; my %ARGV = @ARGV; foreach my $key (keys %ARGV) { $options{$key} = $ARGV{$key}; } } $options{xrange} = $options{maxx} - $options{minx}; $options{yrange} = $options{maxy} - $options{miny}; open(FILE,">",$options{o}) or die "Could not open $options{o}"; print FILE < 0 && $zx * $zx + $zy * $zy < 2.0) { # ((a,b)*(c,d) = ((a*c - b*d), (b*c + a*d)) # (a, b) + (c, d) = (a + c, b + d) # z*z + c $nzx = $zx * $zx - $zy * $zy + $cx; $nzy = $zy * $zx + $zx * $zy + $cy; ($zx,$zy) = ($nzx, $nzy); $iters--; } return $iters; }