法向量与线面角
综合几何求线面角要先作出斜线在平面内的射影,而射影要靠找垂足,垂足往往要靠一条辅助线。向量法把这三步压成一步:平面由它的法向量代表,斜线的方向向量与法向量的夹角与所求的角互余,一次数量积就够。射影仍然存在,只是不再需要作出来。
1 · 平面的法向量
定义 1.1(法向量) 与平面 垂直的非零向量称 的法向量。
法向量不唯一:所有与 垂直的向量互相共线,构成两条相反的方向。这一点在后面反复起作用:凡是结果不该依赖朝向的量,公式里必须出现绝对值或比值。
求法向量有两条路。一是解方程组:设 ,取平面内两个不共线向量 、,由 与 得两个方程三个未知量,令某个分量为 1 后解出另两个。二是直接取叉积 ,它天然同时垂直于两者。两条路给出的是同一个方向,差一个倍数。
叉积算出的分量常带公因数。正四棱锥
-(底边 2、高 2)侧面
的叉积原值是
,课本写
。约简只是换一个同向的代表元:角与距离的公式里法向量都以比值出现,结果不受影响。integerNormal 因此在读数里印约简后的整数形,坐标含无理数时(正四面体)它返回空值,那时改印单位向量。
2 · 线面角
定理 2.1 设直线 的方向向量为 ,平面 的法向量为 , 与 所成的角为 。则
推导只有一句: 与 所成的角,按定义是 与它在 内的射影所成的角;而 与 所成的角与之互余,故正弦换成余弦。
绝对值不是为了让结果好看。 取反时 变成它的补角,余弦变号,而线面角不该跟着变。这也说明线面角的取值只在 到 之间:它没有钝角,也没有方向。两个端点值各有含义—— 表示 落在 内或与 平行(), 表示 ( 与 共线)。
单测把这条定理与它的定义对起来验:在平面内扫一圈方向向量,取与 的夹角的最小值,那个最小值就是线面角。这是「斜线与平面内所有直线所成角中最小」这一性质的直接兑现,与被测的公式无关。
3 · 一个完整的算例
例 3.1 正四棱锥 - 底边为 2、高为 2。取 为原点,、 沿两条轴,则 、、、。
侧棱 与底面:底面的法向量取 ,,,。
侧棱 与侧面 :、,叉积得 ,约简为 。,,,。
底面对角线 与侧面 :,同一个 给出 ,。
同一个棱锥上还有一种取法值得单看: 与侧面 所成的角是 ,因为 与 平行,而 落在 内,故 平行于该平面。此时 ,与「 落在 内」给出同一个读数——向量法读不出这两者的分别,它只看方向与法向量是否垂直。要区分得另看一个点是否在平面上。
4 · 读数能到几位
法向量取整与不取整对读数有影响,量级值得记一笔。长方体 中,平面 的叉积原值是 ,三个分量已互素,读数印它是精确的;体对角线 与该平面的线面角是 。若改用单位化后四舍五入的法向量,同一个角变成:保留两位小数 给 ,偏 ;三位给 ,偏 ;四位给 ,偏 。选整数向量作代表元不只是为了好看。
另一头的精度问题来自 acos 本身。直线几乎垂直于平面时,
贴近 1,而 acos 在 1 附近条件数极差:余弦上
的误差放大成约
弧度。实测方向
与底面的真实线面角是
,算出的是整
;扰动放大到
时误差降到
。改走 asin 并不能救:余弦已经被夹到 1,信息在夹的那一步就丢了。
注 · 这个下限是方法本身的,不是实现的偏差,shared/geom3d.ts 的单测里记着同一现象的另一面:一对严格同向的向量,夹角只能算到
度量级。对中学阶段的题目它无关紧要——答案要么是特殊角,要么保留两三位小数。它值得写下来是因为「读数印到小数第四位」这件事本身在暗示精度,而那一位在这一带并不可靠。
5 · 参考文献
- Normal (geometry). Wikipedia. 法向量的定义与它的不唯一性。https://en.wikipedia.org/wiki/Normal_(geometry)
- Cross product. Wikipedia. 叉积同时垂直于两个因子,求法向量的直接办法。https://en.wikipedia.org/wiki/Cross_product
- Vector projection. Wikipedia. 投影向量与正交分解,射影这一步的代数写法。https://en.wikipedia.org/wiki/Vector_projection
- Condition number. Wikipedia. 条件数,解释 acos 在 1 附近为何只剩几位有效数字。https://en.wikipedia.org/wiki/Condition_number