小编Daw*_*ski的帖子

2D morton代码编码/解码64位

如何编码/解码morton代码(z-order)给定[x,y]为32位无符号整数,产生64位morton代码,反之亦然?我确实有xy2d和d2xy,但仅适用于16位宽的坐标,产生32位莫顿数.在网上搜索了很多,但找不到.请帮忙.

c 64-bit z-order-curve

5
推荐指数
3
解决办法
2858
查看次数

2d Morton代码64位解码功能

第一个函数将[x,y]编码为64位宽的Morton代码,其中x和y是32位宽整数,使用Binary Magic Numbers的Interleave位.

反向功能是什么?

void xy2d_morton_64bits(uint64_t x, uint64_t y, uint64_t *d)
{

    x = (x | (x << 16)) & 0x0000FFFF0000FFFF;
    x = (x | (x << 8)) & 0x00FF00FF00FF00FF;
    x = (x | (x << 4)) & 0x0F0F0F0F0F0F0F0F;
    x = (x | (x << 2)) & 0x3333333333333333;
    x = (x | (x << 1)) & 0x5555555555555555;

    y = (y | (y << 16)) & 0x0000FFFF0000FFFF;
    y = (y | (y << 8)) & 0x00FF00FF00FF00FF;
    y = (y | (y …
Run Code Online (Sandbox Code Playgroud)

c 64-bit z-order-curve

5
推荐指数
1
解决办法
210
查看次数

2D Morton 解码功能 64 位

第一个函数将 [x, y] 编码为 64 位宽 Morton 代码,其中 x 和 y 是使用二进制幻数交错位的 32 位宽整数。

反向函数是什么?

void xy2d_morton_64bits(uint64_t x, uint64_t y, uint64_t *d)
{
    x = (x | (x << 16)) & 0x0000FFFF0000FFFF;
    x = (x | (x << 8)) & 0x00FF00FF00FF00FF;   
    x = (x | (x << 4)) & 0x0F0F0F0F0F0F0F0F; 
    x = (x | (x << 2)) & 0x3333333333333333;
    x = (x | (x << 1)) & 0x5555555555555555;

    y = (y | (y << 16)) & 0x0000FFFF0000FFFF;
    y = (y …
Run Code Online (Sandbox Code Playgroud)

c z-order-curve

3
推荐指数
1
解决办法
592
查看次数

标签 统计

c ×3

z-order-curve ×3

64-bit ×2