当前位置: 首页 > news >正文

2026-08-13-clipper-tutorials-morphology-design

Clipper1/Clipper2 教程形态学内容优化设计

  • 日期:2026-08-13
  • 状态:已获用户批准(方案 B:就地优化,不动目录结构)
  • 依据仓库:https://github.com/znlgis/Clipper1 、https://github.com/AngusJohnson/Clipper2

背景与目标

站点在 cad/(使用教程)与 sci/(源码解读)下各有 Clipper1、Clipper2 两个系列。现有教程对形态学(膨胀/腐蚀/开运算/闭运算)覆盖零散且存在错误。本任务依据两个 GitHub 仓库的最新状态,优化完善形态学相关内容,修正错误,保持各系列既有文风与目录结构。

核心正确性事实(全篇统一的数学基础)

  1. 腐蚀 ≠ 闵可夫斯基差。闵可夫斯基差 A ⊖ B = A ⊕ (−B) 用于碰撞检测;形态学腐蚀定义为 A ⊖ B = {x : x + B ⊆ A},实现走补集法:A ⊖ B = (Aᶜ ⊕ Bʳ)ᶜ,其中 Bʳ 为 B 关于原点的反射,Aᶜ 为 A 在足够大包围盒内的补集。B 关于原点对称时 Bʳ = B。
  2. 偏移即特殊形态学JoinType.Round 偏移对应圆盘结构元素,JoinType.Square 对应方形结构元素;Clipper2 的 InflatePaths/DeflatePaths 是偏移的简化 API。
  3. 形态学组合:开运算 = 先腐蚀后膨胀;闭运算 = 先膨胀后腐蚀;形态学梯度 = 膨胀 − 腐蚀(布尔差集)。
  4. Clipper1 v6.4.2(znlgis/Clipper1 镜像)存在 Clipper.MinkowskiSum(Path pattern, Path path, bool pathIsClosed)MinkowskiSum(Path pattern, Paths paths, bool pathIsClosed)MinkowskiDiff(Path poly1, Path poly2)——已核对仓库源码确认。sci/Clipper1 第19章 19.4 的签名文档是正确的,无需修复,只补形态学内容。
  5. Clipper2 当前 main 分支(已核对源码):MinkowskiSum(PathD, PathD, bool, int precision) 旧签名已移除,现为 3 参版本(内部委托 Minkowski.Sum,其 PathD 重载带 decimalPlaces = 2 默认参数);DeflatePaths 方法不存在,收缩用负 delta;ClipperOffset.Execute 在 Clipper1 是 Execute(ref Paths solution, double delta),Clipper2 是 Execute(double delta, Paths64 solution),参数顺序相反。

已知错误清单(必须修复)

位置 问题
sci/Clipper2 第18章 18.6.3 Erode 用 MinkowskiDiff 实现,数学上错误;且实现残缺(注释"需要更复杂的处理")
sci/Clipper2 第18章 18.3.1、18.8.3 MinkowskiSum PathD 版签名含已移除的 precision 参数(18.3.1 声明、18.8.3 调用 ..., true, 3),与当前 main 分支不符
cad/Clipper2 第05章 5.3.7 标题为 C# 版但代码为 C++(std::vectorconst auto&std::cout);且全章代码混用 MinkowskiSum(...) 裸调用与 Clipper. 前缀
各系列 形态学内容零散,未形成"膨胀/腐蚀/开/闭/梯度"完整框架;腐蚀公式缺失

各文件改动明细

cad/Clipper1(教程,6 章)

  • 第04章-多边形偏移操作.md:新增形态学小节(编号顺延插入):膨胀/腐蚀(正负偏移)、开运算、闭运算、形态学梯度(差集)、结构元素选择(jtRound=圆盘、jtSquare=方形)、应用(小图斑剔除、窄桥断开、凹口填充、地图综合)。
  • 第06章-实际应用案例与最佳实践.md:应用案例处轻量交叉引用形态学小节。
  • 第01章-Clipper1概述与安装.md:补充 GitHub 仓库 znlgis/Clipper1 信息(SourceForge 镜像、含 Documentation 与 Clipper2 beta 目录)。

cad/Clipper2(教程,6 章)

  • 第04章-多边形偏移操作.md:新增形态学小节(InflatePaths/DeflatePaths + SimplifyPaths 迭代;可引用官方 README 兔子收缩示例)。
  • 第05章-矩形裁剪与闵可夫斯基操作.md:修复 5.3.7 C++/C# 混用(统一为 C#);将"形态学膨胀"扩充为完整小节:膨胀 = MinkowskiSum;腐蚀 = 补集法(附完整可运行 C# 实现,含取补集辅助函数);开/闭运算;任意结构元素。
  • 第01章-Clipper2概述与安装.md:补充官方 README 的三角剖分 bug 警告(一句话)。

