23 x = (x ^ (x << 8)) & 0x00ff00ff;
24 x = (x ^ (x << 4)) & 0x0f0f0f0f;
25 x = (x ^ (x << 2)) & 0x33333333;
26 x = (x ^ (x << 1)) & 0x55555555;
34 x = (x ^ (x << 16)) & 0xff0000ff;
35 x = (x ^ (x << 8)) & 0x0300f00f;
36 x = (x ^ (x << 4)) & 0x030c30c3;
37 x = (x ^ (x << 2)) & 0x09249249;
44 x = (x ^ (x >> 1)) & 0x33333333;
45 x = (x ^ (x >> 2)) & 0x0f0f0f0f;
46 x = (x ^ (x >> 4)) & 0x00ff00ff;
47 x = (x ^ (x >> 8)) & 0x0000ffff;
55 x = (x ^ (x >> 2)) & 0x030c30c3;
56 x = (x ^ (x >> 4)) & 0x0300f00f;
57 x = (x ^ (x >> 8)) & 0xff0000ff;
58 x = (x ^ (x >> 16)) & 0x000003ff;
87 static uint32_t
Neighbor3D(uint32_t key, uint32_t dx, uint32_t dy, uint32_t dz)
96 static uint32_t
NegNeighbor3D(uint32_t key, int32_t dx, int32_t dy, int32_t dz)
101 if (x + dx < 0 || y + dy < 0 || z + dz < 0)
102 return std::numeric_limits<uint32_t>::max();
static uint32_t Compact1By1(uint32_t x)
Definition: MortonOrder.h:41
class for sorting in Morton order (z-order as space filling curve)
Definition: MortonOrder.h:11
static uint32_t DecodeMorton3Y(uint32_t code)
Definition: MortonOrder.h:77
static uint32_t Neighbor3D(uint32_t key, uint32_t dx, uint32_t dy, uint32_t dz)
calculates neighbor of key shifted by +x+y+z
Definition: MortonOrder.h:87
static uint32_t Compact1By2(uint32_t x)
Definition: MortonOrder.h:52
static uint32_t DecodeMorton3Z(uint32_t code)
Definition: MortonOrder.h:82
static uint32_t DecodeMorton2Y(uint32_t code)
Definition: MortonOrder.h:67
static uint32_t DecodeMorton3X(uint32_t code)
Definition: MortonOrder.h:72
static uint32_t Part1By1(uint32_t x)
Definition: MortonOrder.h:20
static uint32_t NegNeighbor3D(uint32_t key, int32_t dx, int32_t dy, int32_t dz)
calculates neighbor of key shifted by +x+y+z
Definition: MortonOrder.h:96
Definition: Exception.h:6
static uint32_t EncodeMorton3D(uint32_t x, uint32_t y, uint32_t z)
Definition: MortonOrder.h:14
static uint32_t Part1By2(uint32_t x)
Definition: MortonOrder.h:31
static uint32_t DecodeMorton2X(uint32_t code)
Definition: MortonOrder.h:62