}
}
CompareMorton commor = new CompareMorton();
zpps.Sort(commor);
foreach (PixelPosition_T pp in zpps)
{
double x = rect.Width / order * (pp.Col + 0.5);
double y = rect.Height / order * (pp.Row + 0.5);
Point_T pt = new Point_T(x,y);
pts.Add(pt);
}
return pts;
}
public int[] DecToBir(int dec)//十进制转二进制
{
int[] bir = new int[32];
int tag = 31;
while (dec > 0)
{
bir[tag] = dec % 2;
tag--;
dec = (int)(dec / 2);
}
return bir;
}
public int[] MortonCode(int[] bir1, int[] bir2)//求morton码
{
int[] birmor = new int[64];
for (int i = 31; i >= 0; i--)
{
birmor[2 * i + 1] = bir1[i];
birmor[2 * i] = bir2[i];
}
return birmor;
}
public int BirToDec(int[] bir)//二进制转十进制
{
int dec = 0;
for (int i = 63; i >= 0; i--)
{
dec += (int)(bir[i] * Math.Pow(2, 63 - i));
}
return dec;