Skip to content

SCAPI Skyline Project v0.1.155

Choose a tag to compare

@DionysusDWI DionysusDWI released this 29 Sep 09:38
· 20 commits to main since this release

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