docs
[mirrors/Programs.git] / perl / mandelbrot2.pl
1 #!/usr/bin/env perl
2 # Mandelbrot set ASCII visualisation
3 # http://en.wikipedia.org/wiki/Mandelbrot_set
4 # Copylefted by: Harvie 2oo9
5
6 #
7 # aa
8 # aa
9 # aa
10 # aa
11 # aaaccaaa
12 # aaai iaaa
13 # aabaab baabaa
14 # aab baa
15 # aad daa
16 # aab baa
17 # aaaaad daaaaa
18 # aaacccl lcccaaa
19 # dbaaab baaabd
20 # aab baa
21 # aab baa
22 # aaaaah haaaaa
23 # ba aaaak c c kaaaa ab
24 # aabc cbaa
25 # aacabab babacaa
26 # aae CODING ZEN eaa
27 # aaa aaa
28 # ae n cc n ea
29 # aaa ab aa afa afa aa ba aaa
30 #
31
32 use strict;
33 use warnings;
34
35 #my @chars=split(//, ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890');
36 #my @chars=split(//, ' .-:*+=%@#');
37 my @chars=split(//, ' .`-_\':,;^=+/\"|)\\<>)iv%xclrs{*}I?!][1taeo7zjLunT#JCwfy325Fp6mqSghVd4EgXPGZbYkOA&8U$@KHDBWNMR0Q');
38
39 my $max_iteration = 140;
40 my $zoom = 65;
41
42 for($max_iteration=0;$max_iteration<1000;$max_iteration++) {
43
44 print "\033[0;0H";
45 print "ASCII Mandelbrot Set Visualisation (Harvie 2oo9) - Iterations: $max_iteration \n";
46 #for(my $x=-1;$x<=1.1;$x+=0.1) { for(my $y=-2;$y<=1;$y+=0.04) {
47 for(my $i=-2;$i<=2;$i+=5/$zoom) { for(my $j=-2.1;$j<=2.1;$j+=2/$zoom) {
48
49 my $x0 = $i;
50 my $y0 = $j;
51
52 my $x = 0;
53 my $y = 0;
54
55 my $iteration = 0;
56
57 while ( $x*$x + $y*$y <= (2*2) && $iteration < $max_iteration ) {
58 my $xtemp = $x*$x - $y*$y + $x0;
59 $y = 2*$x*$y + $y0;
60 $x = $xtemp;
61 $iteration++;
62 }
63
64 my $color;
65 if ( $iteration == $max_iteration ) {
66 $color = 0;
67 } else {
68 $color = int( (($iteration/$max_iteration)*@chars) + .5);
69 }
70 #print "$color\n";
71 print $chars[$color];
72
73
74 } print "\n"; }
75
76 }
This page took 0.312746 seconds and 4 git commands to generate.