如何修正一维索引转3D坐标的函数?Python CPU体素光线追踪
解决方案
修正后的index_vec3函数如下,仅需调整Y轴的计算逻辑即可:
def index_vec3(i: int, width: int, height: int): x = i % width y = (i // width) % height z = i // (width * height) return x, y, z
逻辑说明
- X轴:保留原逻辑
i % width,每width个索引X值会从0到width-1循环,延续2D版本的正确映射规则。 - Y轴:先通过
i // width得到X轴循环后的累计计数,再对height取模,确保每个Z层内的Y值都会从0重新开始计数,避免跨Z层后持续递增。 - Z轴:保留原逻辑
i // (width * height),每width*height个索引对应一个完整的XY平面,此时Z值递增1。
验证示例
以4x4x4立方体为例,遍历range(0,64)时,i=16会返回(0,0,1),i=17返回(1,0,1),以此类推,每个Z层的Y值都会从0到3循环,完全符合空间坐标映射需求。
内容的提问来源于stack exchange,提问作者MirceaKitsune
相关产品推荐
相关产品推荐

