9.1 KiB
几何计算示意图册
本册逐图给出坐标口径、关键量与图中各元素的含义。插图位于
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=1800m 的圆盘;源的有效接收半径r_{\rm eff}\in[1000,1500]m; - 示向度
\theta以+x轴为0°逆时针为正,误差半角 $\delta=1°$; - 清除半径
r_{\rm clear}=20m; - "可保证清除" ⟺ 存在一点使整个候选区域落在该点 20 m 内 ⟺
\rho\le 20m(充分)。
图 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.9984m,圆心是中点 $(-450.634,\ 508.944)$; - 绿色实线圆 = 最小包围圆(MEC),
\rho=12.0686m,圆心 $(-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\le20m)是两个不同的问题。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.0000m,最远点对是底边两端 ⇒ 直径圆圆心 $(20,0)$、半径 20 m; - 到第三个顶点
(20,34.641)的距离是20\sqrt3\approx34.6410m > 20 m, 故直径圆不覆盖:E=+14.6410m(图中箭头所指); - 该反例的最小包围圆半径
\rho=40/\sqrt3\approx23.0940m > 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 与正文。




