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

Comparing ray/src/rt/t_data.c (file contents):
Revision 1.1 by greg, Tue Mar 14 11:31:17 1989 UTC vs.
Revision 1.5 by greg, Thu Oct 5 07:23:19 1989 UTC

# Line 48 | Line 48 | RAY  *r;
48          int  nv;
49          FVECT  dval, disp;
50          double  pt[MAXDIM];
51 +        double  d;
52          DATARRAY  *dp;
53          register XFORM  *mxf;
54          register char  **sa;
# Line 57 | Line 58 | RAY  *r;
58                  objerror(m, USER, "bad # arguments");
59          sa = m->oargs.sarg;
60  
61 +        for (i = 7; i < m->oargs.nsargs && sa[i][0] != '-'; i++)
62 +                ;
63 +        nv = i-7;
64          if ((mxf = (XFORM *)m->os) == NULL) {
61                for (i = 7; i < m->oargs.nsargs && sa[i][0] != '-'; i++)
62                        ;
63                nv = i-7;
65                  mxf = (XFORM *)malloc(sizeof(XFORM));
66                  if (mxf == NULL)
67                          goto memerr;
67                mxf->fore.sca = 1.0;
68                setident4(mxf->fore.xfm);
68                  if (xf(mxf->fore.xfm, &mxf->fore.sca,
69                          m->oargs.nsargs-i, sa+i) != m->oargs.nsargs-i)
70                          objerror(m, USER, "bad transform");
71                  if (mxf->fore.sca < 0.0)
72                          mxf->fore.sca = -mxf->fore.sca;
74                mxf->back.sca = 1.0;
75                setident4(mxf->back.xfm);
73                  invxf(mxf->back.xfm, &mxf->back.sca,
74                                  m->oargs.nsargs-i, sa+i);
75                  if (mxf->back.sca < 0.0)
# Line 103 | Line 100 | RAY  *r;
100          if (errno)
101                  goto computerr;
102  
103 +        multv3(disp, disp, mxf->fore.xfm);
104 +        multv3(disp, disp, r->rofx);
105 +        d = 1.0 / (mxf->fore.sca * r->rofs);
106          for (i = 0; i < 3; i++)
107 <                r->pert[i] += ( disp[0]*mxf->fore.xfm[0][i] +
108 <                                disp[1]*mxf->fore.xfm[1][i] +
109 <                                disp[2]*mxf->fore.xfm[2][i] )
110 <                                        / mxf->fore.sca;
107 >                r->pert[i] += disp[i] * d;
108          return;
109   dimerr:
110          objerror(m, USER, "dimension error");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines