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); } } }