📄 vox_traverse.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 + -