You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

矩形分区时出现Off-by-one错误,请求排查解决

问题分析与解决方案

错误根源

当textureHeight=452、PartitionSize=32时,整数除法452/32结果为14,导致partitionsY=14。但32*14=448,452-448=4,说明存在从Y=448到Y=451的区域需要第15个桶(索引14),但原代码仅创建了14个桶(索引0到13)。

处理PixelY=448的采样点时,bucketY=(int)(448/32)=14,该值超出了桶的合法索引范围,最终计算出的bucketIdx必然触发越界错误。

修复方案

将桶的数量计算改为向上取整,确保所有区域都被覆盖:

// 替换原有的partitionsX和partitionsY计算逻辑
int partitionsX = (textureWidth + PartitionSize - 1) / PartitionSize;
int partitionsY = (textureHeight + PartitionSize - 1) / PartitionSize;
// 后续创建桶的代码保持不变

原理:(数值 + 步长 -1)/步长是整数除法中实现向上取整的经典写法,只要原数值无法被步长整除,就会多创建一个桶,彻底覆盖边界区域。

验证效果

修改后,partitionsY=(452+32-1)/32=483/32=15(整数除法),会创建15个Y方向的桶,第15个桶的Y=448、H=4,刚好覆盖PixelY=448的采样点,此时bucketY=14属于合法索引范围,不会再出现越界问题。

内容的提问来源于stack exchange,提问作者user3001150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:02:52