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

Comparing ray/src/rt/rv3.c (file contents):
Revision 1.6 by greg, Mon Jun 19 13:30:04 1989 UTC vs.
Revision 1.7 by greg, Fri Oct 27 11:48:23 1989 UTC

# Line 12 | Line 12 | static char SCCSid[] = "$SunId$ LBL";
12  
13   #include  "ray.h"
14  
15 + #include  "octree.h"
16 +
17   #include  "rpaint.h"
18  
19   #include  "random.h"
20 +
21 +
22 + getrect(s, r)                           /* get a box */
23 + char  *s;
24 + register RECT  *r;
25 + {
26 +        int  x0, y0, x1, y1;
27 +
28 +        if (*s && !strncmp(s, "all", strlen(s))) {
29 +                r->l = r->d = 0;
30 +                r->r = ourview.hresolu;
31 +                r->u = ourview.vresolu;
32 +                return(0);
33 +        }
34 +        if (sscanf(s, "%d %d %d %d", &x0, &y0, &x1, &y1) != 4) {
35 +                if (dev->getcur == NULL)
36 +                        return(-1);
37 +                (*dev->comout)("Pick first corner\n");
38 +                if ((*dev->getcur)(&x0, &y0) == ABORT)
39 +                        return(-1);
40 +                (*dev->comout)("Pick second corner\n");
41 +                if ((*dev->getcur)(&x1, &y1) == ABORT)
42 +                        return(-1);
43 +        }
44 +        if (x0 < x1) {
45 +                r->l = x0;
46 +                r->r = x1;
47 +        } else {
48 +                r->l = x1;
49 +                r->r = x0;
50 +        }
51 +        if (y0 < y1) {
52 +                r->d = y0;
53 +                r->u = y1;
54 +        } else {
55 +                r->d = y1;
56 +                r->u = y0;
57 +        }
58 +        if (r->l < 0) r->l = 0;
59 +        if (r->d < 0) r->d = 0;
60 +        if (r->r > ourview.hresolu) r->r = ourview.hresolu;
61 +        if (r->u > ourview.vresolu) r->u = ourview.vresolu;
62 +        if (r->l > r->r) r->l = r->r;
63 +        if (r->d > r->u) r->d = r->u;
64 +        return(0);
65 + }
66 +
67 +
68 + getinterest(s, direc, vec, mp)          /* get area of interest */
69 + char  *s;
70 + int  direc;
71 + FVECT  vec;
72 + double  *mp;
73 + {
74 +        int  x, y;
75 +        RAY  thisray;
76 +        register int  i;
77 +
78 +        if (sscanf(s, "%lf", mp) != 1)
79 +                *mp = 1.0;
80 +        else if (*mp < -FTINY)          /* negative zoom is reduction */
81 +                *mp = -1.0 / *mp;
82 +        else if (*mp <= FTINY) {        /* too small */
83 +                error(COMMAND, "illegal magnification");
84 +                return(-1);
85 +        }
86 +        if (sscanf(s, "%*lf %lf %lf %lf", &vec[0], &vec[1], &vec[2]) != 3) {
87 +                if (dev->getcur == NULL)
88 +                        return(-1);
89 +                (*dev->comout)("Pick view center\n");
90 +                if ((*dev->getcur)(&x, &y) == ABORT)
91 +                        return(-1);
92 +                rayview(thisray.rorg, thisray.rdir, &ourview, x+.5, y+.5);
93 +                if (!direc || ourview.type == VT_PAR) {
94 +                        rayorigin(&thisray, NULL, PRIMARY, 1.0);
95 +                        if (!localhit(&thisray, &thescene)) {
96 +                                error(COMMAND, "not a local object");
97 +                                return(-1);
98 +                        }
99 +                }
100 +                if (direc)
101 +                        if (ourview.type == VT_PAR)
102 +                                for (i = 0; i < 3; i++)
103 +                                        vec[i] = thisray.rop[i] - ourview.vp[i];
104 +                        else
105 +                                VCOPY(vec, thisray.rdir);
106 +                else
107 +                        VCOPY(vec, thisray.rop);
108 +        } else if (direc)
109 +                        for (i = 0; i < 3; i++)
110 +                                vec[i] -= ourview.vp[i];
111 +        return(0);
112 + }
113  
114  
115   float *         /* keep consistent with COLOR typedef */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines