逆向 axton-obsidian-visual-skills 的 JSON Canvas 布局算法碰撞检测与径向思维导图定位算法详解【免费下载链接】axton-obsidian-visual-skillsVisual Skills Pack for Obsidian: generate Canvas, Excalidraw, and Mermaid diagrams from text with Claude Code项目地址: https://gitcode.com/gh_mirrors/ax/axton-obsidian-visual-skills在 axton-obsidian-visual-skills 项目中obsidian-canvas-creator 技能能把纯文本自动转成可交互的 Obsidian Canvas 文件而这一切的底层核心是一套 JSON Canvas 布局算法它用碰撞检测保证节点永不重叠用径向思维导图定位把根节点、一级分支、二级细节按层级自动排布。本文带你逆向这套算法看懂每一个关键常量和定位步骤。布局算法藏在哪里这个项目用 Markdown 文件教会 Claude Code 如何画图算法文档本身就是一份可以直接阅读的规格说明核心算法obsidian-canvas-creator/references/layout-algorithms.md —— 本文逆向的主角格式规范obsidian-canvas-creator/references/canvas-spec.md —— JSON Canvas 的 nodes/edges 结构技能入口obsidian-canvas-creator/SKILL.md —— 工作流程与验证清单模板示例template-mindmap-simple.canvas —— 一个开箱即用的径向思维导图第一步理解 3 个万能间距常量所有定位计算都建立在 3 个全局常量之上定义在 layout-algorithms.md常量值含义HORIZONTAL_SPACING320px任意两个节点中心点之间的最小水平距离VERTICAL_SPACING200px任意两个节点中心点之间的最小垂直距离NODE_PADDING20px节点内部文字的内边距这里的巧妙之处在于间距衡量的是中心到中心而不是边缘到边缘。这样碰撞判断就变得异常简单——不需要计算矩形交叠只需比较两个距离分量。第二步碰撞检测算法详解在确定任何节点位置之前算法都会调用一次碰撞检测源码逻辑位于 layout-algorithms.md。它只有三步算中心取两个节点各自的中心点(x width/2, y height/2)算距离求出中心点之间的水平差dx和垂直差dy取绝对值算阈值水平最小值min_dx (两节点宽度之和)/2 320垂直最小值min_dy (两节点高度之和)/2 200判定只要dx min_dx或dy min_dy就判定碰撞注意这里用的是或而不是与只要水平或垂直任一方向上贴得太近就算碰撞。这相当于给每个节点画了一个横向的禁飞区虽然比严格的矩形碰撞更保守偶尔会误报但好处是一行代码就能判断、绝不会漏报非常适合生成式场景下的快速校验。第三步径向思维导图定位的 4 个步骤MindMap 模式是整个项目最经典的布局完整流程在 layout-algorithms.md拆解后就是 4 步1️⃣ 根节点绝对居中根节点以画布原点 (0, 0) 为几何中心x -width/2、y -height/2。整个思维导图从此向外生长。2️⃣ 一级分支圆形均分所有主分支均匀分布在围绕根节点的一个圆上角度步长是360°/nn 为分支数位置用三角函数计算x 根中心x 半径 × cos(角度)y 根中心y 半径 × sin(角度)半径不是拍脑袋定的而是按分支数量分档L76-L79一级分支数半径≤ 10 个400px11–20 个500px 20 个600px分支越多圆越大从源头避免分支互相挤压。3️⃣ 二级分支跟随父节点方向二级节点不再围成圆而是沿父分支的径向方向排成一列水平布局首选子节点排在父节点右侧 350px 处纵向按高度 200px逐个累加并整体垂直居中垂直布局用于画布左侧/右侧的分支子节点排在父节点下方 250px 处横向按宽度 320px累加并整体水平居中这样每一条分支都像树枝一样笔直伸展视觉上天然有序。4️⃣ 平衡迭代最多 10 轮微调初始摆放只是第一版。算法随后进入迭代循环L139-L165找出当前所有碰撞节点对对每一对计算需要拉开的距离与实际距离的差值两个节点沿连线方向各退一半重复直到无碰撞或达到 10 轮上限各退一半而不是只动一个能让画面保持对称、不偏向任何一侧。进阶技巧大画布怎么办主文档之外layout-algorithms.md 还给出了几个可选升级力导向布局把节点想象成带电小球互相排斥把边想象成弹簧相互吸引迭代 100 轮收敛适合交叉连接多的复杂网络空间网格索引L511-L549把画布切成 500px 的格子碰撞检测只查同格邻格的节点避免 O(n²) 全量两两比对视觉平衡按节点面积加权计算质心再整体平移到 (0, 0)防止构图头重脚轻生成前的质量检查清单算法跑完后SKILL.md 要求再过一遍验收✅ 节点中心距离满足 320px/200px 最小间距无重叠✅ 所有 ID 唯一8–12 位随机十六进制✅ 每条边的fromNode/toNode都指向存在的节点✅ 顶层 JSON 只包含nodes和edges两个数组✅ 节点文字保持精简推荐少于 2 行总结一套极简而严谨的布局哲学逆向这套 JSON Canvas 布局算法后可以发现它没有使用任何复杂的几何库而是用三件小事撑起整个系统常量先行——320/200/20 三个数字统一了全画布的呼吸感保守的碰撞判定——或逻辑牺牲少量空间换来零漏检径向 迭代——圆形均分给出优雅的初始骨架10 轮微调兜底所有边界情况理解了这套碰撞检测与径向定位的思路你甚至可以为自己的笔记工具复现一份先摆骨架再查碰撞最后小步微调。【免费下载链接】axton-obsidian-visual-skillsVisual Skills Pack for Obsidian: generate Canvas, Excalidraw, and Mermaid diagrams from text with Claude Code项目地址: https://gitcode.com/gh_mirrors/ax/axton-obsidian-visual-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
避坑指南:合肥百度推广公司哪家好?3步看懂完整流程 避坑指南:合肥百度推广公司哪家好?3步看懂完整流程 很多刚转行做网站的朋友,一上来就被域名和服务器搞得头大。你明明只想建个站,结果卡在备案、SSL证书或者DNS解析上,钱花了,站却打不开。这时候搜“合肥百度推广公司哪家好”,其实你真正缺的不… · 2026/9/27 7:15:35
网站制作商别拖一周改需求,教你从零搭建高效设计体系 网站制作商别拖一周改需求,教你从零搭建高效设计体系 改个按钮颜色,建站公司拖你整整一周?这种经历是不是让你想摔键盘?很多独立站长或者中小企业老板都踩过这个坑。外包团队内部沟通流程长,需求传递像传话筒,最后交付的时间全耗在了“扯皮”上。… · 2026/9/27 7:15:35
5步搞定html5网站检测,从零搭建避开90%的坑 5步搞定html5网站检测,从零搭建避开90%的坑 网站做好了没人访问,这不仅仅是流量玄学,很多时候是底子没打牢。很多新手朋友问,明明页面挺好看,为什么百度搜不到,甚至打开速度还慢?问题往往出在代码结构和标准兼容性上。今天不聊虚的,直接拿一… · 2026/9/27 7:57:33
FastAPI + PostgreSQL 实战:做一个重启后还能继续的审批流程 FastAPI PostgreSQL 实战:做一个重启后还能继续的审批流程 《企业级 Workflow 实战:从审批流到 AI Agent》|第 03 篇 / 共 24 篇 本篇成果:提交客户服务申请、创建运营待办、完成审批、查询流程历史,并实测应用进程重… · 2026/9/27 7:57:33
LeetCode 1096.花括号展开 II:一个一百行的解题方法(DFS) 【LetMeFly】1096.花括号展开 II:一个一百行的解题方法(DFS)
力扣题目链接:https://leetcode.cn/problems/brace-expansion-ii/
如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符… · 2026/9/27 7:57:27
Amethyst 瓦片地图实战:从 Tile 特征实现到 TileMap 组件创建完整指南 【免费下载链接】amethyst Data-oriented and data-driven game engine written in Rust 项目地址: https://gitcode.com/gh_mirrors/ame/amethyst 点击查看 免费下载 本篇技术指南围绕 Amethyst 游戏引擎(Rust 编写的数据驱动游戏引擎)的 a… · 2026/9/27 7:57:21
AutoBangumi 解析器配置指南:RSS 标题解析引擎、语言与全局过滤规则 后端前端音视频 【免费下载链接】Auto_Bangumi AutoBangumi - 全自动追番工具 项目地址: https://gitcode.com/gh_mirrors/au/Auto_Bangumi 点击查看 免费下载 AutoBangumi 的解析器(Parser)负责从 RSS 条目标题中抽取结构化的番剧元数据&am… · 2026/9/27 7:57:21
换机照片怎么迁移才靠谱?6种方案对比,原图与备份一次讲清 换手机时,照片迁移最需要关注的不是单纯的“速度”,而是文件有没有完整过去、原始信息有没有变化,以及迁移完成后有没有备用副本。如果只有几百张照片,手机直连通常就能解决;但面对几千甚至上万张照片,尤其… · 2026/9/27 7:57:21
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01