ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rhdisp3.c
(Generate patch)

Comparing ray/src/hd/rhdisp3.c (file contents):
Revision 3.6 by gregl, Tue Nov 25 16:52:51 1997 UTC vs.
Revision 3.7 by gregl, Wed Nov 26 20:12:19 1997 UTC

# Line 278 | Line 278 | int    (*f)();
278   {
279          register int    hd, w, i;
280          int     g0, g1;
281 <        FVECT   wp[2];
281 >        FVECT   wp[2], mov;
282          double  d;
283                                          /* do each wall on each section */
284          for (hd = 0; hdlist[hd] != NULL; hd++)
285                  for (w = 0; w < 6; w++) {
286                          g0 = ((w>>1)+1)%3;
287                          g1 = ((w>>1)+2)%3;
288 <                        for (i = hdlist[hd]->grid[g0]; i--; ) { /* g0 lines */
289 <                                d = (double)i/hdlist[hd]->grid[g0];
288 >                        d = 1.0/hdlist[hd]->grid[g0];
289 >                        mov[0] = d * hdlist[hd]->xv[g0][0];
290 >                        mov[1] = d * hdlist[hd]->xv[g0][1];
291 >                        mov[2] = d * hdlist[hd]->xv[g0][2];
292 >                        if (w & 1) {
293                                  VSUM(wp[0], hdlist[hd]->orig,
291                                                hdlist[hd]->xv[g0], d);
292                                if (w & 1)
293                                    VSUM(wp[0], wp[0],
294                                                  hdlist[hd]->xv[w>>1], 1.);
295 <                                VSUM(wp[1], wp[0], hdlist[hd]->xv[g1], 1.);
295 >                                VSUM(wp[0], wp[0], mov, 1.);
296 >                        } else
297 >                                VCOPY(wp[0], hdlist[hd]->orig);
298 >                        VSUM(wp[1], wp[0], hdlist[hd]->xv[g1], 1.);
299 >                        for (i = hdlist[hd]->grid[g0]; ; ) {    /* g0 lines */
300                                  (*f)(wp);
301 +                                if (!--i) break;
302 +                                wp[0][0] += mov[0]; wp[0][1] += mov[1];
303 +                                wp[0][2] += mov[2]; wp[1][0] += mov[0];
304 +                                wp[1][1] += mov[1]; wp[1][2] += mov[2];
305                          }
306 <                        for (i = hdlist[hd]->grid[g1]; i--; ) { /* g1 lines */
307 <                                d = (double)i/hdlist[hd]->grid[g1];
306 >                        d = 1.0/hdlist[hd]->grid[g1];
307 >                        mov[0] = d * hdlist[hd]->xv[g1][0];
308 >                        mov[1] = d * hdlist[hd]->xv[g1][1];
309 >                        mov[2] = d * hdlist[hd]->xv[g1][2];
310 >                        if (w & 1)
311                                  VSUM(wp[0], hdlist[hd]->orig,
301                                                hdlist[hd]->xv[g1], d);
302                                if (w & 1)
303                                    VSUM(wp[0], wp[0],
312                                                  hdlist[hd]->xv[w>>1], 1.);
313 <                                VSUM(wp[1], wp[0], hdlist[hd]->xv[g0], 1.);
313 >                        else
314 >                                VSUM(wp[0], hdlist[hd]->orig, mov, 1.);
315 >                        VSUM(wp[1], wp[0], hdlist[hd]->xv[g0], 1.);
316 >                        for (i = hdlist[hd]->grid[g1]; ; ) {    /* g1 lines */
317                                  (*f)(wp);
318 +                                if (!--i) break;
319 +                                wp[0][0] += mov[0]; wp[0][1] += mov[1];
320 +                                wp[0][2] += mov[2]; wp[1][0] += mov[0];
321 +                                wp[1][1] += mov[1]; wp[1][2] += mov[2];
322                          }
323                  }
324   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines