def dec2bin(n, count=8): """returns the binary of integer n, using count number of digits""" return [int((n >> y) & 1) for y in range(count-1, -1, -1)] def dec2binAry(x, bits): mask = np.expand_dims(2**np.arange(bits-1,-1,-1),1).T return (np.bitwise_and(np.expand_dims(x,1), mask)!=0).astype(int) def bin2decAry(x): if(x.ndim==1): x = np.expand_dims(x,0) bits = x.shape[1] mask = np.expand_dims(2**np.arange(bits-1,-1,-1),1) return x.dot(mask).astype(int) def Morton(A): A = A.astype(int) n = np.ceil(np.log2(np.max(A)+1)).astype(int) x = dec2binAry(A[:,0],n) y = dec2binAry(A[:,1],n) z = dec2binAry(A[:,2],n) m = np.stack((x,y,z),2) m = np.transpose(m,(0, 2, 1)) mcode = np.reshape(m,(A.shape[0],3*n),order='F') return mcode
时间: 2024-01-02 20:03:08 浏览: 158
这是一些用于二进制转换和Morton编码的函数。以下是每个函数的功能说明:
1. `dec2bin(n, count=8)`: 将整数n转换为二进制表示,返回一个包含count个二进制位的列表。
2. `dec2binAry(x, bits)`: 将整数x转换为bits位的二进制数组。使用了位掩码和按位与操作来实现。
3. `bin2decAry(x)`: 将二进制数组x转换为对应的整数。使用了位权重和点积运算来实现。
4. `Morton(A)`: 对输入的三维坐标数组A进行Morton编码。首先确定编码所需的位数n,然后将每个坐标分别转换为n位的二进制数组。最后将这些二进制数组按照一定顺序组合成Morton编码。
这些函数可以用于处理二进制转换和Morton编码的任务。
阅读全文