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

Comparing ray/src/cv/bsdfpeaks.c (file contents):
Revision 2.1 by greg, Wed May 21 17:23:07 2025 UTC vs.
Revision 2.2 by greg, Wed May 21 21:21:25 2025 UTC

# Line 19 | Line 19 | typedef struct {
19          int     ndx;            /* peak index for RBFVAL */
20   } FWHM;                 /* struct to hold peak value */
21  
22 < typedef double  eval_f(const FVECT vin, const FVECT vout, void *p);
22 > typedef double  eval_f(const FVECT vin, const FVECT vout, const void *p);
23  
24   char    *progname;              /* needed by bsdfrep.c */
25  
# Line 37 | Line 37 | cmpFWHM(const void *p0, const void *p1)
37  
38   /* BSDF evaluation function for RBF system */
39   double
40 < rbf_eval(const FVECT vin, const FVECT vout, void *p)
40 > rbf_eval(const FVECT vin, const FVECT vout, const void *p)
41   {
42          /* XXX verify vin == p->invec ? */
43 <        return(eval_rbfrep((RBFNODE *)p, vout));
43 >        return(eval_rbfrep((const RBFNODE *)p, vout));
44   }
45  
46   /* BSDF evaluation for XML input */
47   double
48 < bsdf_eval(const FVECT vin, const FVECT vout, void *p)
48 > bsdf_eval(const FVECT vin, const FVECT vout, const void *p)
49   {
50          SDValue sv;
51  
52          if (SDreportError(
53 <                        SDevalBSDF(&sv, vin, vout, (SDData *)p),
53 >                        SDevalBSDF(&sv, vin, vout, (const SDData *)p),
54                          stderr))
55                  exit(1);
56  
# Line 59 | Line 59 | bsdf_eval(const FVECT vin, const FVECT vout, void *p)
59  
60   /* Find full-width, half-maximum in radians around BSDF direction */
61   double
62 < getFWHM(const FVECT vin, const FVECT vc, double rad0, eval_f *ev, void *p)
62 > getFWHM(const FVECT vin, const FVECT vc, double rad0, eval_f *ev, const void *p)
63   {
64          const double    peakv = (*ev)(vin, vc, p);
65          double          rad1 = rad0;                    /* current radii */
# Line 73 | Line 73 | getFWHM(const FVECT vin, const FVECT vc, double rad0,
73                  spinvector(vt, v0, vc, phi);
74                  if ((*ev)(vin, vt, p) <= .5*peakv) {    /* found one side? */
75                      FVECT       vt1;
76 <                    while (rad1 < M_PI/2.) {            /* find opposite */
76 >                    while (rad1 < M_PI/2.) {            /* bracket peak */
77                          geodesic(vt1, vt, vc, rad0+rad1, GEOD_RAD);
78                          if ((*ev)(vin, vt1, p) <= .5*peakv)
79                              return(rad0+rad1);          /* got both! */
# Line 193 | Line 193 | main(int argc, char *argv[])
193  
194                          printf("\t%.1f", 180./M_PI * getFWHM(peaka[i].rbs->invec,
195                                                  vout, sqrt(psa/M_PI),
196 <                                                bsdf_eval, (void *)sd));
196 >                                                bsdf_eval, sd));
197                  }
198                  fputc('\n', stdout);
199          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines