regular_poligons.pl 917 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 16 July 2014
  5. # Website: https://github.com/trizen
  6. use strict;
  7. use warnings;
  8. use GD::Simple;
  9. my $img;
  10. sub t($) {
  11. $img->turn(shift);
  12. }
  13. sub l($) {
  14. $img->line(shift);
  15. }
  16. sub c($) {
  17. $img->fgcolor(shift);
  18. }
  19. my $dir = 'Regular poligons';
  20. if (not -d $dir) {
  21. mkdir($dir) || die "Can't mkdir `$dir': $!";
  22. }
  23. chdir($dir) || die "Can't chdir `$dir': $!";
  24. foreach my $i (1 .. 144) {
  25. if (360 % (180 - $i) == 0) {
  26. my $sides = 360 / (180 - $i);
  27. printf("Angle: %d\tSides: %d\n", $i, $sides);
  28. $img = 'GD::Simple'->new(1000, 1000);
  29. $img->moveTo(500, 500);
  30. for (1 .. $sides) {
  31. l 150;
  32. t 180 - $i;
  33. }
  34. my $image_name = sprintf("%03d.png", $i);
  35. open my $fh, '>:raw', $image_name or die $!;
  36. print {$fh} $img->png;
  37. close $fh;
  38. }
  39. }