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

Comparing ray/src/ot/wfconv.c (file contents):
Revision 2.11 by greg, Fri Jan 24 01:26:44 2014 UTC vs.
Revision 2.12 by greg, Fri Jan 24 02:22:49 2014 UTC

# Line 249 | Line 249 | cvtndx(                                /* convert vertex string to index */
249   static int
250   dominant_axis(char *v1, char *v2, char *v3)
251   {
252 <        int     v1i = atoi(v1), v2i = atoi(v2), v3i = atoi(v3);
252 >        VNDX    v1i, v2i, v3i;
253          FVECT   e1, e2, vn;
254          int     i, imax;
255  
256 <        VSUB(e1, vlist[v2i], vlist[v1i]);
257 <        VSUB(e2, vlist[v3i], vlist[v2i]);
256 >        if (!cvtndx(v1i, v1) || !cvtndx(v2i, v2) || !cvtndx(v3i, v3))
257 >                return(-1);
258 >        VSUB(e1, vlist[v2i[0]], vlist[v1i[0]]);
259 >        VSUB(e2, vlist[v3i[0]], vlist[v2i[0]]);
260          VCROSS(vn, e1, e2);
261          for (i = imax = 2; i--; )
262                  if (vn[i]*vn[i] > vn[imax]*vn[imax])
# Line 287 | Line 289 | putface(                               /* put out an N-sided polygon */
289                  if ((ax = dominant_axis(av[i], av[i+1], av[i+2])) >= 0)
290                          break;
291          if (ax < 0)
292 <                return(0);
292 >                return(1);              /* ignore degenerate face */
293          if (++ax >= 3) ax = 0;
294          ay = ax;
295          if (++ay >= 3) ay = 0;
# Line 303 | Line 305 | putface(                               /* put out an N-sided polygon */
305          }
306                                          /* break into triangles & output */
307          if (!polyTriangulate(poly, &tri_out))
308 <                return(0);
308 >                error(WARNING, "self-intersecting face");
309          polyFree(poly);
310          return(1);
311   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines