--- a/bin/ltview.pl Tue Apr 15 21:54:44 2014 +0100
+++ b/bin/ltview.pl Tue Apr 15 21:54:53 2014 +0100
@@ -12,77 +12,81 @@
use Math::Trig;
use File::Temp qw/ tempdir /;
-my $td = tempdir( CLEANUP => 1 );
-my $oct = "$td/ltview.oct";
-my $room = "$td/room.rad";
-my $box; # Overall box dimensions
-my $rif = "$td/ltview.rif";
-my $lumi = "$td/lumi.rad"; # Fitting as given on cmd line, or generated by ies2rad
-my $lumi2 = "$td/lumi2.rad"; # Fitting centred at origin
-my $raddev = "x11"; # Default output device. Overwrite with -o
-my $is_ies = 0; # Input file is IES photometry, not a Radiance luminaire
+my $td = tempdir( CLEANUP => 1 );
+my $oct = "$td/ltview.oct";
+my $room = "$td/room.rad";
+my $box; # Overall box dimensions
+my $rif = "$td/ltview.rif";
+my $lumi = "$td/lumi.rad"; # Fitting as given on cmd line, or generated by ies2rad
+my $lumi2 = "$td/lumi2.rad"; # Fitting centred at origin
+my $raddev = "x11"; # Default output device. Overwrite with -o
+my $is_ies = 0; # Input file is IES photometry, not a Radiance luminaire
while (@ARGV) {
- $_ = $ARGV[0];
- if (m/-i/) {
- $is_ies = 1;
- } elsif (m/-o/) { # output device (rvu -devices)
- $raddev = $ARGV[1];
- shift @ARGV;
- } elsif (m/-b/) {
- $box = $ARGV[1]; # Box dimensions
- shift @ARGV;
- } elsif (m/^-\w/) {
- die("ltview: Bad option: '$_'\n");
- } else {
- last;
- }
- shift @ARGV;
+ $_ = $ARGV[0];
+ if (m/-i/) {
+ $is_ies = 1;
+ } elsif (m/-o/) { # output device (rvu -devices)
+ $raddev = $ARGV[1];
+ shift @ARGV;
+ } elsif (m/-b/) {
+ $box = $ARGV[1]; # Box dimensions
+ shift @ARGV;
+ } elsif (m/^-\w/) {
+ die("ltview: Bad option: '$_'\n");
+ } else {
+ last;
+ }
+ shift @ARGV;
}
# We need exactly one Radiance luminaires or IES file
-if (! $#ARGV == 0) {
- die("ltview: Need one Radiance luminaire or IES file.\n");
-} elsif ($is_ies == 0) {
- # Input file is a Radiance luminaire
- $lumi = $ARGV[0];
+if ( !$#ARGV == 0 ) {
+ die("ltview: Need one Radiance luminaire or IES file.\n");
+} elsif ( $is_ies == 0 ) {
+
+ # Input file is a Radiance luminaire
+ $lumi = $ARGV[0];
} else {
- # Input file is IES photometry
- system qq[ ies2rad -p $td -o lumi "$ARGV[0]" ];
+
+ # Input file is IES photometry
+ system qq[ ies2rad -p $td -o lumi "$ARGV[0]" ];
}
-
# Work out centre of luminaire
my $dimstr = `getbbox -h "$lumi"`;
chomp $dimstr;
+
# Values returned by getbbox are indented and delimited with multiple spaces.
$dimstr =~ s/^\s+//; # remove leading spaces
-my @dims = split(/\s+/, $dimstr); # convert to array
+my @dims = split( /\s+/, $dimstr ); # convert to array
# Find largest axes-aligned luminaire dimension
# The box will be ten times as large, unless overwritten with -b option.
-my @diffs = reverse sort { $a <=> $b } ($dims[1]-$dims[0], $dims[3]-$dims[2], $dims[5]-$dims[4]);
+my @diffs = reverse sort { $a <=> $b }
+ ( $dims[1] - $dims[0], $dims[3] - $dims[2], $dims[5] - $dims[4] );
my $lsize = $diffs[0];
# Centre fitting at origin
-my $xtrans = -1.0 * ($dims[0] + $dims[1]) / 2;
-my $ytrans = -1.0 * ($dims[2] + $dims[3]) / 2;
-my $ztrans = -1.0 * ($dims[4] + $dims[5]) / 2;
+my $xtrans = -1.0 * ( $dims[0] + $dims[1] ) / 2;
+my $ytrans = -1.0 * ( $dims[2] + $dims[3] ) / 2;
+my $ztrans = -1.0 * ( $dims[4] + $dims[5] ) / 2;
system qq[ xform -t $xtrans $ytrans $ztrans "$lumi" > $lumi2 ];
-
# Make the enclosing box
my $b2;
-if (defined $box) {
- # Room dimensions are giving explicitly.
- $b2 = $box / 2;
+if ( defined $box ) {
+
+ # Room dimensions are giving explicitly.
+ $b2 = $box / 2;
} else {
- # Box dimensions are ten times largest luminaire bbox dimensions.
- $b2 = $lsize * 10.0 / 2.0;
+
+ # Box dimensions are ten times largest luminaire bbox dimensions.
+ $b2 = $lsize * 10.0 / 2.0;
}
-open(FH, ">$room") or
- die("ltview: Can't write to temporary file '$room'\n");
+open( FH, ">$room" )
+ or die("ltview: Can't write to temporary file '$room'\n");
print FH <<EndOfRoom;
void plastic wall_mat 0 0 5 .2 .2 .2 0 0
@@ -97,19 +101,20 @@
close(FH);
my $scene = "$room $lumi2";
+
# Make this work under Windoze
if ( $^O =~ /MSWin32/ ) {
- $scene =~ s{\\}{/}g;
- $oct =~ s{\\}{/}g;
- $raddev = "qt";
+ $scene =~ s{\\}{/}g;
+ $oct =~ s{\\}{/}g;
+ $raddev = "qt";
}
# Tweak scene bounding box so we get a nice view covering all of the box, without
# having a wasteful black border around it. Must work for arbitrary box dims.
-my $zone = 1.1 * $b2 * ( 1 + 1/tan(22.5*pi/180) );
+my $zone = 1.1 * $b2 * ( 1 + 1 / tan( 22.5 * pi / 180 ) );
-open(FH, ">$rif") or
- die("ltview: Can't write to temporary file '$rif'\n");
+open( FH, ">$rif" )
+ or die("ltview: Can't write to temporary file '$rif'\n");
print FH <<EndOfRif;
scene= $scene
ZONE= Interior -$zone $zone -$zone $zone -$zone $zone