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

Comparing ray/src/common/convertobj.c (file contents):
Revision 2.4 by greg, Thu Apr 15 23:51:04 2021 UTC vs.
Revision 2.6 by greg, Sat Apr 17 14:51:33 2021 UTC

# Line 48 | Line 48 | checksmooth(Scene *sc, Face *f, void *ptr)
48          if ((i < 0) & !nrev)                    /* all normals agree w/ face? */
49                  return(0);
50          if (nrev == f->nv) {                    /* all reversed? */
51 <                for (i = f->nv; i--; )          /* remove normal indices */
52 <                        f->v[i].nid = -1;
53 <                for (i = f->nv/2; i--; ) {      /* and swap others around */
51 >                for (i = f->nv/2; i--; ) {      /* swap vertices around */
52                          int     j = f->nv-1 - i;
53 <                        int     vi = f->v[i].vid;
54 <                        int     ti = f->v[i].tid;
55 <                        f->v[i].vid = f->v[j].vid;
58 <                        f->v[i].tid = f->v[j].tid;
59 <                        f->v[j].vid = vi;
60 <                        f->v[j].tid = ti;
53 >                        VertEnt tve = f->v[i];
54 >                        f->v[i] = f->v[j];
55 >                        f->v[j] = tve;
56                  }
57                  return(0);
58          }
# Line 71 | Line 66 | trismooth(Scene *sc, Face *f, void *ptr)
66   {
67          FILE            *fp = (FILE *)ptr;
68          BARYCCM         bcm;
69 <        RREAL           ncoor[3][3];
69 >        FVECT           coor[3];
70          int             i;
71  
72          if (f->nv != 3)
73                  return(0);                      /* should never happen */
74 <        if (sizeof(sc->vert[0].p) != sizeof(FVECT))
75 <                error(INTERNAL, "Code error in trismooth()");
76 <        if (comp_baryc(&bcm, sc->vert[f->v[0].vid].p, sc->vert[f->v[1].vid].p,
77 <                        sc->vert[f->v[2].vid].p) < 0)
74 > #ifdef  SMLFLT
75 >        for (i = 3; i--; ) {
76 >                double  *v = sc->vert[f->v[i].vid].p;
77 >                VCOPY(coor[i], v);
78 >        }
79 >        if (comp_baryc(&bcm, coor[0], coor[1], coor[2]) < 0)
80                  return(0);                      /* degenerate?? */
81 <
81 > #else
82 >        if (comp_baryc(&bcm, sc->vert[f->v[0].vid].p,
83 >                        sc->vert[f->v[1].vid].p, sc->vert[f->v[2].vid].p) < 0)
84 >                return(0);                      /* degenerate?? */
85 > #endif
86          for (i = 3; i--; ) {                    /* assign BC normals */
87                  float   *tnrm = sc->norm[f->v[i].nid];
88 <                ncoor[0][i] = tnrm[0];
89 <                ncoor[1][i] = tnrm[1];
90 <                ncoor[2][i] = tnrm[2];
88 >                coor[0][i] = tnrm[0];
89 >                coor[1][i] = tnrm[1];
90 >                coor[2][i] = tnrm[2];
91          }                                       /* print texture */
92          fprintf(fp, "\n%s texfunc %s\n4 dx dy dz %s\n0\n",
93                          sc->matname[f->mat], TEXNAME, TCALNAME);
94 <        fput_baryc(&bcm, ncoor, 3, fp);         /* with BC normals */
94 >        fput_baryc(&bcm, coor, 3, fp);          /* with BC normals */
95          fprintf(fp, "\n%s polygon %s.%d\n0\n0\n9\n",
96                          TEXNAME, sc->grpname[f->grp], ++fcnt);
97          for (i = 0; i < 3; i++) {               /* then triangle */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines