tamakyi
44763dfc3f
专题的多圆显示区:前台按并集裁剪迷雾
上一批把显示区改成了「一组圆」,这一批让前台真正认多个圆。
- clip-path 从 circle() 换成 path():circle() 只表达得了一个圆。每个圆一段
圆弧子路径、**同绕向**(sweep=0),nonzero 填充规则下多段自然取并集,
重叠处不会互相挖洞。
- 拼路径的活单独放 fog-clip.js(rond-map.js 是个大 IIFE,函数取不出来),
这样能直接跑 node 单测;layout 里必须排在 rond-map.js 之前加载。
- 顺带清掉已经死掉的 fitCircle:多圆之后「圆心 + 半径」表达不了,留着就是
两套并行的贴合口径。fitParams 现在只给 fitBBox(单圆时外接矩形正是那个
圆的外接正方形,视野等价)。
- 守卫改名 TestTopicFogIsClippedToAreas,钉住两端(模板发 fogAreas ↔ 脚本认
fogAreas)与两处顺序(裁剪注册在 applyFit 之后、fog-clip.js 在 rond-map.js
之前);fogAreas 必须**无条件**下发(空数组 = 不限区域),不要包在条件里。
- verify.sh 挂进前端单测:以前只靠人记得手动跑 = 等于没有。找不到 node 直接
失败而不是跳过(跳过会让验收看着全绿、实际一行前端脚本都没验)。
验证(临时两圆专题,SQL 造的,已删):
- fog-clip.test.js 15 条:把生成的 path 解析回圆弧再验几何,含绕向一致性与
半径 0/负数的夹取。
- 端到端像素验证:自校准出「CSS 容器坐标 → 图像像素」(scale≈2、offset≈19.2,
正是 site_cdp 的 --clip 外扩 10px×scale,别再手算);三张掩码图证明并集语义
—— A 独有点只有 A 亮、B 独有点只有 B 亮、**重叠中心两圆都亮且并集也亮
(无洞)**,整体集合差异 0.013%。
- 迷雾掩码:86,776 个像素,按两圆并集的解析式判 **圆外 0 个**;两个圆内分别
有 52,609 / 46,757 个迷雾像素 ⇒ 第二个圆真的被认了,不是只看第一个。
2026-10-12 16:44:55 +08:00
..
2026-10-12 16:44:55 +08:00
2026-10-12 16:44:55 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-18 13:05:49 +08:00
2026-09-18 13:05:49 +08:00
2026-09-28 19:31:21 +08:00
2026-09-29 10:46:54 +08:00
2026-09-29 13:25:50 +08:00
2026-09-30 16:18:52 +08:00
2026-09-30 19:15:48 +08:00
2026-09-30 19:15:48 +08:00
2026-09-30 16:18:52 +08:00
2026-09-18 17:06:22 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-10-09 17:01:08 +08:00
2026-10-01 01:15:04 +08:00
2026-09-24 20:37:16 +08:00
2026-09-30 15:02:45 +08:00
2026-09-30 19:00:18 +08:00
2026-09-24 20:37:16 +08:00
2026-09-29 16:57:29 +08:00
2026-09-24 20:37:16 +08:00
2026-09-29 11:50:06 +08:00
2026-09-29 13:25:50 +08:00
2026-09-30 17:35:59 +08:00
2026-09-24 20:37:16 +08:00
2026-09-19 16:31:01 +08:00
2026-09-19 16:31:01 +08:00
2026-09-20 10:07:00 +08:00
2026-09-24 20:37:16 +08:00
2026-09-18 13:05:49 +08:00
2026-09-18 21:52:29 +08:00
2026-09-19 16:04:00 +08:00
2026-09-18 13:05:49 +08:00
2026-09-19 16:04:00 +08:00
2026-09-24 20:37:16 +08:00
2026-09-19 16:04:00 +08:00
2026-09-24 20:37:16 +08:00
2026-10-12 16:44:55 +08:00
2026-09-19 16:31:01 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-10-09 11:06:41 +08:00
2026-10-09 19:09:42 +08:00
2026-09-30 19:00:18 +08:00
2026-09-30 19:45:51 +08:00
2026-10-09 19:09:42 +08:00
2026-10-09 17:01:08 +08:00
2026-10-12 16:44:55 +08:00
2026-09-24 20:37:16 +08:00
2026-09-30 16:18:52 +08:00
2026-10-01 00:11:04 +08:00
2026-10-01 01:15:04 +08:00
2026-09-20 12:22:11 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:57 +08:00
2026-09-24 20:37:57 +08:00
2026-09-18 13:05:49 +08:00
2026-09-30 19:45:51 +08:00
2026-09-18 13:05:49 +08:00
2026-10-09 11:06:41 +08:00
2026-10-08 18:27:59 +08:00
2026-09-18 17:06:22 +08:00
2026-09-30 16:18:52 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-18 13:05:49 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-19 16:04:00 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-18 13:05:49 +08:00
2026-09-24 20:37:16 +08:00
2026-10-09 11:06:41 +08:00
2026-09-24 20:37:16 +08:00
2026-10-01 01:47:48 +08:00
2026-09-24 20:37:16 +08:00
2026-09-20 12:22:11 +08:00
2026-09-24 20:37:57 +08:00
2026-09-24 20:37:57 +08:00
2026-10-09 11:06:41 +08:00
2026-10-09 11:06:41 +08:00
2026-09-24 20:37:57 +08:00
2026-09-24 20:37:16 +08:00
2026-09-18 13:05:49 +08:00
2026-10-12 16:44:55 +08:00
2026-10-12 16:29:46 +08:00
2026-09-30 23:31:17 +08:00
2026-10-09 11:06:41 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-09-24 20:37:16 +08:00
2026-10-12 16:44:55 +08:00
2026-09-24 20:37:16 +08:00
2026-10-01 02:15:49 +08:00
2026-09-18 13:05:49 +08:00
2026-09-24 20:37:57 +08:00