-
Notifications
You must be signed in to change notification settings - Fork 3
/
Mandelbrot.pm
84 lines (53 loc) · 1.48 KB
/
Mandelbrot.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package Imager::Filter::Mandelbrot;
use strict;
use Imager;
use vars qw($VERSION @ISA);
BEGIN {
$VERSION = "0.03";
require XSLoader;
XSLoader::load('Imager::Filter::Mandelbrot', $VERSION);
}
sub _mandelbrot {
my %hsh = @_;
mandelbrot($hsh{image}, $hsh{minx}, $hsh{miny}, $hsh{maxx}, $hsh{maxy}, $hsh{maxiter});
}
my %defaults =
(
minx => -2.5,
maxx => 1.5,
miny => -1.5,
maxy => 1.5,
maxiter => 256,
);
my @callseq = qw/image minx miny maxx maxy maxiter/;
Imager->register_filter(type=>'mandelbrot',
callsub => \&_mandelbrot,
defaults => \%defaults,
callseq => \@callseq);
1;
__END__
=head1 NAME
Imager::Filter::Mandelbrot - filter that renders the Mandelbrot set.
=head1 SYNOPSIS
use Imager;
use Imager::Filter::Mandelbrot;
$img->filter(type=>'mandelbrot', ...);
=head1 DESCRIPTION
This is a expansion of the C<mandelbrot> dynamically loadable filter
provided in C<dynfilt> in previous releases of Imager.
Valid filter parameters are:
=over
=item *
C<minx>, C<maxx> - the range of x values to render. Defaults: -2.5, 1.5.
=item *
C<miny>, C<maxy> - the range of y values to render. Defaults: -1.5, 1.5
=item *
C<maxiter> - the maximum number of iterations to perform when checking
if the sequence tend towards infinity.
=back
=head1 AUTHOR
Original by Arnar M. Hrafnkelsson.
Adapted and expanded by Tony Cook <tonyc@cpan.org>
=head1 SEE ALSO
Imager, Imager::Filters.
=cut