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

Comparing ray/src/ot/o_face.c (file contents):
Revision 1.1 by greg, Thu Feb 2 10:33:03 1989 UTC vs.
Revision 2.1 by greg, Tue Nov 12 17:00:53 1991 UTC

# Line 54 | Line 54 | CUBE  *cu;
54                                  /* get face arguments */
55          f = getface(o);
56          if (f->area == 0.0)             /* empty face */
57 <                return(0);
57 >                return(O_MISS);
58                                          /* compute cube boundaries */
59          for (j = 0; j < 3; j++)
60 <                cumax[j] = (cumin[j] = cu->cuorg[j]) + cu->cusize;
60 >                cumax[j] = (cumin[j] = cu->cuorg[j]-FTINY)
61 >                                + cu->cusize + 2.0*FTINY;
62  
63          vloc = ABOVE | BELOW;           /* check vertices */
64          for (i = 0; i < f->nv; i++)
65                  if (j = plocate(VERTEX(f,i), cumin, cumax))
66                          vloc &= j;
67                  else
68 <                        return(1);      /* vertex inside */
68 >                        return(O_HIT);  /* vertex inside */
69  
70          if (vloc)                       /* all to one side */
71 <                return(0);
71 >                return(O_MISS);
72          
73          for (i = 0; i < f->nv; i++) {   /* check edges */
74                  if ((j = i + 1) >= f->nv)
# Line 75 | Line 76 | CUBE  *cu;
76                  VCOPY(v1, VERTEX(f,i));         /* clip modifies */
77                  VCOPY(v2, VERTEX(f,j));         /* the vertices! */
78                  if (clip(v1, v2, cumin, cumax))
79 <                        return(1);              /* edge inside */
79 >                        return(O_HIT);          /* edge inside */
80          }
81                                          /* see if cube cuts plane */
82          for (j = 0; j < 3; j++)
# Line 86 | Line 87 | CUBE  *cu;
87                          v1[j] = cumax[j];
88                          v2[j] = cumin[j];
89                  }
90 <        if ((d1 = DOT(v1, f->norm) - f->const) > FTINY)
91 <                return(0);
92 <        if ((d2 = DOT(v2, f->norm) - f->const) < -FTINY)
93 <                return(0);
90 >        if ((d1 = DOT(v1, f->norm) - f->offset) > FTINY)
91 >                return(O_MISS);
92 >        if ((d2 = DOT(v2, f->norm) - f->offset) < -FTINY)
93 >                return(O_MISS);
94                                          /* intersect face */
95          for (j = 0; j < 3; j++)
96                  v1[j] = (v1[j]*d2 - v2[j]*d1)/(d2 - d1);
97          if (inface(v1, f))
98 <                return(1);
98 >                return(O_HIT);
99          
100 <        return(0);              /* no intersection */
100 >        return(O_MISS);         /* no intersection */
101   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines