想象一个简单的二维整数网格。它被更大的整数网格分成块。给出了相等块的尺寸。
要从全局坐标中获取块,我可以简单地将坐标除以块大小并删除小数位:chunk.x = global.x / chunksize.x
. 这仅适用于无符号数字,因为负坐标不会四舍五入到正确的方向。因此,我手动向下应用四舍五入:chunk.x = (int)floor((float)global.x / chunksize.x)
. 这工作得很好,但另一部分来了。
我还想从全局坐标计算相对于包含块的坐标。对于无符号数,我只使用了余数:local.x = global.x % chunksize.x;
. 但这不适用于负坐标,因为负块的局部坐标没有镜像。
即使在负数空间中,如何在不计算块之前计算局部坐标?