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

Comparing ray/src/rt/o_mesh.c (file contents):
Revision 2.12 by greg, Mon Oct 25 22:57:45 2010 UTC vs.
Revision 2.15 by greg, Fri Mar 1 02:03:33 2019 UTC

# Line 59 | Line 59 | OBJREC *o;
59  
60   static int
61   volume_sign(r, v1, v2)  /* get signed volume for ray and edge */
62 < register RAY    *r;
62 > RAY     *r;
63   int32           v1, v2;
64   {
65 <        int                             reversed = 0;
66 <        register struct EdgeSide        *ecp;
65 >        int             reversed = 0;
66 >        struct EdgeSide *ecp;
67          
68          if (v1 > v2) {
69                  int32   t = v2; v2 = v1; v1 = t;
# Line 113 | Line 113 | RAY    *r;
113                                  "missing triangle vertices in mesh_hit");
114                  sv1 = volume_sign(r, tvi[0], tvi[1]);
115                  sv2 = volume_sign(r, tvi[1], tvi[2]);
116 +                if (sv1 != sv2)                 /* compare volume signs */
117 +                        continue;
118                  sv3 = volume_sign(r, tvi[2], tvi[0]);
119 <                                                /* compare volume signs */
118 <                if ((sv1 != sv2) | (sv2 != sv3))
119 >                if (sv2 != sv3)
120                          continue;
121                                                  /* compute intersection */
122                  getmeshvert(&tv[0], curmsh, tvi[0], MT_V);
# Line 129 | Line 130 | RAY    *r;
130                          continue;               /* ray is tangent */
131                  VSUB(va, tv[0].v, r->rorg);
132                  d = DOT(va, nrm) / d;
133 <                if (d <= FTINY || d >= r->rot)
133 >                if ((d <= FTINY) | (d >= r->rot))
134                          continue;               /* not good enough */
135                  r->robj = oset[i];              /* else record hit */
136                  r->ro = edge_cache.o;
# Line 141 | Line 142 | RAY    *r;
142   }
143  
144  
145 < extern int
145 > int
146   o_mesh(                 /* compute ray intersection with a mesh */
147          OBJREC          *o,
148 <        register RAY    *r
148 >        RAY     *r
149   )
150   {
151          RAY             rcont;
# Line 180 | Line 181 | o_mesh(                        /* compute ray intersection with a mesh */
181          if (!(flags & MT_V))
182                  objerror(o, INTERNAL, "missing mesh vertices in o_mesh");
183          r->robj = objndx(o);            /* set object and material */
184 <        if (o->omod == OVOID && tmod != OVOID) {
184 >        if ((o->omod == OVOID) & (tmod != OVOID)) {
185                  r->ro = getmeshpseudo(curmsh, tmod);
186                  r->rox = &curmi->x;
187          } else
# Line 209 | Line 210 | o_mesh(                        /* compute ray intersection with a mesh */
210                                          wt[2]*tv[2].uv[i];
211          else
212                  r->uv[0] = r->uv[1] = .0;
213 <
214 <                                        /* return hit */
214 <        return(1);
213 >                
214 >        return(1);                      /* return hit */
215   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines