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

Comparing ray/src/util/vwright.c (file contents):
Revision 2.1 by greg, Mon Nov 21 16:49:44 1994 UTC vs.
Revision 2.3 by greg, Fri Sep 15 14:36:49 1995 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1994 Regents of the University of California */
1 > /* Copyright (c) 1995 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 13 | Line 13 | static char SCCSid[] = "$SunId$ LBL";
13  
14   #include "view.h"
15  
16 < VIEW    leftview = STDVIEW;
16 > #include <ctype.h>
17  
18 < VIEW    rightview;
18 > VIEW    vw = STDVIEW;
19  
20   char    *progname;
21  
# Line 25 | Line 25 | int    argc;
25   char    *argv[];
26   {
27          char    linebuf[256];
28 +        char    *err;
29          int     gotview = 0;
30 +        FVECT   hvn, vvn;
31          double  dist;
30        FVECT   v1;
32          register int    i;
33  
34          progname = argv[0];
35 <        if (argc != 2 || !isflt(argv[1])) {
36 <                fprintf(stderr, "Usage: %s offset\n", progname);
36 <                exit(1);
37 <        }
35 >        if (argc != 2)
36 >                goto userr;
37          while (fgets(linebuf, sizeof(linebuf), stdin) != NULL) {
38                  if (linebuf[0] == '\n')
39                          break;
40 <                if (isview(linebuf) && sscanview(&leftview, linebuf) > 0)
40 >                if (isview(linebuf) && sscanview(&vw, linebuf) > 0)
41                          gotview++;
42          }
43          if (!gotview) {
44                  fprintf(stderr, "%s: no view on standard input\n", progname);
45                  exit(1);
46          }
47 <        fcross(v1, leftview.vdir, leftview.vup);
48 <        if (normalize(v1) == 0.) {
50 <                fprintf(stderr,
51 <                        "%s: view direction parallel to view up vector\n",
52 <                                progname);
47 >        if ((err= setview(&vw)) != NULL) {
48 >                fprintf(stderr, "%s: %s\n", progname, err);
49                  exit(1);
50          }
51 <        copystruct(&rightview, &leftview);
51 >        VCOPY(hvn, vw.hvec);
52 >        normalize(hvn);
53 >        VCOPY(vvn, vw.vvec);
54 >        normalize(vvn);
55 >        if (isalpha(argv[1][0])) {      /* print out variables */
56 >                switch (vw.type) {
57 >                        case VT_PER: i=1; break;
58 >                        case VT_PAR: i=2; break;
59 >                        case VT_ANG: i=3; break;
60 >                        case VT_HEM: i=4; break;
61 >                        case VT_CYL: i=5; break;
62 >                        default: i=0; break;
63 >                }
64 >                printf("%st:%d;", argv[1], i);
65 >                printf("%spx:%g;%spy:%g;%spz:%g;", argv[1], vw.vp[0],
66 >                                argv[1], vw.vp[1], argv[1], vw.vp[2]);
67 >                printf("%sdx:%g;%sdy:%g;%sdz:%g;", argv[1], vw.vdir[0],
68 >                                argv[1], vw.vdir[1], argv[1], vw.vdir[2]);
69 >                printf("%sux:%g;%suy:%g;%suz:%g;", argv[1], vw.vup[0],
70 >                                argv[1], vw.vup[1], argv[1], vw.vup[2]);
71 >                printf("%sh:%g;%sv:%g;", argv[1], vw.horiz,
72 >                                argv[1], vw.vert);
73 >                printf("%ss:%g;%sl:%g;%so:%g;%sa:%g;",
74 >                                argv[1], vw.hoff, argv[1], vw.voff,
75 >                                argv[1], vw.vfore, argv[1], vw.vaft);
76 >                printf("%shx:%g;%shy:%g;%shz:%g;%shn:%g;",
77 >                                argv[1], hvn[0], argv[1], hvn[1],
78 >                                argv[1], hvn[2], argv[1], sqrt(vw.hn2));
79 >                printf("%svx:%g;%svy:%g;%svz:%g;%svn:%g;\n",
80 >                                argv[1], vvn[0], argv[1], vvn[1],
81 >                                argv[1], vvn[2], argv[1], sqrt(vw.vn2));
82 >                exit(0);
83 >        }
84 >        if (!isflt(argv[1]))
85 >                goto userr;
86          dist = atof(argv[1]);
87          for (i = 0; i < 3; i++)
88 <                rightview.vp[i] += dist*v1[i];
89 <        fputs(VIEWSTR, stdout);
60 <        fprintview(&rightview, stdout);
88 >                vw.vp[i] += dist*hvn[i];
89 >        fprintview(&vw, stdout);
90          putchar('\n');
91          exit(0);
92 + userr:
93 +        fprintf(stderr, "Usage: %s {offset|name}\n", progname);
94 +        exit(1);
95   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines