六边形棋盘格(Hexagonal Grids)的坐标
1. 二位坐标转六边形棋盘的方式
1-1这是“波动式”的
这种就是把【方格子坐标】“左右各错开半个格子”做到的
具体来说有如下几种情况
具体到庙算平台上,是很巧妙的用一个4位整数,前两位为x、后两位为y来进行表示
附上计算距离的代码
def get_hex_distance(x1, y1, x2, y2):"""计算六边形网格中两个点之间的曼哈顿距离。假设使用奇数行偏移坐标系(odd-r offset)。"""dx = x2 - x1dy = y2 - y1return max(abs(dx), abs(dy), abs(dx + dy))
有多种计算方式的话可以用以下代码测试【可以对照着上面的图一个个格子数需要走几步】
def get_hex_distance(x1, y1, x2, y2):"""计算六边形网格中两个点之间的曼哈顿距离。假设使用奇数行偏移坐标系(odd-r offset)。"""dx = x2 - x1dy = y2 - y1return max(abs(dx), abs(dy), abs(dx + dy))def get_grid_distance(row1, col1, row2, col2): # TODO: not sure"""计算两个坐标间距离:param pos1::param pos2::return:"""'''转换为立方坐标'''q1 = col1 - (row1 - (row1 & 1)) // 2r1 = row1s1 = 0 - q1 - r1q2 = col2 - (row2 - (row2 & 1)) // 2r2 = row2s2 = 0 - q2 - r2'''输出距离为曼哈顿距离的1/2'''return (abs(q1 - q2) + abs(r1 - r2) + abs(s1 - s2)) // 2def test_hex_distance():"""测试 get_hex_distance 和 get_grid_distance 函数的正确性。"""# 测试用例:六边形网格中的点及其预期距离test_cases = [# 格式: (x1, y1, x2, y2, expected_distance)((0, 0, 0, 0), 0), # 同一个点((0, 0, 1, 0), 1), # 相邻点((0, 0, 1, 1), 2), # ((0, 0, 2, 0), 2), # 两步距离((0, 0, 2, 2), 4), # ((0, 0, 3, 0), 3), # 三步距离((0, 0, 3, 3), 6), # ((1, 1, 4, 4), 6), # ]print("Testing get_hex_distance:")for (x1, y1, x2, y2), expected in test_cases:try:result = get_hex_distance(x1, y1, x2, y2)print(f"get_hex_distance({x1}, {y1}, {x2}, {y2}) = {result}, expected = {expected}")if result != expected:raise ValueError(f"Test failed for get_hex_distance({x1}, {y1}, {x2}, {y2})")except Exception as e:print(f"Test failed: {result} {(x1, y1, x2, y2, expected, 'get_hex_distance')}")print("\nTesting get_grid_distance:")for (row1, col1, row2, col2), expected in test_cases:try:result = get_grid_distance(row1, col1, row2, col2)print(f"get_grid_distance({row1}, {col1}, {row2}, {col2}) = {result}, expected = {expected}")if result != expected:raise ValueError(f"Test failed for get_grid_distance({row1}, {col1}, {row2}, {col2})")except Exception as e:print(f"Test failed: {result} {(row1, col1, row2, col2, expected, 'get_grid_distance')}")if __name__ == "__main__":test_hex_distance()
1-2这是斜的
此外还有几种,可以看看外国Red Blob Games的博客(链接在最下方)
2.三维立方体转三维方式
用三个坐标来唯一确定一个格子,这样也更加直观,也是一种方式
参考资料:
6边形网格地图,格子间的距离计算 | indienova 独立游戏https://indienova.com/u/npc233/blogread/11298
Hexagonal Gridshttps://www.redblobgames.com/grids/hexagons/
相关文章:
六边形棋盘格(Hexagonal Grids)的坐标
1. 二位坐标转六边形棋盘的方式 1-1这是“波动式”的 这种就是把【方格子坐标】“左右各错开半个格子”做到的 具体来说有如下几种情况 具体到庙算平台上,是很巧妙的用一个4位整数,前两位为x、后两位为y来进行表示 附上计算距离的代码 def get_hex_di…...
李宏毅NLP-5-RNNTNeural TransducerMoChA
RNN Transducer(RNN-T) 循环神经对齐器(RNA,Recurrent Neural Aligner)对CTC解码器的改进,具体内容如下: “RNA”,全称 “Recurrent Neural Aligner”,引用来自 [Sak, et al., INTERSPEECH’17…...
GPT-SoVITS 使用指南
一、简介 TTS(Text-to-Speech,文本转语音):是一种将文字转换为自然语音的技术,通过算法生成人类可听的语音输出,广泛应用于语音助手、无障碍服务、导航系统等场景。类似的还有SVC(歌声转换&…...
洛谷的几道题
P1000 超级玛丽游戏 # P1000 超级玛丽游戏 ## 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用。 建议完成本题目后继续尝试 [P1001](/problem/P1001)、[P1008](/problem/P1008)。 另外强烈推荐[新用户必读帖](/discuss/show/241461)。 ## 题目描述 …...
利用yakit充实渗透字典
前言 在渗透侧测试结束,在我们的历史记录中会保存过程中的数据包。在其中有些特征,比如API、参数,可以活用于下次的渗透。 比如 fuzz变量,fuzz隐藏API…… 但是我们一个一个提取很麻烦,可以使用yakit的插件…...
精益数据分析(4/126):开启数据驱动的创业之旅
精益数据分析(4/126):开启数据驱动的创业之旅 在创业的浪潮中,我们都怀揣着梦想,渴望找到那条通往成功的道路。作为一名在创业和数据分析领域摸爬滚打多年的“老兵”,我深知其中的艰辛与挑战。今天&#x…...
机器学习误差图绘
机器学习误差图绘制 绘图类 # Define the ModelComparisonPlot class class ModelComparisonPlot:def __init__(self, model_name):self.model_name model_namedef plot_comparison(self, y_val, y_pred, mse, mae, r2):# Create a figure with two subplotsfig, axes plt.…...
企业级RAG选择难题:数据方案的关键博弈
企业级RAG选择难题:数据方案的关键博弈 向量数据库:高效但易失语境图数据库与知识图谱:关系网络的力量企业级RAG数据方案的最佳实践 智能时代,企业数据每日剧增。员工寻找答案的效率直接影响工作流程,StackOverflow调查…...
JNI 学习
1. JNI 不属于 C,而是 JDK 的 日志失效,可以 adb kill-server adb kill-serveradb start-server 使用 jni final和 private变量都能修改...
PyTorch :优化的张量库
PyTorch 是一个基于 Python 的开源机器学习框架,由 Facebook 的 AI 研究团队(现 Meta AI)于 2016 年推出。它专为深度学习设计,但也可用于传统的机器学习任务。PyTorch 的核心优势在于灵活性、动态计算图和易…...
DevOps 进阶指南:如何让工作流更丝滑?
DevOps 进阶指南:如何让工作流更丝滑? 引言 在 DevOps 世界里,我们追求的是高效、稳定、自动化。但现实总是充满挑战:代码部署失败、CI/CD 过程卡顿、环境不一致……这些痛点让开发和运维团队疲惫不堪。今天,我就来聊聊如何优化 DevOps 工作流,通过实战案例和代码示例,…...
BT-Basic函数之首字母XY
BT-Basic函数之首字母XY 文章目录 BT-Basic函数之首字母XYXxd__ commands Yyes X xd__ commands 当使用外部设备时,开发人员需要在测试计划中添加适当的命令来控制这些设备。下表显示了一个典型的命令序列。 典型的命令序列 NO命令描述1xdload将DLL加载到内存中…...
6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写
1)在功能包下新建msg目录,在msg目录下新建Person.msg,在Person.msg文件写入: string name uint16 age float64 height 2)修改配置文件 2.1) 功能包下package.xml文件修改 <build_depend>message_generation</build_depend><exec_depend…...
Fastdata极数:全球AR/VR行业发展趋势报告2025
科技的快速发展孕育了一个新的数字前沿领域,那就是虚拟宇宙,也就是我们谈论的元宇宙(Metaverse),虚拟宇宙最初构思于尼尔斯蒂芬森的科幻小说《雪崩》中,小说中虚拟宇宙由虚拟人物居住,并以数字方…...
背包 DP 详解
文章目录 背包DP01 背包完全背包多重背包二进制优化单调队列优化 小结 背包DP 背包 DP,说白了就是往一个背包里扔东西,求最后的最大价值是多少,一般分为了三种:01 背包、完全背包和多重背包。而 01 背包则是一切的基础。 01 背包…...
深入剖析 HashMap:内部结构与性能优化
深入剖析 HashMap:内部结构与性能优化 引言 HashMap 是 Java 集合框架中的核心类,广泛应用于数据存储和检索场景。本文将深入剖析其内部结构,包括数组、链表和红黑树的转换机制,帮助读者理解其工作原理和性能优化策略。 1. Hash…...
数据从辅存调入主存,页表中一定存在
在虚拟内存系统中,数据从辅存调入主存时,页表中一定存在对应的页表项,但页表项的「存在状态」会发生变化。以下是详细分析: 关键逻辑 页表的作用 页表是虚拟内存的核心数据结构,记录了虚拟地址到物理地址的映射关系…...
藏品馆管理系统
藏品馆管理系统 项目简介 这是一个基于 PHP 开发的藏品馆管理系统,实现了藏品管理、用户管理等功能。 藏品馆管理系统 系统架构 开发语言:PHP数据库:MySQL前端框架:BootstrapJavaScript 库:jQuery 目录结构 book/…...
力扣算法ing(60 / 100)
4.19 回溯合集—93复原ip地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址&…...
时态--06--现在完成時
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 现在完成時1.语法1.肯定句2.否定句3.疑问句4.have been/gone to5.现在分词 practice 现在完成時 1.语法 1.肯定句 2.否定句 3.疑问句 4.have been/gone to 5.现在分…...
Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
在Java中,锁是实现多线程同步的核心机制。不同的锁适用于不同的场景,理解其实现原理和使用方法对优化性能和避免并发问题至关重要。 一、隐式锁:synchronized 关键字 实现原理 基于对象监视器(Monitor):每…...
【教程】DVWA靶场渗透
【教程】DVWA靶场渗透 备注一、环境搭建二、弱口令(Brute Force)三、命令注入(Command Injection)四、CSRF(Cross Site Request Forgery)五、文件包含(File Inclusion)六、文件上传&…...
23种设计模式-创建型模式之原型模式(Java版本)
Java 原型模式(Prototype Pattern)详解 🧬 什么是原型模式? 原型模式用于通过复制已有对象的方式创建新对象,而不是通过 new 关键字重新创建。 核心是:通过克隆(clone)已有对象&a…...
【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件common.py解读
【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件common.py解读 文章目录 【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件common.py解读前言autopad函数Conv类__init__成员函数forward成员函数forward_fuse成员函数 Bottleneck类__init__成员…...
PDF转excel+json ,vue3+SpringBoot在线演示+附带源码
在线演示地址:Vite Vuehttp://www.xpclm.online/pdf-h5 源码gitee前后端地址: javapdfexcel: javaPDF转excelhttps://gitee.com/gaiya001/javapdfexcel.git 盖亚/vuepdfhttps://gitee.com/gaiya001/vuepdf.git 后续会推出 前端版本跟nestjs版本 识别复…...
LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
LeetCode 热题 100_乘积最大子数组(88_152) 题目描述:输入输出样例:题解:解题思路:思路一(暴力破解法(双重循环)):思路二(动态规划): …...
Nvidia显卡架构演进
1 简介 显示卡(英语:Display Card)简称显卡,也称图形卡(Graphics Card),是个人电脑上以图形处理器(GPU)为核心的扩展卡,用途是提供中央处理器以外的微处理器帮…...
TCP/IP、UDP、HTTP、HTTPS、WebSocket 一文讲解
在当今互联网世界中,数据通信是所有应用运行的基础。无论是打开网页、发送消息还是视频通话,背后都依赖于各种网络协议的协同工作。其中,TCP/IP、UDP、HTTP、HTTPS 和 WebSocket 是最为核心的几种协议。本文将围绕它们的概念、特性和适用场景…...
[密码学基础]密码学发展简史:从古典艺术到量子安全的演进
密码学发展简史:从古典艺术到量子安全的演进 密码学作为信息安全的基石,其发展贯穿人类文明史,从最初的文字游戏到量子时代的数学博弈,每一次变革都深刻影响着政治、军事、科技乃至日常生活。本文将以技术演进为主线,…...
包含物体obj与相机camera的 代数几何代码解释
反余弦函数的值域在 [0, pi] 斜体样式 cam_pose self._cameras[hand_realsense].camera.get_model_matrix() # cam2world# 物体到相机的向量 obj_tcp_vec cam_pose[:3, 3] - self.obj_pose.p dist np.linalg.norm(obj_tcp_vec) # 物体位姿的旋转矩阵 obj_rot_mat self.ob…...
【C++算法】65.栈_删除字符中的所有相邻重复项
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 1047. 删除字符串中的所有相邻重复项 题目描述: 解法 利用string模拟栈 元素依次进栈,当进栈元素和栈顶元素一样的时候,就弹出栈顶字符…...
【java实现+4种变体完整例子】排序算法中【插入排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是插入排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、插入排序基础实现 原理 将元素逐个插入到已排序序列的合适位置,逐步构建有序序列。 代码示例 public class InsertionSort {void…...
神经网络的数学之旅:从输入到反向传播
目录 神经网络简介神经元激活函数神经网络 神经网络的工作过程前向传播(forward)反向传播(backward)训练神经网络 神经网络简介 神经元 在深度学习中,必须要说的就是神经⽹络,或者说是⼈⼯神经⽹络&#…...
软件测试的页面交互标准:怎样有效提高易用性
当用户遇到"反人类"设计时 "这个按钮怎么点不了?"、"错误提示完全看不懂"、"我输入的内容去哪了?"——这些用户抱怨背后,都指向同一个问题:页面交互的易用性缺陷。作为软件测试工程师&a…...
Linux419 三次握手四次挥手抓包 wireshark
还是Notfound 没连接 可能我在/home 准备配置静态IP vim ctrlr 撤销 u撤销 配置成功 准备关闭防火墙 准备配置 YUM源 df -h 未看到sr0文件 准备排查 准备挂载 还是没连接 计划重启 有了 不重启了 挂载准备 修改配置文件准备 准备清理缓存 ok 重新修改配…...
玩转Docker | 使用Docker部署tududi任务管理工具
玩转Docker | 使用Docker部署tududi任务管理工具 前言一、tududi介绍Tududi简介核心功能特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署tududi服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问tududi服务访问tududi首页登录tu…...
ueditorplus编辑器已增加AI智能
之前功能请参考:https://www.geh3408.top/blog/76 下载:https://gitee.com/mo3408/ueditorplus 注意:key值需要单独获取,默认为DeepSeek,默认key有限制,请更换为自己的。 演示地址:https://www.geh3408.top/ueditorplus/dist 更多体验:ueditorplus编辑器已增加AI智…...
深度学习数据预处理:Dataset类的全面解析与实战指南
前言 在深度学习项目中,数据预处理是模型训练前至关重要的一环。一个高效、灵活的数据预处理流程不仅能提升模型性能,还能大大加快开发效率。本文将深入探讨PyTorch中的Dataset类,介绍数据预处理的常见技巧,并通过实战示例展示如何…...
【机器学习-周总结】-第4周
以下是本周学习内容的整理总结,从技术学习、实战应用到科研辅助技能三个方面归纳: 文章目录 📘 一、技术学习模块:TCN 基础知识与结构理解🔹 博客1:【时序预测05】– TCN(Temporal Convolutiona…...
高可靠 ZIP 压缩方案兼容 Office、PDF、TXT 和图片的二阶段回退机制
一、引言 在企业级应用中,经常需要将多种类型的文件(如 Office 文档、PDF、纯文本、图片等)打包成 ZIP 并提供给用户下载。但由于文件路径过长、特殊字符或权限等问题,Go 标准库的 archive/zip 有时会出现“压缩成功却实际未写入…...
【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?
目录 1 HDFS冗余机制设计哲学 1.1 多副本存储策略的工程权衡 1.2 机架感知的智能拓扑算法 2 容错机制实现原理 2.1 故障检测的三重保障 2.2 数据恢复的智能调度 3 关键场景容错分析 3.1 数据中心级故障应对 3.2 数据损坏的校验机制 4 进阶优化方案 4.1 纠删码技术实…...
06-libVLC的视频播放器:推流RTMP
创建媒体对象 libvlc_media_t* m = libvlc_media_new_path(m_pInstance, inputPath.toStdString().c_str()); if (!m) return -1; // 创建失败返回错误 libvlc_media_new_path:根据文件路径创建媒体对象。注意:toStdString().c_str() 在Qt中可能存在临时字符串析构问题,建议…...
【DT】USB通讯失败记录
项目场景: DT小板 USB通讯失败 问题描述 V1.1 板子含有降压电路、电容充电电路、姿态传感电路,语音电路、电弧电路、TF卡电路 焊接完成:功能正常 V1.2 为方便数传模块拔插,把座子缩小并做在了背面,下载口反向方便狭…...
【笔记】网路安全管理-实操
一、系统安全防护-Windows 开始-》管理工具-》本地安全策略-》账户策略-》密码策略-》 1.密码必须符合复杂性要求。双击打开-》勾选已启用-》单击:应用-》单击:确定 2.密码长度最小值。双击打开-》设置密码长度最小值为:?个字符 3.密码最短使用期限。双击打开-》设置密码…...
FFMPEG-视频解码-支持rtsp|rtmp|音视频文件(低延迟)
本人亲测解码显示对比延迟达到7到20毫秒之间浮动兼容播放音视频文件、拉流RTSP、RTMP等网络流 基于 Qt 和 FFmpeg 的视频解码播放器类,继承自 QThread,实现了视频流的解码、播放控制、帧同步和错误恢复等功能 工作流程初始化阶段: 用户设置URL和显示尺寸 调用play()启动线程解…...
LDR、MOV和STR指令详解
文章目录 前言 一、LDR指令详解 1.基本语法 2.寻址方式 3.伪指令形式 二、MOV指令详解 1.基本语法 2.常见用法 3.特殊变体 三、STR指令详解 1.基本语法 2.寻址方式 四、三者区别与联系 1.基本语法 2.操作效率 3.大数值处理 总结 前言 ARM汇编中的LDR、MOV和STR是三个最基础也最…...
MATLAB 控制系统设计与仿真 - 41
鲁棒控制的其他函数 - 回路成型函数 loopsyn 灵敏度问题由鲁棒控制工具箱中的loopsyn就可以直接求解,该函数采用H无穷回路成型算法设计控制器,函数的调用格式为: [K,CL,gamma,info] loopsyn(G,Gd) % G为受控对象模型% Gd为期望的回路传递函…...
Scade 语言词法介绍
Scade 6 是一种具备形式化语法与形式化语义的领域特定语言(注1)。自2008年发布(注5)起,在 Scade Suite 产品系列中语言定义方面到目前未产生重要的改变(注2)。在下面的内容中将介绍Scade 语言的词法(注3)。 注1&#x…...
Replicate Python client
本文翻译整理自:https://github.com/replicate/replicate-python 文章目录 一、关于 Replicate Python 客户端相关链接资源关键功能特性 二、1.0.0 版本的重大变更三、安装与配置1、系统要求2、安装3、认证配置 四、核心功能1、运行模型2、异步IO支持3、流式输出模型…...
LLM做逻辑推理题 - 如何找出不标准的球?
题目: 有80个外观一致的小球,其中一个和其它的重量不同,(不知道更轻还是更重)。现在给你一个天平,允许你称四次,把重量不同的球找出来,怎么称? 1. 答案 第1次称量:天平…...