--- ray/src/cv/bsdfrep.h 2012/10/19 04:14:29 2.1 +++ ray/src/cv/bsdfrep.h 2012/10/23 21:09:29 2.4 @@ -1,4 +1,4 @@ -/* RCSid $Id: bsdfrep.h,v 2.1 2012/10/19 04:14:29 greg Exp $ */ +/* RCSid $Id: bsdfrep.h,v 2.4 2012/10/23 21:09:29 greg Exp $ */ /* * Definitions for BSDF representation used to interpolate measured data. * @@ -57,6 +57,7 @@ typedef struct s_rbfnode { #define INP_QUAD3 4 /* 180-270 degree quadrant */ #define INP_QUAD4 8 /* 270-360 degree quadrant */ + /* coverage/symmetry using INP_QUAD? flags */ extern int inp_coverage; /* all incident angles in-plane so far? */ @@ -72,12 +73,9 @@ extern RBFNODE *dsf_list; /* RBF-linking matrices (edges) */ extern MIGRATION *mig_list; - /* migration edges drawn in raster fashion */ -extern MIGRATION *mig_grid[GRIDRES][GRIDRES]; - -#define mtx_nrows(m) ((m)->rbfv[0]->nrbf) -#define mtx_ncols(m) ((m)->rbfv[1]->nrbf) -#define mtx_ndx(m,i,j) ((i)*mtx_ncols(m) + (j)) +#define mtx_nrows(m) (m)->rbfv[0]->nrbf +#define mtx_ncols(m) (m)->rbfv[1]->nrbf +#define mtx_coef(m,i,j) (m)->mtx[(i)*mtx_ncols(m) + (j)] #define is_src(rbf,m) ((rbf) == (m)->rbfv[0]) #define is_dest(rbf,m) ((rbf) == (m)->rbfv[1]) #define nextedge(rbf,m) (m)->enxt[is_dest(rbf,m)] @@ -85,15 +83,15 @@ extern MIGRATION *mig_grid[GRIDRES][GRIDRES]; #define round(v) (int)((v) + .5 - ((v) < -.5)) -#define BSDFREP_FMT "binary_RBF_BSDF_mesh" +#define BSDFREP_FMT "BSDF_RBFmesh" /* global argv[0] */ extern char *progname; /* get theta value in degrees [0,180) range */ -#define get_theta180(v) (180./M_PI)*acos((v)[2]) +#define get_theta180(v) ((180./M_PI)*acos((v)[2])) /* get phi value in degrees, [0,360) range */ -#define get_phi360(v) ((180./M_PI)*atan2((v)[1],(v)[0]) + 180.) +#define get_phi360(v) ((180./M_PI)*atan2((v)[1],(v)[0]) + 360.*((v)[1]<0)) /* our loaded grid for this incident angle */ extern double theta_in_deg, phi_in_deg; @@ -143,6 +141,9 @@ extern int is_rev_tri(const FVECT v1, /* Find vertices completing triangles on either side of the given edge */ extern int get_triangles(RBFNODE *rbfv[2], const MIGRATION *mig); +/* Clear our BSDF representation and free memory */ +extern void clear_bsdf_rep(void); + /* Write our BSDF mesh interpolant out to the given binary stream */ extern void save_bsdf_rep(FILE *ofp); @@ -161,9 +162,6 @@ extern RBFNODE * make_rbfrep(void); /* Build our triangle mesh from recorded RBFs */ extern void build_mesh(void); - -/* Draw edge list into mig_grid array */ -extern void draw_edges(void); /* Find edge(s) for interpolating the given vector, applying symmetry */ extern int get_interp(MIGRATION *miga[3], FVECT invec);