ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/vwright.c
Revision: 2.3
Committed: Fri Sep 15 14:36:49 1995 UTC (28 years, 6 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.2: +45 -7 lines
Log Message:
added output for rcalc -e option

File Contents

# Content
1 /* Copyright (c) 1995 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * Move a viewpoint the given distance to the right
9 */
10
11
12 #include "standard.h"
13
14 #include "view.h"
15
16 #include <ctype.h>
17
18 VIEW vw = STDVIEW;
19
20 char *progname;
21
22
23 main(argc, argv)
24 int argc;
25 char *argv[];
26 {
27 char linebuf[256];
28 char *err;
29 int gotview = 0;
30 FVECT hvn, vvn;
31 double dist;
32 register int i;
33
34 progname = argv[0];
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(&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 if ((err= setview(&vw)) != NULL) {
48 fprintf(stderr, "%s: %s\n", progname, err);
49 exit(1);
50 }
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 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 }