⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vox_traverse.c

📁 [Game.Programming].Academic - Graphics Gems (6 books source code)
💻 C
字号:
/* * C code from the article * "Voxel Traversal along a 3D Line" * by Daniel Cohen, danny@bengus.bgu.ac.il * in "Graphics Gems IV", Academic Press, 1994 *//* The following C subroutine visits all voxels along the linesegment from (x, y, z) and (x + dx, y + dy, z + dz) */Line ( x, y, z, dx, dy, dz )int x, y, z, dx, dy, dz;{    int n, sx, sy, sz, exy, exz, ezy, ax, ay, az, bx, by, bz;    sx = sgn(dx);  sy = sgn(dy);  sz = sgn(dz);    ax = abs(dx);  ay = abs(dy);  az = abs(dz);    bx = 2*ax;	   by = 2*ay;	  bz = 2*az;    exy = ay-ax;   exz = az-ax;	  ezy = ay-az;    n = ax+ay+az;    while ( n-- ) {	VisitVoxel ( x, y, z );	if ( exy < 0 ) {	    if ( exz < 0 ) {		x += sx;		exy += by; exz += bz;	    }	    else  {		z += sz;		exz -= bx; ezy += by;	    }	}	else {	    if ( ezy < 0 ) {		z += sz;		exz -= bx; ezy += by;	    }	    else  {		y += sy;		exy -= bx; ezy -= bz;	    }	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -