home *** CD-ROM | disk | FTP | other *** search
- #include "ray.h"
-
- dindex(v)
- struct vector v;
- {double x,y,z,ax,ay,az;
- x=v.x;
- y=v.y;
- z=v.z;
- ax=(x>0)?x:-x;
- ay=(y>0)?y:-y;
- az=(z>0)?z:-z;
- if(ax>=ay&&ax>=az)
- if(x>0)
- return index2(y,z,ax);
- else
- return index2(y,z,ax)+(NRECTS*NRECTS);
- else if(ay>=ax&&ay>=az)
- if(y>0)
- return index2(z,x,ay)+(2*NRECTS*NRECTS);
- else
- return index2(z,x,ay)+(3*NRECTS*NRECTS);
- else
- if(z>0)
- return index2(x,y,az)+(4*NRECTS*NRECTS);
- else
- return index2(x,y,az)+(5*NRECTS*NRECTS);
- }
-
- index2(x,y,r)
- double r,x,y;
- {register int m,n;
- m=(r+x)/(r*2)*NRECTS;
- if(m==NRECTS)
- m=NRECTS-1;
- n=(r+y)/(r*2)*NRECTS;
- if(n==NRECTS)
- n=NRECTS-1;
- return n*NRECTS+m;
- }
-