记忆:迷雾收口的像素级验证方法 + --clip 截图 pad 偏移坑

This commit is contained in:
tamakyi
2026-10-10 10:51:51 +08:00
parent eb35abb7f2
commit cc37c9d1c9
+24 -1
View File
@@ -1105,8 +1105,31 @@ HTML,一行里必然带 `</script>`,一拒就把正常用法挡死了(我
- 门禁 `TestTopicFogIsClippedToArea`:钉住两端 —— `topic.html` 得发 `fogArea:`、`rond-map.js` 得认
`opts.fogArea`/`createPane('rondFog')`/`clipPath`,且注册点下标 > `var applyFit = function` 的下标
(防的就是上面那个「放早了整片迷雾消失」)。
- 实测:临时专题 id=16(中心 24.698/108.075、半径 3km)→ `clip = circle(173px at 529px 260px)`,
- 实测:临时专题(中心 24.698/108.075、半径 3km)→ `clip = circle(173px at 529px 260px)`,
反解半径正好 **3000 m**,`setZoom(9)` 后仍正确;`/map`、`/stats` 不受影响(它们没有 `fogArea`)。
- ⚠️ 用户自己的专题 `id=15`「2026年国庆」`radius_km=0` ⇒ 收口不生效,要在后台把中心与半径填上。
### 怎么证「裁剪真的生效」(2026-10-10 实测方法)
`clip-path` 读得到 ≠ 画出来生效,而且**目测会骗人**:截图上那片「灰色」可能是底图不是迷雾。
可靠判据是一组**像素对比**,四张图同一个视图、同一个(临时)专题:
| 图 | 迷雾瓦片 | 裁剪 |
|---|---|---|
| A | 显示 | 有 |
| B | 显示 | 无(`pane.style.clipPath='none'`)|
| D | 隐藏(`img.style.display='none'`)| 有 |
- **迷雾掩码** = `|A−D| > 阈值`(裁剪态实际画出来的迷雾)、`|B−D|`(无裁剪态)。
- 结论(半径 1km 那张,阈值 60):裁剪态 **83,185** 个迷雾像素、**圆外 0 个**(最远半径 462.4 / 圆 462.1);
无裁剪态 222,510 个、**62.3% 溢出圆外**(最远 1,117.8)。⇒ 裁剪精准,边界正好落位。
- 想知道**裁剪圆到底画在哪**,别用红色探针(底图有红路/红 POI 会污染掩码)——
在 pane 里塞一个 `background:#ff00ff` 的巨型子元素(子元素一并被裁剪),品红掩码即裁剪区域,
`填满率=π r² 反解`能同时校出圆心与半径。实测圆心/半径与 CSS 标称差 < 1px。
- 🔴 **图像坐标不能用元素坐标直接换算**:`site_cdp.py --clip` 会把裁切框每边外扩 `pad=10` CSS px
(×`--scale`),图像原点在元素左上角**左上方 20px**。差这一步会得到「圆整体偏 (18.5,19)px」的
假 bug,还会把边界抗锯齿当成「圆外有 1830 个迷雾像素」。正确做法:**在同一张图里量一个已知参照定标**
(品红探针就是为此)。已写进技能 `rond-web-verify` 的「四个必踩的坑」第 4 条。