Files

36 lines
883 B
C#
Raw Permalink Normal View History

2025-05-13 02:59:41 +03:00
using System;
using System.Collections.Generic;
using System.Text;
namespace FireTools {
public static class SpaceFillingCurve {
public static int Morton2D(int t, int sx, int sy) {
int num1;
int num2 = num1 = 1;
int num3 = t;
int num4 = sx;
int num5 = sy;
int num6 = 0;
int num7 = 0;
while (num4 > 1 || num5 > 1) {
if (num4 > 1) {
num6 += num2 * (num3 & 1);
num3 >>= 1;
num2 *= 2;
num4 >>= 1;
}
if (num5 > 1) {
num7 += num1 * (num3 & 1);
num3 >>= 1;
num1 *= 2;
num5 >>= 1;
}
}
return num7 * sx + num6;
}
}
}