ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
morton.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2026 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
#include <cstdint>
7
8
namespace
reusex::geometry
{
9
14
inline
uint32_t
morton_expand3
(uint32_t v) {
15
v &= 0x000003ffu;
16
v = (v | (v << 16u)) & 0x030000ffu;
17
v = (v | (v << 8u)) & 0x0300f00fu;
18
v = (v | (v << 4u)) & 0x030c30c3u;
19
v = (v | (v << 2u)) & 0x09249249u;
20
return
v;
21
}
22
28
inline
uint32_t
morton_reverse_bits30
(uint32_t v) {
29
v = ((v >> 1u) & 0x55555555u) | ((v & 0x55555555u) << 1u);
30
v = ((v >> 2u) & 0x33333333u) | ((v & 0x33333333u) << 2u);
31
v = ((v >> 4u) & 0x0f0f0f0fu) | ((v & 0x0f0f0f0fu) << 4u);
32
v = ((v >> 8u) & 0x00ff00ffu) | ((v & 0x00ff00ffu) << 8u);
33
v = (v >> 16u) | (v << 16u);
34
return
v >> 2u;
35
}
36
37
}
// namespace reusex::geometry
reusex::geometry
Definition
visual_observer.hpp:33
reusex::geometry::morton_reverse_bits30
uint32_t morton_reverse_bits30(uint32_t v)
Reverse the 30 significant bits of a Morton code.
Definition
morton.hpp:28
reusex::geometry::morton_expand3
uint32_t morton_expand3(uint32_t v)
Spread one 10-bit value into a 30-bit word (bit k → position 3k).
Definition
morton.hpp:14
libs
reusex
include
geometry
morton.hpp
Generated by
1.18.0