我正在使用this wikipedia article中描述的技术来构建四叉树。
我将坐标存储在2或3维数组中。
boost::array<unsigned int, 2 /* 3 */> coord;
我需要一种方法来计算z顺序中下一个框的坐标。
它可以通过对比特进行交织,增加一个比特而不是解交织来工作,但这变得非常复杂。
我希望有一个类似于cmp_zorder(...)methon的实现方式,在不影响位的情况下也能正常工作。
最佳答案
好的,这里是“残缺的”加法算法,x
和y
是输入和输出,并且假定交错坐标中的最低顺序位将是x
(与the wikipedia article相同)
int carry = 1;
do
{
int newcarry = x & carry;
x ^= carry;
carry = newcarry;
newcarry = (y & carry) << 1;
y ^= carry;
carry = newcarry;
} while (carry != 0);
我做了测试,但是只有一点点。
关于c++ - z阶曲线的下一个迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10745733/