rectangle_sides_from_one_diagonal_angle.pl 728 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # Date: 22 January 2018
  4. # https://github.com/trizen
  5. # Formula for finding the smallest integer sides of a rectangle, given one internal angle of its diagonal.
  6. use 5.020;
  7. use strict;
  8. use warnings;
  9. use experimental qw(signatures);
  10. use Math::AnyNum qw(:trig :overload);
  11. sub rectangle_sides_from_angle ($theta) {
  12. tan($theta)->rat_approx->nude;
  13. }
  14. my $x = 43; # side 1
  15. my $y = 97; # side 2
  16. my $theta = atan2($x, $y);
  17. say "A rectangle internal diagonal angle:";
  18. say ' ', rad2deg($theta); #=> 23.9076604941725008122467915166209997324000412946
  19. say "\nThe smallest integer sides matching the internal angle:";
  20. say join(' ', rectangle_sides_from_angle($theta)); #=> 43 97