Morton码的计算

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 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;
}
目录
相关文章
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
550 0
|
8月前
|
人工智能 运维 数据可视化
1分钟集成DeepSeek满血版!搭建智能运维助手
1分钟集成DeepSeek满血版!搭建智能运维助手
|
9月前
|
人工智能 API
新年课程开启:手把手教学,0基础5次课程学会搭建无限拓展的AI应用
你是否想过自己也能动手搭建一个AI应用?现在,这个目标触手可及!
222 9
|
9月前
|
存储 SQL 监控
Dynamic Table快速入门
本次分享的主题是Dynamic Table快速入门,由Hologres PD 梅酱分享。今天的分享分为三个部分。首先,第一部分为Table的基本概念;第二部分进行Table的实操;第三部分为一些使用Table的建议和最佳实践。
327 12
|
11月前
|
存储 NoSQL 关系型数据库
【赵渝强老师】MongoDB的存储结构
MongoDB 是一个可移植的 NoSQL 数据库,支持跨平台运行。其逻辑存储结构包括数据库、集合和文档,而物理存储结构则由命名空间文件、数据文件和日志文件组成。视频讲解和示意图进一步解释了这些概念。
325 5
|
供应链 监控 数据挖掘
ERP系统中的供应商协作与供应商评估解析
【7月更文挑战第25天】 ERP系统中的供应商协作与供应商评估解析
499 1
|
12月前
|
消息中间件 存储 NoSQL
django的gunicorn的异步任务执行
django的gunicorn的异步任务执行
172 4
|
自然语言处理 数据安全/隐私保护
整合 200 多项相关研究,大模型终生学习最新综述来了
【9月更文挑战第26天】近年来,大型语言模型(LLMs)在自然语言处理、智能问答及内容生成等领域广泛应用。面对不断变化的数据、任务和用户偏好,LLMs需具备适应能力。传统静态数据集训练方式难以满足需求,因此提出了“终身学习”方法,使模型持续学习新知识并避免遗忘旧知识。最新综述文章整合200多项研究,将终身学习分为内部知识(连续预训练和微调)与外部知识(基于检索和工具)两大类,涵盖12种应用场景,探讨了模型扩展和数据选择等新兴技术。然而,终身学习也面临计算资源、知识冲突及数据安全等挑战。
338 6
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
437 24
|
机器学习/深度学习 人工智能 自然语言处理
OpenAI 推出 GPT-4o,免费向所有人提供GPT-4级别的AI ,可以实时对音频、视觉和文本进行推理,附使用详细指南
GPT-4o不仅提供与GPT-4同等程度的模型能力,推理速度还更快,还能提供同时理解文本、图像、音频等内容的多模态能力,无论你是付费用户,还是免费用户,都能通过它体验GPT-4了
747 1

热门文章

最新文章