sci/Clipper1(源码解读,20 章)

  • 第17章-ClipperOffset详解.md:新增小节:JoinType ↔ 结构元素对应关系(源码角度)。
  • 第19章-辅助函数与工具.md:19.4 现有 MinkowskiSum/MinkowskiDiff 签名文档与 v6.4.2 一致(无需修复),补充 MinkowskiSum(Path, Paths, bool) 重载说明;新增小节:补集法腐蚀辅助函数 + 开闭运算实现。
  • 第20章-实际应用与最佳实践.md:20.4.2 "先膨胀后收缩"标注为闭运算并扩充;新增形态学应用小节(开闭运算、梯度、地图综合)。

sci/Clipper2(源码解读,20 章)

  • 第16章-ClipperOffset偏移类详解.md:新增小节:JoinType ↔ 结构元素 + InflatePaths/DeflatePaths 简化 API 说明。
  • 第18章-Minkowski和与差.md:修复 18.6.3 错误 Erode;18.6.3 扩充为完整形态学小节(补集法腐蚀完整实现、开闭运算、梯度、结构元素对称性简化);修复 18.3.1/18.8.3 中已移除的 precision 参数。
  • 第20章-实际应用与最佳实践.md:20.6.5 处交叉引用形态学小节。

不改动

  • 不新增/删除章节文件,不动各系列 index.md 与 _data/navigation.yml 的目录结构。
  • 不改动与形态学无关的章节内容。

写作规范

  • 匹配各系列现有文风:cad 教程 = 概念 + 代码 + 练习/小结;sci 解读 = 源码逐行 + 算法分析 + 注意事项。
  • 新增代码全部为可运行 C#:sci/Clipper1 用 ClipperLib API;其余用 Clipper2Lib。
  • 形态学小节统一结构:数学定义 → Clipper 实现 → 完整示例 → 应用场景 → 注意事项(自交、路径方向、缩放因子、结构元素选择)。
  • 实现前核对 Clipper2 仓库 CSharp 源码中 InflatePathsMinkowskiSumMinkowskiDiffPointInPolygon 等当前签名,保证教程与现仓库一致。

验证

  1. 新增 C# 示例逐一与仓库源码核对 API 签名。
  2. grep 检查无残留错误写法(用 MinkowskiDiff 实现腐蚀)。
  3. Jekyll 构建(bundle exec jekyll build)无错误;markdown 语法检查通过。
  4. 章节内小节编号连续,无重复/缺号。
http://www.jsqmd.com/news/1385612/

相关文章:

  • Log4j2配置实战:从环境隔离到性能调优的完整指南
  • QKeyMapper:Windows平台上最强大的免费按键映射工具终极指南
  • 郑重澄清|朕品牌(杰子娜娜)二十载坚守真籽料,破除三大不实传言 - 中媒介
  • Tmux精准复制:打通终端与系统剪贴板,实现高效文本流转
  • Moodist环境音效应用:84种声音打造你的专属专注空间
  • 2026年国内脉冲集尘器厂家 口碑参考与可靠选择指南 - 品牌品鉴馆
  • 北京口碑好的无纺布壁纸线下店优选米兰壁纸墙布窗帘(三旗百汇店)(北京销售中心) - 品牌优推
  • 灰狼算法优化孪生OS-ELM的工业预测模型
  • AC695x蓝牙音频SoC按键驱动开发:从硬件电路到RTOS事件处理的完整指南
  • C语言字符串处理:10个核心函数原理与安全实践指南
  • 开拓者-正义之怒:动物伙伴终极性能调优指南
  • 力扣【二分查找】:1300. 转变数组后最接近目标值的数组和
  • Android分区架构深度解析:从基础概念到刷机救砖实战
  • 2026汕头日常潮汕菜餐厅选哪家:地道本地餐厅推荐 - 资讯综合
  • 免费开源的离线语音转文字工具 faster-whisper-GUI:5 分钟把会议录音变成带说话人的字幕
  • SQL Server 2019 安装配置全攻略:从环境准备到深度排错
  • FanControl 风扇控制指南:免费开源,一次讲透 Windows 风扇转速怎么调
  • Zookeeper - 事务 ID 的生成规则与集群一致性关联
  • IDM总是提示试用到期?三步永久冻结30天试用期的实战指南
  • Windows 11 卡顿自救指南:用免费开源的 Win11Debloat 完成终极系统优化
  • 2026Q3青岛对韩贸易DDP清关风险解析|仁川保税区退税华人报关合规实操指南
  • 2026 年昆明 GEO 生成引擎优化助力中小企业线上获客途径 - 中国华商产业观察网
  • Qwen2.5-1.5B模型完全指南:从零开始掌握1.5B参数语言模型的实战应用
  • 黑苹果EFI配置太折磨人?OpCore-Simplify把OpenCore构建压进30分钟
  • 重磅参考|留学申请规划选机构6个硬指标,少一个都悬 - 互联网科技品牌测评
  • OpCore-Simplify 新手指南:如何把 Hackintosh EFI 配置时间从 8 小时压缩到 30 分钟
  • XSS攻击详解:跨站脚本攻击的原理与防护技巧
  • 从零玩转Android投屏:scrcpy免费终极指南,10分钟上手高频命令与避坑方案
  • SF6微水仪和SF6露点仪有什么区别 - HVHIPOT
  • C++ vector O(1)删除技巧:交换-弹出法原理与实战