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

Comparing ray/src/rt/t_func.c (file contents):
Revision 1.2 by greg, Tue Feb 21 14:56:22 1989 UTC vs.
Revision 1.7 by greg, Thu Oct 5 07:23:20 1989 UTC

# Line 43 | Line 43 | register RAY  *r;
43          extern double  varvalue();
44          extern int  errno;
45          FVECT  disp;
46 +        double  d;
47          register XFORM  *mxf;
48          register int  i;
49          register char  **sa;
# Line 55 | Line 56 | register RAY  *r;
56                  mxf = (XFORM *)malloc(sizeof(XFORM));
57                  if (mxf == NULL)
58                          goto memerr;
58                mxf->fore.sca = 1.0;
59                setident4(mxf->fore.xfm);
59                  if (xf(mxf->fore.xfm, &mxf->fore.sca,
60                          m->oargs.nsargs-4, sa+4) != m->oargs.nsargs-4)
61                          objerror(m, USER, "bad transform");
62                  if (mxf->fore.sca < 0.0)
63                          mxf->fore.sca = -mxf->fore.sca;
65                mxf->back.sca = 1.0;
66                setident4(mxf->back.xfm);
64                  invxf(mxf->back.xfm, &mxf->back.sca,
65                                  m->oargs.nsargs-4, sa+4);
66                  if (mxf->back.sca < 0.0)
# Line 71 | Line 68 | register RAY  *r;
68                  m->os = (char *)mxf;
69          }
70  
71 <        setmap(m, r, mxf->back.sca, mxf->back.xfm);
71 >        setmap(m, r, mxf->back.xfm, mxf->back.sca);
72  
73          if (!vardefined(sa[0]))
74                  loadfunc(sa[3]);
# Line 82 | Line 79 | register RAY  *r;
79                  objerror(m, WARNING, "compute error");
80                  return;
81          }
82 <        if (mxf->fore.xfm == NULL)
83 <                for (i = 0; i < 3; i++)
84 <                        r->pert[i] += disp[i];
85 <        else
86 <                for (i = 0; i < 3; i++)
90 <                        r->pert[i] += ( disp[0]*mxf->fore.xfm[0][i] +
91 <                                        disp[1]*mxf->fore.xfm[1][i] +
92 <                                        disp[2]*mxf->fore.xfm[2][i] )
93 <                                                / mxf->fore.sca;
82 >        multv3(disp, disp, mxf->fore.xfm);
83 >        multv3(disp, disp, r->rofx);
84 >        d = 1.0 / (mxf->fore.sca * r->rofs);
85 >        for (i = 0; i < 3; i++)
86 >                r->pert[i] += disp[i] * d;
87          return;
88   memerr:
89          error(SYSTEM, "out of memory in t_func");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines