Files
mcm-26-b/docs/几何计算示意图册.md
T
2026-09-13 08:52:23 +08:00

9.1 KiB
Raw Blame History

几何计算示意图册

本册逐图给出坐标口径、关键量与图中各元素的含义。插图位于 figures/,复现命令:

uv run python scripts/make_figures.py --only geo-q1-convex-intersection-zoom,\
  geo-q1-diameter-circle-counterexample,geo-q2-guaranteed-reception-disk,\
  geo-q3-seven-point-coverage,geo-q4-minimum-cover-31-points

图中的数字由脚本现算:问题一调用生产求解器,问题三、四直接读覆盖计划与证书; 来源与 sha256 记在 figures/manifest.json。

统一的坐标与符号约定:

  • 世界坐标以 Ω 圆心为原点,x 轴向右、y 轴向上,单位米;
  • Ω 是半径 R=1800 m 的圆盘;源的有效接收半径 r_{\rm eff}\in[1000,1500] m;
  • 示向度 \theta 以 +x 轴为 0° 逆时针为正,误差半角 $\delta=1°$;
  • 清除半径 r_{\rm clear}=20 m;
  • "可保证清除" ⟺ 存在一点使整个候选区域落在该点 20 m 内 ⟺ \rho\le 20 m(充分)。

图 1 问题一:角域交会与定位区域

问题一角域交会

左(总览):三个检测点(官方演练案例 U5ZW-P9KN-TCAG-R7ST,频道 9) 各自的前向角域 W_i=\{p:\angle(p-s_i)-\theta_i\in[-1°,+1°]\} 画成窄扇形 (2° 宽,图中放大成可见宽度);三者交集就是定位区域 $P$。检测点相距 600~900 m, 而 P 的直径只有 24 m,所以左图里 P 缩成一个点——这是必须做局部放大的原因。

右(放大,视野 ±31.4 m):以最小包围圆圆心为中心:

  • 浅蓝扇形 = 三个角域在放大框内的可见部分;三者重叠成白色区域= $P$;
  • 红色实线多边形 = P 的顶点边界(与左图同一个集合);
  • 蓝色虚线圆 = 直径圆,半径 D/2=11.9984 m,圆心是中点 $(-450.634,\ 508.944)$;
  • 绿色实线圆 = 最小包围圆(MEC),\rho=12.0686 m,圆心 $(-449.977,\ 507.953)$。

关键量(图 (c) 栏)

量 值 判定
直径 D(P) 23.9967 m 顶点对枚举(凸集上最远点必为顶点)
MEC 半径 \rho 12.0686 m Welzl 算法 + 支撑点枚举对照
直径圆最大超出 E +0.6040 m E>0 ⇒ 直径圆不覆盖 P
\rho\le20 m 成立 ⇒ 存在可保证清除的点(取 MEC 圆心)

这两个结论不矛盾:题目问"直径圆能否覆盖"(答案:不能,$E>0$) 与"能否保证清除"(答案:能,\rho\le20 m)是两个不同的问题。 E 的定义:$E=\max_i\lVert v_i-o\rVert-D/2$,o 为直径中点; 精确算术下最远顶点对就在圆周上,故 $E\ge0$,E>0 即覆盖失败, 达到最大值的顶点就是可独立复核的失败证据。


图 2 问题一:直径圆不覆盖的反例

直径圆反例

等边三角形布站($S_1(-1000,0)$、$S_2(540,-866)$、$S_3(520,901)$,示向度 $1°,121°,241°$,误差半角 $1°$)。三条 2° 宽的角域交出一个等边三角形 $P$:顶点 $(0,0)$、$(40,0)$、$(20,34.641)$。

  • 直径 D=40.0000 m,最远点对是底边两端 ⇒ 直径圆圆心 $(20,0)$、半径 20 m;
  • 到第三个顶点 (20,34.641) 的距离是 20\sqrt3\approx34.6410 m > 20 m, 故直径圆不覆盖:E=+14.6410 m(图中箭头所指);
  • 该反例的最小包围圆半径 \rho=40/\sqrt3\approx23.0940 m > 20 m, 属于"覆盖失败且无法保证清除"的更坏情形。

反例是符合题设测向条件的:把真实源放在三角形中心 $(20,20\sqrt3/3)$, 三个检测点的真实方位与读数偏差均小于 $1°$,且三个检测距离都小于 1500 m, 所以它不是"脱离测向模型的任意图形"。构造与证明见 问题一解答.md 第六节。


图 3 问题二:保证接收的候选盘与安全盘

问题二保证接收盘

候选集(首次观测之后可能的位置集合):


K_1=\Omega\ \cap\ W(s_1,\theta_1\pm\delta)\ \cap\ B(s_1,\ 1500),

即"Omega 内、首次角域内、且距离不超过最大接收半径"的三者之交。

解析安全盘:截断角域(扇形,半径 R_{\max}=1500 m、半角 $\delta=1°$) 的最小包围圆恰为 $B(c,a)$,其中 $c=s_1+a\boldsymbol u$(\boldsymbol u 为示向度单位向量),


a=\frac{R_{\max}}{2\cos\delta}=\frac{1500}{2\cos1°}=750.1142\ \text{m}.

于是对安全盘内任一点 $q$、扇形内任一点 $p$:


\lVert q-p\rVert\le a+(1000-a)=1000\ \text{m}
\ \Longrightarrow\ q\ \text{必然收到源的信号},

\boxed{\ \text{安全盘半径}=1000-a=249.8858\ \text{m}\ }

(严格非空;图中绿色实心圆,圆心 $c=(649.62,\ 375.06)$)。 第二检测点就在该盘内选,目标是最小化最坏保守后验包围半径, 移动与检测成本作次目标;交会角只用于同分筛选与可解释性说明。

图中 a 与 1000 m 两个圆几乎重合是可预期的:\delta 只有 $1°$, a=R_{\max}/(2\cos\delta) 与 R_{\max}/2 相差 0.0114%, 因此安全盘的"安全"主要来自角域约束,而不是圆心位置。


图 4 问题三:七点解析覆盖

问题三七点覆盖

站点集:原点 + 半径 a 的六等分环, $S(a)={(0,0)}\cup{a(\cos k\pi/3,\ \sin k\pi/3):k=0,\dots,5}$。

定理(algo-3.md §4.2) 当 0<a/\sqrt3\le R 时


\max_{g\in\Omega}\min_{s\in S(a)}\lVert g-s\rVert
\le D(a):=\max\Bigl\{\frac{a}{\sqrt3},\ \sqrt{R^2+a^2-\sqrt3Ra}\Bigr\}.

代入默认 a=1159.7 m、R=1800 m:


D(a)=984.5391\ \text{m}<1000\ \text{m}
\quad(\text{几何余量 }15.46\ \text{m}).

图上看到的就是这个证明:7 个半径 1000 m 的接收盘(浅绿,裁剪在 Ω 内)的 并集完全覆盖 Ω,最坏点出现在 $(0,-1800)$(Ω 正下方边界,图中圈出), 到最近站点 1159.7 m(正下方环站)的距离恰为 984.54 m。

数值复核(脚本内 20 m 网格):Ω 内 25445 个采样点全部被覆盖,缺口 0—— 解析上界与数值结果一致到小数点后 3 位。

代价对比:七点每轮 7 次检测即可证明"无源",49 点网格要 49 次; 巡回长度 6a\approx6.96 km(对照 49 点的 NN 巡回约 36.4 km)。 a 的可行下界 a_{\min}\approx1122.9558 m(零余量),默认配置留 15 m 以上余量。

为什么能"发现即证明":某频道若在全部站点都测得 no_signal, 由覆盖定理知该频道必无源(负观测只能排除该站点 1000 m 圆盘,而 r_{\rm eff}\ge1000 m), 于是可以安全销账;所有频道销账 ⇒ 完成证明成立 ⇒ 立即 /exit。


图 5 问题四:定向源的 31 点最小命中集与联合信念

问题四最小命中集

覆盖语义变了:定向源只向朝向 \pm90° 的前向半球辐射, 所以"某站点附近一定收到"这件事必须同时考虑源的位置与朝向:


\text{站点 }s\text{ 能发现源}\iff
\lVert s-\text{pos}\rVert\le r_{\rm eff}\ \wedge\
\angle\bigl(\text{heading},\ s-\text{pos}\bigr)\le90°.

这个语义记作 forward_half_disk(图中右侧示意)。

31 点最小命中集(q4_mincover_v2,图中红点):

项 值
点数 31(离线贪心最小命中集,取代 49 点网格)
设计参数 r_{\rm design}=965 m + 前向角裕量 5°
运行期证书 15 m / 72 朝向档,325.62 万个 (位置, 朝向) 采样格,缺口 0
最坏命中距离 990.051 m
最近邻巡回 23.9 km ≈ 4776.8 s 虚拟时间
旧计划对照 q4_mincover_v1 在 15 m/72 档下有 566 个缺口(粗采样过拟合)

位置 × 朝向联合信念:负观测(no_signal)在问题四里只约束朝向—— 它只能排除"朝向正对本站点"的那些朝向档,位置信息几乎不更新。 因此证据层维护网格 × 朝向档的联合分布,可见性判据必须与引擎一致 (距离 \le r_{\rm eff} 且夹角 $\le90°$),并按格内角裕量保守裁剪。 当信念坍缩到有限格时启用后备盲清:就近到可疑格 /clear, 把盲清次数从 125.7 次/局压到 4.3 次/局。

本轮修复的正确性缺陷:旧版 no_signal 的朝向裁剪规则反向、且漏计格内角裕量, 会删掉真源所在的朝向档。已修复,并由 tests/test_joint_belief.py 的随机观测序列保留性测试固化。


附:把图接进论文

docs/paper/main.tex 目前用表格承载结论,插图按下例插入即可:

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.95\textwidth]{figures/geo-q1-convex-intersection-zoom.png}
  \caption{问题一:角域交会得到的定位区域,以及直径圆与最小包围圆的关系。}
  \label{fig:geo-q1}
\end{figure}

图片按 160 mm 宽排版。图内不含标题与图注,说明写在 \caption 与正文。