--- ray/src/util/vwright.c 1994/11/21 16:49:44 2.1 +++ ray/src/util/vwright.c 1995/09/14 21:36:32 2.2 @@ -1,4 +1,4 @@ -/* Copyright (c) 1994 Regents of the University of California */ +/* Copyright (c) 1995 Regents of the University of California */ #ifndef lint static char SCCSid[] = "$SunId$ LBL"; @@ -13,10 +13,8 @@ static char SCCSid[] = "$SunId$ LBL"; #include "view.h" -VIEW leftview = STDVIEW; +VIEW vw = STDVIEW; -VIEW rightview; - char *progname; @@ -25,9 +23,9 @@ int argc; char *argv[]; { char linebuf[256]; + char *err; int gotview = 0; double dist; - FVECT v1; register int i; progname = argv[0]; @@ -38,26 +36,22 @@ char *argv[]; while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) { if (linebuf[0] == '\n') break; - if (isview(linebuf) && sscanview(&leftview, linebuf) > 0) + if (isview(linebuf) && sscanview(&vw, linebuf) > 0) gotview++; } if (!gotview) { fprintf(stderr, "%s: no view on standard input\n", progname); exit(1); } - fcross(v1, leftview.vdir, leftview.vup); - if (normalize(v1) == 0.) { - fprintf(stderr, - "%s: view direction parallel to view up vector\n", - progname); + if ((err= setview(&vw)) != NULL) { + fprintf(stderr, "%s: %s\n", progname, err); exit(1); } - copystruct(&rightview, &leftview); - dist = atof(argv[1]); + dist = atof(argv[1])/sqrt(vw.hn2); for (i = 0; i < 3; i++) - rightview.vp[i] += dist*v1[i]; + vw.vp[i] += dist*vw.hvec[i]; fputs(VIEWSTR, stdout); - fprintview(&rightview, stdout); + fprintview(&vw, stdout); putchar('\n'); exit(0); }