--- ray/src/rt/t_data.c 1989/03/14 11:31:17 1.1 +++ ray/src/rt/t_data.c 1989/04/11 13:30:37 1.3 @@ -57,10 +57,10 @@ RAY *r; objerror(m, USER, "bad # arguments"); sa = m->oargs.sarg; + for (i = 7; i < m->oargs.nsargs && sa[i][0] != '-'; i++) + ; + nv = i-7; if ((mxf = (XFORM *)m->os) == NULL) { - for (i = 7; i < m->oargs.nsargs && sa[i][0] != '-'; i++) - ; - nv = i-7; mxf = (XFORM *)malloc(sizeof(XFORM)); if (mxf == NULL) goto memerr; @@ -103,11 +103,10 @@ RAY *r; if (errno) goto computerr; + multv3(disp, disp, mxf->fore.xfm); + multv3(disp, disp, r->rofx); for (i = 0; i < 3; i++) - r->pert[i] += ( disp[0]*mxf->fore.xfm[0][i] + - disp[1]*mxf->fore.xfm[1][i] + - disp[2]*mxf->fore.xfm[2][i] ) - / mxf->fore.sca; + r->pert[i] += disp[i] / (mxf->fore.sca * r->rofs); return; dimerr: objerror(m, USER, "dimension error");