ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/genklemsamp.pl
(Generate patch)

Comparing ray/src/util/genklemsamp.pl (file contents):
Revision 2.3 by greg, Tue Jun 16 17:18:38 2009 UTC vs.
Revision 2.4 by greg, Fri Jun 19 06:49:42 2009 UTC

# Line 7 | Line 7
7   #
8   use strict;
9   if ($#ARGV < 0) {
10 <        print STDERR, "Usage: genklemsamp [-c N ][-f{a|f|d}] [view opts] [geom.rad ..]\n";
10 >        print STDERR "Usage: genklemsamp [-c N ][-f{a|f|d}] [view opts] [geom.rad ..]\n";
11          exit 1;
12   }
13   my $td = `mktemp -d /tmp/genklemsamp.XXXXXX`;
# Line 28 | Line 28 | while ($#ARGV >= 0) {
28                  push @vopts, "@ARGV[0..1]";
29                  shift @ARGV;
30          } elsif ("$ARGV[0]" =~ /^-v./) {
31 <                print STDERR, "Unsupported view option: $ARGV[0]\n";
31 >                print STDERR "Unsupported view option: $ARGV[0]\n";
32                  exit 1;
33          } elsif ("$ARGV[0]" =~ /^-./) {
34 <                print STDERR, "Unknown option: $ARGV[0]\n";
34 >                print STDERR "Unknown option: $ARGV[0]\n";
35                  exit 1;
36          } else {
37                  last;
# Line 86 | Line 86 | if ($#ARGV >= 0) {
86          $vwset = `vwright @vopts V`;
87          my $xres;
88          my $yres;
89 <        my $ntot;
89 >        my $ntot = 0;
90          # This generally passes through the loop twice to get density right
91 <        do {
91 >        while ($ntot < $nsamp) {
92                  $xres = int($width*$sca) + 1;
93                  $yres = int($height*$sca) + 1;
94                  system "vwrays -ff -x $xres -y $yres -pa 0 -pj .7 @vopts " .
# Line 100 | Line 100 | if ($#ARGV >= 0) {
100                  $ntot = -s "$td/origins.flt";
101                  $ntot /= 3*4;
102                  if ($ntot == 0) {
103 <                        print STDERR, "View direction does not correspond to any surfaces\n";
103 >                        if ($sca < sqrt(199/($width*$height))) {
104 >                                $sca = sqrt(200/($width*$height));
105 >                                redo;
106 >                        }
107 >                        print STDERR "View direction does not correspond to any surfaces\n";
108                          exit 1;
109                  }
110                  $sca *= 1.05 * sqrt($nsamp/$ntot);
111 <        } while ($ntot < $nsamp);
111 >        }
112          # All set to produce our samples
113 <        for ($k = 1; $k <= $ndiv; $k++) {
113 >        for (my $k = 1; $k <= $ndiv; $k++) {
114                  my $rn = rand(10);
115                  my $r1 = rand; my $r2 = rand;
116                  # Chance of using = (number_still_needed)/(number_left_avail)
# Line 124 | Line 128 | if ($#ARGV >= 0) {
128          my $xres = int($width*$sca) + 1;
129          my $yres = int($height*$sca) + 1;
130          my $ntot = $xres * $yres;
131 <        for ($k = 1; $k <= $ndiv; $k++) {
131 >        for (my $k = 1; $k <= $ndiv; $k++) {
132                  my $rn = rand(10);
133                  my $r1 = rand; my $r2 = rand;
134                  my $r3 = rand; my $r4 = rand;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines