实地测量:仰角与方位角
测量里量得到的只有两类量:距离与角。够不着的距离靠解三角形补出来,前提是先把量到的角折成某个三角形的内角。这一步折算是全部难处所在,公式本身只是最后一行。
1 · 三种角的口径
仰角与俯角量在竖直平面内,基准是过观测点的水平线:目标在水平线之上取仰角,之下取俯角,两者都取正值,方向由名称区分。方位角量在水平面内,基准是正北方向,顺时针为正,取值在 内。
方位角与数学里的极角不是同一套:极角以正东为 、逆时针为正。两者的换算是一次翻转加一次平移,。
注 · 这条换算在实现里只留一个出口 bearingVector,因为把两套角度混用是这类题最常见的错处,而混用之后算出的位置往往仍在合理范围内、看不出错。换算本身也不干净:正西方向的方位角是
,折成极角是
,而 Math.sin 在
处给出 -1.2246467991473532e-16 而不是
。所以方向向量的分量判等一律走容差,triangle.test.ts 里专有一条断言把这个尾巴钉住——它不影响任何距离读数,但会让「这个方向是不是正西」这类相等判断在不加容差时全部失败。
2 · 竖直平面内的高度测量
目标底部够不着时,在同一竖直平面内取两个观测点。远点 测得仰角 ,近点 测得仰角 ,两点相距 。设目标高为 、 到目标底部的水平距离为 ,则 且 。消去 :
分母要求 ,也就是近点看得更陡;两个仰角相等时两条视线平行,永不相交,无解。
警示 · 这个公式的可用性由几何决定,不由精度决定。
时实测:、
给出
,敏感度
是 -1.745 每度;、
给出
,敏感度 -143239.59 每度,放大约
万倍。后一组里
只多读出
,算出的高度就从 14367 掉到 7205,少了一半。经纬仪的读数精度到不了这个量级,所以两个测站必须拉开到两个仰角差得开——换公式、加位数都无济于事。
俯角的题型只是换个基准。从高处向下看两个目标点时,把俯角的余角当作三角形的内角,或者直接把水平线当底边,两种摆法算出的是同一个三角形。
3 · 水平面内的交会定位
目标在水平面内、两站都能看到它时,测两个方位角就够了。测站 与 之间的距离叫基线,它与两条视线围成一个三角形:两个方位角折成三角形在 、 处的内角,第三角由内角和补出,两段距离由正弦定理给出。
按向量做同一件事更直接:两条视线各是一条参数化射线,求交点即解一个二元一次方程组。行列式是两个方向向量的叉积,它为零意味着两条视线平行。
行列式接近零而不等于零的那一段最值得注意:方程组仍可解,解出的交点却对方位角的读数极敏感。两个方位角都逼近
与
(即两条视线都近乎沿基线方向)时就是这个样子,实测基线
、方位角取
与
时行列式只有 3.491e-3。测量学里选基线的准则由此而来:基线要与目标方向张开足够大的角。
4 · 平面近似的边界
以上都把地面当平面。距离大到与地球半径可比时这个近似失效,三角形的内角和不再是 ,要换球面三角的一套公式。分界线没有统一口径,取决于要求的相对精度:大地测量常以几十公里为界,而航海与航空的航线计算一律走球面(或椭球)模型。本页的两个 lab 都不涉及这一层,画板上的坐标一律是平面直角坐标。
5 · 参考文献
- Triangulation (surveying). Wikipedia. 三角测量:由基线与两个角定出目标位置。https://en.wikipedia.org/wiki/Triangulation_(surveying)
- Bearing (navigation). Wikipedia. 方位角的定义:以正北为零、顺时针为正。https://en.wikipedia.org/wiki/Bearing_(navigation)
- Resection (orientation). Wikipedia. 交会定位,由两站方位角求目标点。https://en.wikipedia.org/wiki/Resection_(orientation)
- Theodolite. Wikipedia. 经纬仪,水平角与竖直角的实测器具及其精度。https://en.wikipedia.org/wiki/Theodolite
- Spherical trigonometry. Wikipedia. 球面三角,平面近似失效之后的接续。https://en.wikipedia.org/wiki/Spherical_trigonometry