--- ray/src/hd/rhd_qtree.c 1997/12/05 16:22:49 3.12 +++ ray/src/hd/rhd_qtree.c 1997/12/24 10:50:49 3.13 @@ -203,96 +203,6 @@ int pct; } -#define DCSCALE 11585.2 /* (1<<13)*sqrt(2) */ -#define FXNEG 01 -#define FYNEG 02 -#define FZNEG 04 -#define F1X 010 -#define F2Z 020 -#define F1SFT 5 -#define F2SFT 18 -#define FMASK 0x1fff - -static int4 -encodedir(dv) /* encode a normalized direction vector */ -FVECT dv; -{ - register int4 dc = 0; - int cd[3], cm; - register int i; - - for (i = 0; i < 3; i++) - if (dv[i] < 0.) { - cd[i] = dv[i] * -DCSCALE; - dc |= 1<>F1SFT & FMASK)+.5)/DCSCALE; - d2 = ((dc>>F2SFT & FMASK)+.5)/DCSCALE; - der = sqrt(1. - d1*d1 - d2*d2); - if (dc & F1X) { - dv[0] = d1; - if (dc & F2Z) { dv[1] = der; dv[2] = d2; } - else { dv[1] = d2; dv[2] = der; } - } else { - dv[1] = d1; - if (dc & F2Z) { dv[0] = der; dv[2] = d2; } - else { dv[0] = d2; dv[2] = der; } - } - if (dc & FXNEG) dv[0] = -dv[0]; - if (dc & FYNEG) dv[1] = -dv[1]; - if (dc & FZNEG) dv[2] = -dv[2]; -} - - -static double -dir2diff(dc1, dc2) /* relative radians^2 between directions */ -int4 dc1, dc2; -{ - FVECT v1, v2; - - decodedir(v1, dc1); - decodedir(v2, dc2); - - return(2. - 2.*DOT(v1,v2)); -} - - -static double -fdir2diff(dc1, v2) /* relative radians^2 between directions */ -int4 dc1; -register FVECT v2; -{ - FVECT v1; - - decodedir(v1, dc1); - - return(2. - 2.*DOT(v1,v2)); -} - - int qtFindLeaf(x, y) /* find closest leaf to (x,y) */ int x, y;