Walkin' on grid


void GridWalk(int x0,int y0,int z0,int x1,int y1,int z1)
{
 int dx,dy,dz,sx,sy,sz,x,y,z;
 unsigned limx,limy,limz,min,steps; /* for dx, dy, dz<255 */

 sx=1; dx=x1-x0; if (dx<0) { dx=-dx;sx=-1; }
 sy=1; dy=y1-y0; if (dy<0) { dy=-dy;sy=-1; }
 sz=1; dz=z1-z0; if (dz<0) { dz=-dz;sz=-1; }
 if (dx<dy && dx<dz) { min=dx; steps=dy*dz; }
  else if (dy<dx && dy<dz) { min=dy; steps=dx*dz; }
    else { min=dz; steps=dx*dz; }
 limx=dy*dz;limy=dx*dz;limz=dx*dy;
 x=x0;y=y0;z=z0;xd=0;yd=0;zd=0;
 steps++; /* for process x0,y0,z0 too */
 for(;steps--;)
 {
  ProcessGridNode(x,y,z);
  xd+=min;yd+=min;zd+=min;
  while (xd>=limx) { x+=sx;xd-=limx; }
  while (yd>=limy) { y+=sy;yd-=limy; }
  while (zd>=limz) { z+=sz;zd-=limz; }
 }
}

If you have questions, ask me.

---------------------------------------
Be optimized!
tigra
mail me
icq 429048706

Hosted by uCoz