using System.Runtime.CompilerServices;
using XericLibrary.Runtime.MacroLibrary;
namespace XericUI.XTable.Mapping
{
///
/// 块映射工具——将块坐标与 Z 曲线索引进行相互转换。
/// 内部调用 的 Morton Code 编码/解码方法。
/// Z 曲线索引避免纯横向排列产生的空缺问题,提升空间局部性。
///
public static class XTableBlockMapping
{
///
/// 块坐标 → Z 曲线索引 (Morton Code)
///
/// 块行号 (非负)
/// 块列号 (非负)
/// 64 位 Z 曲线索引,用作块字典的 key
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static ulong BlockCoordToZIndex(int blockRow, int blockCol)
{
return MacroCurveMapping.ZOrderEncode(blockCol, blockRow);
}
///
/// Z 曲线索引 → 块坐标
///
/// Z 曲线索引
/// 解码后的块行号
/// 解码后的块列号
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void ZIndexToBlockCoord(ulong zIndex, out int blockRow, out int blockCol)
{
MacroCurveMapping.ZOrderDecode(zIndex, out blockCol, out blockRow);
}
}
}