| 10 | 
  | 
#define DEBUG           1 | 
| 11 | 
  | 
 | 
| 12 | 
  | 
#ifndef GRIDRES | 
| 13 | 
< | 
#define GRIDRES         200             /* grid resolution per side */ | 
| 13 | 
> | 
#define GRIDRES         (1<<8)          /* grid resolution per side */ | 
| 14 | 
  | 
#endif | 
| 15 | 
  | 
                                        /* convert to/from coded radians */ | 
| 16 | 
  | 
#define ANG2R(r)        (int)((r)*((1<<16)/M_PI)) | 
| 18 | 
  | 
 | 
| 19 | 
  | 
typedef struct { | 
| 20 | 
  | 
        float           vsum;           /* DSF sum */ | 
| 21 | 
< | 
        unsigned short  nval;           /* number of values in sum */ | 
| 21 | 
> | 
        unsigned int    nval;           /* number of values in sum */ | 
| 22 | 
  | 
        unsigned short  crad;           /* radius (coded angle) */ | 
| 23 | 
  | 
} GRIDVAL;                      /* grid value */ | 
| 24 | 
  | 
 | 
| 57 | 
  | 
#define INP_QUAD3       4               /* 180-270 degree quadrant */ | 
| 58 | 
  | 
#define INP_QUAD4       8               /* 270-360 degree quadrant */ | 
| 59 | 
  | 
 | 
| 60 | 
+ | 
                                /* active grid resolution */ | 
| 61 | 
+ | 
extern int              grid_res; | 
| 62 | 
  | 
                                /* coverage/symmetry using INP_QUAD? flags */ | 
| 63 | 
  | 
extern int              inp_coverage; | 
| 64 | 
  | 
 | 
| 69 | 
  | 
extern int              input_orient; | 
| 70 | 
  | 
extern int              output_orient; | 
| 71 | 
  | 
 | 
| 72 | 
+ | 
                                /* log BSDF histogram */ | 
| 73 | 
+ | 
#define HISTLEN         256 | 
| 74 | 
+ | 
#define BSDF2BIG        (1./M_PI) | 
| 75 | 
+ | 
#define BSDF2SML        1e-8 | 
| 76 | 
+ | 
#define HISTLNR         17.2759509              /* log(BSDF2BIG/BSDF2SML) */ | 
| 77 | 
+ | 
extern unsigned long    bsdf_hist[HISTLEN]; | 
| 78 | 
+ | 
#define histndx(v)      (int)(log((v)*(1./BSDF2SML))*(HISTLEN/HISTLNR)) | 
| 79 | 
+ | 
#define histval(i)      (exp(((i)+.5)*(HISTLNR/HISTLEN))*BSDF2SML) | 
| 80 | 
+ | 
 | 
| 81 | 
+ | 
                                /* BSDF value for boundary regions */ | 
| 82 | 
+ | 
extern double           bsdf_min; | 
| 83 | 
+ | 
 | 
| 84 | 
  | 
                                /* processed incident DSF measurements */ | 
| 85 | 
  | 
extern RBFNODE          *dsf_list; | 
| 86 | 
  | 
 | 
| 126 | 
  | 
/* Reverse symmetry for an RBF distribution */ | 
| 127 | 
  | 
extern void             rev_rbf_symmetry(RBFNODE *rbf, int sym); | 
| 128 | 
  | 
 | 
| 129 | 
+ | 
/* Rotate RBF to correspond to given incident vector */ | 
| 130 | 
+ | 
extern void             rotate_rbf(RBFNODE *rbf, const FVECT invec); | 
| 131 | 
+ | 
 | 
| 132 | 
  | 
/* Compute volume associated with Gaussian lobe */ | 
| 133 | 
  | 
extern double           rbf_volume(const RBFVAL *rbfp); | 
| 134 | 
  | 
 | 
| 184 | 
  | 
extern int              get_interp(MIGRATION *miga[3], FVECT invec); | 
| 185 | 
  | 
 | 
| 186 | 
  | 
/* Partially advect between recorded incident angles and allocate new RBF */ | 
| 187 | 
< | 
extern RBFNODE *        advect_rbf(const FVECT invec); | 
| 187 | 
> | 
extern RBFNODE *        advect_rbf(const FVECT invec, int lobe_lim); |