#!/usr/bin/perl

my $horiz;
my $vert;
my $diag;

print "dots-per-inch (DPI) calculator\n\n";

print "Enter resolution in pixels (eg 1024x768): ";
my $res = <>;

($horiz, $vert) = split /\D/, $res;

print "Enter physical diagonal size in inches: ";
$diag = <>;

my $height = ( cos(atan2( $horiz, $vert ) ) * $diag );
my $width  = ( sin(atan2( $horiz, $vert ) ) * $diag );

$height = sprintf( "%.1f",$height );
$width  = sprintf( "%.1f",$width );

$heightmm = $height * 25.4;
$widthmm  = $width  * 25.4;

$heightmm = sprintf( "%.1f",$heightmm );
$widthmm  = sprintf( "%.1f",$widthmm );

print "Results:\n\n";
print "screen physical height:\t$height\" ($heightmm mm)\n";
print "screen physical width:\t$width\" ($widthmm mm)\n";

my $hdpi = $horiz / $width;
my $vdpi = $vert / $height;

$hdpi = sprintf( "%.1f",$hdpi );
$vdpi = sprintf( "%.1f",$vdpi );

if( $hdpi == $vdpi ){
  print "horizontal and vertical DPI are both $hdpi\n";

}else{
  print "horizontal DPI is $hdpi\n";
  print "vertical DPI is $vdpi\n";
}
