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

Comparing ray/src/gen/replmarks.c (file contents):
Revision 2.13 by greg, Thu Mar 17 06:38:45 2005 UTC vs.
Revision 2.16 by greg, Thu Mar 6 00:47:37 2014 UTC

# Line 202 | Line 202 | cvobject(              /* convert an object */
202          int     i, n;
203          register int    j;
204  
205 <        if (fscanf(fin, "%s %s %s", buf, typ, nam) != 3)
205 >        if (fgetword(buf, sizeof(buf), fin) == NULL ||
206 >                        fgetword(typ, sizeof(typ), fin) == NULL ||
207 >                        fgetword(nam, sizeof(nam), fin) == NULL)
208                  goto readerr;
209          if (!strcmp(typ, "polygon"))
210                  for (j = 0; j < nmarkers; j++)
# Line 210 | Line 212 | cvobject(              /* convert an object */
212                                  replace(fname, &marker[j], nam, fin);
213                                  return;
214                          }
215 <        printf("\n%s %s %s\n", buf, typ, nam);
215 >        putchar('\n'); fputword(buf, stdout);
216 >        printf(" %s ", typ);
217 >        fputword(nam, stdout); putchar('\n');
218          if (!strcmp(typ, "alias")) {            /* alias special case */
219 <                if (fscanf(fin, "%s", buf) != 1)
219 >                if (fgetword(buf, sizeof(buf), fin) == NULL)
220                          goto readerr;
221 <                printf("\t%s\n", buf);
221 >                putchar('\t'); fputword(buf, stdout); putchar('\n');
222                  return;
223          }
224          for (i = 0; i < 3; i++) {               /* pass along arguments */
# Line 387 | Line 391 | addrot(                /* compute rotation (x,y,z) => (xp,yp,zp) */
391          int     n;
392          double  theta;
393  
394 +        if (yp[2]*yp[2] + zp[2]*zp[2] < 2.*FTINY*FTINY) {
395 +                /* Special case for X' along Z-axis */
396 +                theta = -atan2(yp[0], yp[1]);
397 +                sprintf(xf, " -ry %f -rz %f",
398 +                                xp[2] < 0.0 ? 90.0 : -90.0,
399 +                                theta*(180./PI));
400 +                return(4);
401 +        }
402          n = 0;
403          theta = atan2(yp[2], zp[2]);
404          if (!FEQ(theta,0.0)) {
# Line 394 | Line 406 | addrot(                /* compute rotation (x,y,z) => (xp,yp,zp) */
406                  while (*xf) ++xf;
407                  n += 2;
408          }
409 <        theta = asin(-xp[2]);
409 >        theta = Asin(-xp[2]);
410          if (!FEQ(theta,0.0)) {
411                  sprintf(xf, " -ry %f", theta*(180./PI));
412                  while (*xf) ++xf;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines