Repository navigation
SCAPI Skyline Project v0.1.155
SCAPI Skyline Project v0.1.155
[v0.1.155] - 2026-09-29
第一百五十九版:修掉一条"会静默给错答案"的探针口径 —— NearestShellCube(s) 的入参单位与距离单位。
相对 v0.1.154 的变更:
1. 缺陷(v0.1.152 引入)
SkylineCubeShellStore.NearestShellCube(s) 的形参名与文档写的是"离给定世界坐标最近",
而实现是拿 立方体索引直接相减(cx - worldX),并把 sqrt(Δcube²) 当 米 回报。两个后果:
| 调用方按什么写 | 拿到的答案 |
|---|---|
| 按文档传世界坐标 | 静默 ok:true 的错答案:实测传 (51690,358,34149) 得 distanceMetres=58013.1,而真实最近壳立方体在 16 m(1 个立方体)外 |
按实现传立方体索引(门禁 player_cube() 就是这么做的) |
最近立方体是对的,但 distanceMetres 少 16 倍(1 立方体 = 16 m,报出来是 16 —— 数字碰巧像米,更难发现) |
2. 修法(零语义变更)
- 形参改名为
cubeX/cubeY/cubeZ,文档明说"入参 = 立方体索引"; - 输出新增
inputUnits: "cubeIndices"(探针自己声明口径,调用方不必猜); - 单位修对:新增
distanceCubes(立方体数),distanceMetres= 立方体数 ×cubeSize(新旧字段都在,旧调用方读到的数字从此是真米)。
门禁侧行为不变:regression-skyline.py 传的是 player_cube()(>> cubeShift),本来就是立方体索引。
3. 验收 heightlab/skyline-v0157-shell-anchor-units.py —— 8/8 PASS
| 判据 | 实测 |
|---|---|
inputUnits == "cubeIndices" |
✅ |
| 报告距离与"用返回立方体 + 输入立方体重算"一致 | distanceCubes=16 ↔ 重算 16.0 |
单位:distanceMetres == distanceCubes × cubeSize |
256.5 m == 16 × 16 |
| 修复的"牙齿":米 ≠ 立方体数(旧实现必红) | 256.5 vs 16 |
| 8 个候选逐项自洽/单位 | 全部一致 |
| 负对照①:推远 64 格后仍与重算一致 | 报告 47.4 / 重算 47.4 |
| 负对照②:入参真的参与计算(距离随输入变) | 16 → 47.4 |
| 单数/复数一致 | 两项返回同一立方体 |
4. 门禁
24 PASS / 0 FAIL / 0 SKIP(shell-mesh-tiers 的锚点说明从错的 16 m 变成正确的 256.5 m)。
如实边界
- 负对照第一版写错了(要求"推远 64 格后距离必须 ≥64")——壳仓本身有 831 个驻留立方体,
查询点平移后最近壳完全可能仍在 40~50 格外 ⇒ 误报 FAIL。已改成"重算一致 + 距离随输入变"两条。
这条与notes/266的"空测量"族是同一类:判据要写能成立的形式。 - 本版只动探针的报告口径,不改变任何"最近立方体"的选择结果;默认值一律未动。
相对 v0.1.154:修 NearestShellCube(s) 的单位/口径(形参文档说世界坐标、实现收立方体索引、distanceMetres 实际是立方体数)——零语义变更,新增 inputUnits/distanceCubes;验收 8/8 PASS;门禁 24 PASS / 0 FAIL / 0 SKIP