############################################################################### # calculate points/stripes in the mandelbrot fractal efficient package Math::Fractal::Mandelbrot; use 5.005; use strict; # use warnings; # dont use warnings for older Perls require Exporter; require DynaLoader; use vars qw/@ISA $VERSION @EXPORT_OK/; @ISA = qw(Exporter DynaLoader); @EXPORT_OK = qw/ point hor_line ver_line set_bounds set_limit set_max_iter set_epsilon /; $VERSION = '0.04'; bootstrap Math::Fractal::Mandelbrot $VERSION; # no Perl code, it's all in the XS code 1; __END__ =pod =head1 NAME Math::Fractal::Mandelbrot - Calculate points in the mandelbrot fractal =head1 SYNOPSIS =head1 DESCRIPTION Calculates points, horizontal/vertical stripes or rectangular areas of the famous Mandelbrot fractal. X X X =head1 LICENSE This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. X X =head1 METHODS =head2 set_max_iter() Math::Fractal::Mandelbrot->set_max_iter($max_iter); Set the maximum number of iterations. 600 is the default and quite suitable for the start image. When zooming in, this value should be increased to not loose details. =head2 set_limit() Math::Fractal::Mandelbrot->set_limit($limit); The default value is 5 and should only be changed if you know why. =head2 set_epsilon() Math::Fractal::Mandelbrot->set_epsilon($e); The default value is 0.001. When the change between two iterations is less than this number, the point is considered to be on the inside. =head2 set_bounds() Math::Fractal::Mandelbrot->set_bounds($x1,$y1,$x2,$y2,$w,$h); Set the coordinates from x1, y1 to x2, y2 and the width of the computed image to w and h. The default values are: Math::Fractal::Mandelbrot->set_bounds(-2,-1.1, 1,1.1, 640,480); =head2 point() my $iter = Math::Fractal::Mandelbrot->point($x,$y); Calculates the value at the point C<$x> and C<$y>. The return value 0 means the point is inside the fractal (typical the black area), any value >0 means the number of iterations it took to find out that the point is on the outside. $x and $y should be between 0 and C and 0 and C, respectively (see L). =head2 hor_line($x1,$y1,$l) my $points = Math::Fractal::Mandelbrot->hor_line($x1,$y1,$l); Calculates the values at a horizontal line and returns them all as a ref to am array. The array will contain one extra value, which is the count of values in the array beeing equal to the first value. Example: values count explanation ============================================================== 1,1,1,1,3, 4 # 4 are equal 1,1,3,1,3, 2 # only 2, not 3 since it stops after 2 See L for details. =head2 ver_line($x1,$y1,$l) my @points = Math::Fractal::Mandelbrot->ver_line($x1,$y1,$l); Calculates the values at a vertical line and returns them all as array. The array will contain one extra value, which is the count of values in the array beeing equal to the first value. See L for an explanation of this last value. See L for further details. =head1 AUTHOR Tels in 2003, 2005, 2006. X =head1 SEE ALSO L by Wolfgang Gruber. =cut