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

Comparing ray/src/gen/gensurf.c (file contents):
Revision 2.16 by greg, Sat Aug 21 11:54:06 2004 UTC vs.
Revision 2.22 by greg, Mon Dec 9 22:08:13 2013 UTC

# Line 34 | Line 34 | char  VNAME[] =        "valid";                /* valid vertex name */
34  
35   #define  pvect(p)       printf(vformat, (p)[0], (p)[1], (p)[2])
36  
37 < char  vformat[] = "%15.9g %15.9g %15.9g\n";
38 < char  tsargs[] = "4 surf_dx surf_dy surf_dz surf.cal\n";
37 > char  vformat[] = "%18.12g %18.12g %18.12g\n";
38 > char  tsargs[] = "4 surf_dx surf_dy surf_dz surf.cal";
39   char  texname[] = "Phong";
40  
41   int  smooth = 0;                /* apply smoothing? */
# Line 58 | Line 58 | double  l_hermite(), l_bezier(), l_bspline(), l_datava
58  
59   typedef struct {
60          int  valid;     /* point is valid (vertex number) */
61 +        int  nvalid;    /* normal is valid */
62          FVECT  p;       /* vertex position */
63          FVECT  n;       /* average normal */
64          RREAL  uv[2];   /* (u,v) position */
# Line 182 | Line 183 | char  *argv[];
183  
184   userror:
185          fprintf(stderr, "Usage: %s material name ", argv[0]);
186 <        fprintf(stderr, "x(s,t) y(s,t) z(s,t) m n [-s][-e expr][-f file]\n");
186 >        fprintf(stderr, "x(s,t) y(s,t) z(s,t) m n [-s][-o][-e expr][-f file]\n");
187          return 1;
188   }
189  
# Line 197 | Line 198 | loaddata(              /* load point data from file */
198   {
199          FILE  *fp;
200          char  word[64];
201 <        register int  size;
202 <        register RREAL  *dp;
201 >        int  size;
202 >        RREAL  *dp;
203  
204          datarec.flags = HASBORDER;              /* assume border values */
205          datarec.m = m+1;
# Line 229 | Line 230 | loaddata(              /* load point data from file */
230                  size--;
231          }
232          if (size == (m+n+1)*pointsize) {        /* no border after all */
233 <                dp = (RREAL *)realloc((void *)datarec.data,
233 >                dp = (RREAL *)realloc(datarec.data,
234                                  m*n*pointsize*sizeof(RREAL));
235                  if (dp != NULL)
236                          datarec.data = dp;
# Line 254 | Line 255 | l_dataval(                             /* return recorded data value */
255   )
256   {
257          double  u, v;
258 <        register int  i, j;
259 <        register RREAL  *dp;
258 >        int  i, j;
259 >        RREAL  *dp;
260          double  d00, d01, d10, d11;
261                                                  /* compute coordinates */
262          u = argument(1); v = argument(2);
# Line 293 | Line 294 | l_dataval(                             /* return recorded data value */
294  
295   void
296   putobjrow(                      /* output vertex row to .OBJ */
297 <        register POINT  *rp,
297 >        POINT  *rp,
298          int  n
299   )
300   {
301          static int      nverts = 0;
302 +        static int      nnorms = 0;
303  
304          for ( ; n-- >= 0; rp++) {
305                  if (!rp->valid)
306                          continue;
307                  fputs("v ", stdout);
308                  pvect(rp->p);
309 <                if (smooth && !ZEROVECT(rp->n))
309 >                if (smooth && !ZEROVECT(rp->n)) {
310                          printf("\tvn %.9g %.9g %.9g\n",
311                                          rp->n[0], rp->n[1], rp->n[2]);
312 +                        rp->nvalid = ++nnorms;
313 +                } else
314 +                        rp->nvalid = 0;
315                  printf("\tvt %.9g %.9g\n", rp->uv[0], rp->uv[1]);
316                  rp->valid = ++nverts;
317          }
# Line 344 | Line 349 | putsquare(             /* put out a square */
349          if (!(ok1 | ok2))
350                  return;
351          if (objout) {                   /* output .OBJ faces */
347                int     p0n=0, p1n=0, p2n=0, p3n=0;
348                if (smooth) {
349                        if (!ZEROVECT(p0->n))
350                                p0n = p0->valid;
351                        if (!ZEROVECT(p1->n))
352                                p1n = p1->valid;
353                        if (!ZEROVECT(p2->n))
354                                p2n = p2->valid;
355                        if (!ZEROVECT(p3->n))
356                                p3n = p3->valid;
357                }
352                  if (ok1 & ok2 && fdot(vc1,vc2) >= 1.0-FTINY*FTINY) {
353                          printf("f %d/%d/%d %d/%d/%d %d/%d/%d %d/%d/%d\n",
354 <                                        p0->valid, p0->valid, p0n,
355 <                                        p1->valid, p1->valid, p1n,
356 <                                        p3->valid, p3->valid, p3n,
357 <                                        p2->valid, p2->valid, p2n);
354 >                                        p0->valid, p0->valid, p0->nvalid,
355 >                                        p1->valid, p1->valid, p1->nvalid,
356 >                                        p3->valid, p3->valid, p3->nvalid,
357 >                                        p2->valid, p2->valid, p2->nvalid);
358                          return;
359                  }
360                  if (ok1)
361                          printf("f %d/%d/%d %d/%d/%d %d/%d/%d\n",
362 <                                        p0->valid, p0->valid, p0n,
363 <                                        p1->valid, p1->valid, p1n,
364 <                                        p2->valid, p2->valid, p2n);
362 >                                        p0->valid, p0->valid, p0->nvalid,
363 >                                        p1->valid, p1->valid, p1->nvalid,
364 >                                        p2->valid, p2->valid, p2->nvalid);
365                  if (ok2)
366                          printf("f %d/%d/%d %d/%d/%d %d/%d/%d\n",
367 <                                        p2->valid, p2->valid, p2n,
368 <                                        p1->valid, p1->valid, p1n,
369 <                                        p3->valid, p3->valid, p3n);
367 >                                        p2->valid, p2->valid, p2->nvalid,
368 >                                        p1->valid, p1->valid, p1->nvalid,
369 >                                        p3->valid, p3->valid, p3->nvalid);
370                  return;
371          }
372                                          /* compute normal interpolation */
# Line 382 | Line 376 | putsquare(             /* put out a square */
376          if (ok1 & ok2 && fdot(vc1,vc2) >= 1.0-FTINY*FTINY) {
377                  printf("\n%s ", modname);
378                  if (axis != -1) {
379 <                        printf("texfunc %s\n", texname);
386 <                        printf(tsargs);
379 >                        printf("texfunc %s\n%s\n", texname, tsargs);
380                          printf("0\n13\t%d\n", axis);
381                          pvect(norm[0]);
382                          pvect(norm[1]);
# Line 405 | Line 398 | putsquare(             /* put out a square */
398          if (ok1) {
399                  printf("\n%s ", modname);
400                  if (axis != -1) {
401 <                        printf("texfunc %s\n", texname);
409 <                        printf(tsargs);
401 >                        printf("texfunc %s\n%s\n", texname, tsargs);
402                          printf("0\n13\t%d\n", axis);
403                          pvect(norm[0]);
404                          pvect(norm[1]);
# Line 424 | Line 416 | putsquare(             /* put out a square */
416          if (ok2) {
417                  printf("\n%s ", modname);
418                  if (axis != -1) {
419 <                        printf("texfunc %s\n", texname);
428 <                        printf(tsargs);
419 >                        printf("texfunc %s\n%s\n", texname, tsargs);
420                          printf("0\n13\t%d\n", axis);
421                          pvect(norm[0]);
422                          pvect(norm[1]);
# Line 446 | Line 437 | putsquare(             /* put out a square */
437   void
438   comprow(                        /* compute row of values */
439          double  s,
440 <        register POINT  *row,
440 >        POINT  *row,
441          int  siz
442   )
443   {
444          double  st[2];
445          int  end;
446          int  checkvalid;
447 <        register int  i;
447 >        int  i;
448          
449          if (smooth) {
450                  i = -1;                 /* compute one past each end */
# Line 487 | Line 478 | comprow(                       /* compute row of values */
478  
479   void
480   compnorms(              /* compute row of averaged normals */
481 <        register POINT  *r0,
482 <        register POINT  *r1,
483 <        register POINT  *r2,
481 >        POINT  *r0,
482 >        POINT  *r1,
483 >        POINT  *r2,
484          int  siz
485   )
486   {
# Line 530 | Line 521 | compnorms(             /* compute row of averaged normals */
521  
522   int
523   norminterp(     /* compute normal interpolation */
524 <        register FVECT  resmat[4],
524 >        FVECT  resmat[4],
525          POINT  *p0,
526          POINT  *p1,
527          POINT  *p2,
# Line 540 | Line 531 | norminterp(    /* compute normal interpolation */
531   #define u  ((ax+1)%3)
532   #define v  ((ax+2)%3)
533  
534 <        register int  ax;
534 >        int  ax;
535          MAT4  eqnmat;
536          FVECT  v1;
537 <        register int  i, j;
537 >        int  i, j;
538  
539          if (!smooth)                    /* no interpolation if no smoothing */
540                  return(-1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines