我正在使用this wikipedia article中描述的技术来构建四叉树。
我将坐标存储在2或3维数组中。

boost::array<unsigned int, 2 /* 3 */> coord;

我需要一种方法来计算z顺序中下一个框的坐标。
它可以通过对比特进行交织,增加一个比特而不是解交织来工作,但这变得非常复杂。
我希望有一个类似于cmp_zorder(...)methon的实现方式,在不影响位的情况下也能正常工作。

最佳答案

好的,这里是“残缺的”加法算法,xy是输入和输出,并且假定交错坐标中的最低顺序位将是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/

10-12 02:07