Morton码的计算

简介: Morton码是对栅格格网进行编码的一种算法,在Google中搜索Morton,搜索结果第一位是Wikipedia的Z-order Curve,这是因为Morton码编码结果展现为一种Z形的填充曲线。下面简要说一下如何计算四进制和十进制的Morton码。

Morton码的计算

Morton码是对栅格格网进行编码的一种算法,在Google中搜索Morton,搜索结果第一位是Wikipedia的Z-order Curve,这是因为Morton码编码结果展现为一种Z形的填充曲线。下面简要说一下如何计算四进制和十进制的Morton码。

截屏2023-09-08 15.53.12.png

四进制Morton码计算

四进制编码对左上,右上,左下,右下的顺序对四个格网单元分布编码为0,1,2,3。

其计算方式为:二进制的行列号$r$、$l$(从第0行0列开始),四进制编码$M=2*l+ r$;那么这里就是:第5行(101)第7列(111):$M=2*101+111=313$(313对应的十进制是55)

十进制Morton码计算

十进制的编码规则:首先,行列号转为二进制(从第0行0列开始);然后行列号交叉排列;最后将二进制结果转为十进制。十进制Morton编码是按左上,右上,左下,右下的顺序从0开始对每个格网进行自然编码的。

对于第5行(101)第7列(111),交叉排列得到110111,然后转为十进制就是55。和四进制的编码结果是一样的。

下面给出十进制Morton码的C++实现:

#include <iostream>

using std::cout;

int main() {
    uint32_t row = 5;
    uint32_t col = 7;
    uint64_t morton = 0;

    for (int i = 0; i < sizeof(row) * 8; i++) {
        morton |= (row & (uint64_t)1 << i) << i | (col & (uint64_t)1 << i) << (i + 1);
    }
    cout << morton << '\n';
    return 0;
}
目录
相关文章
|
SQL 缓存 Java
Mybatis-plus缓存机制
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,提供了更便捷的CRUD操作和其他功能。与MyBatis相比,MyBatis-Plus并没有引入自己的缓存机制,而是直接使用了MyBatis的缓存机制。 在MyBatis中,缓存分为一级缓存和二级缓存。 1. 一级缓存:一级缓存是SqlSession级别的缓存,它默认是开启的。当查询操作执行时,查询的结果会被缓存在SqlSession的内部数据结构中。如果后续再次执行相同的查询,MyBatis会先检查一级缓存中是否存在结果,如果存在则直接返回缓存的结果,而不会再次执行SQL语句。一级缓存的生命周期与SqlSession相同,
1642 0
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
687 0
|
12月前
|
人工智能 运维 数据可视化
1分钟集成DeepSeek满血版!搭建智能运维助手
1分钟集成DeepSeek满血版!搭建智能运维助手
|
存储 关系型数据库 MySQL
为什么MySQL索引使用B+树而不用hash表和B树
支持范围查询:B+树索引在数据结构上有序排列,可以有效支持范围查询,例如大于、小于、区间查询等操作。而哈希表无法支持范围查询,只能进行精确查找,而B树在范围查询操作时性能相对较低。
741 0
|
存储 定位技术 芯片
为何手机gps定位需要流量,而车载不需要?
为何手机gps定位需要流量,而车载不需要?
819 0
为何手机gps定位需要流量,而车载不需要?
|
人工智能 自然语言处理 安全
ChatGPT-5 最快将于 6 月发布
OpenAI计划推出ChatGPT-5,预计6月发布,企业客户已提前体验其增强的性能与定制化功能。模型将经过密集训练和严格安全测试,提升语言理解和交互的自然度。GPT-5将影响多个行业,带来商业机遇,同时引发关于伦理和安全的讨论。其在教育和医疗领域的应用前景广阔,但用户仍需注意信息验证。
1283 0
ChatGPT-5 最快将于 6 月发布
|
算法
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
递归算法:二叉树前序、中序、后序遍历解析与递归思想深度剖析
479 0
|
C# Windows
C#安装“Windows 窗体应用(.NET Framework)”
C#安装“Windows 窗体应用(.NET Framework)”
775 0
|
机器学习/深度学习 算法
【MATLAB】EMD_LSTM神经网络时序预测算法
【MATLAB】EMD_LSTM神经网络时序预测算法
377 0
|
Java Maven
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法
1425 1
pom.xml出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法