内容 必须掌握的 后面在哪用到
三角形基本性质 内角和与外角定理、三边关系、三线合一、中位线 三边关系就是三角不等式的几何原型
全等与相似 判定条件;面积比是相似比的平方 针孔相机模型、单目测距、图像金字塔
角平分线定理 A B : A C = B D : D C AB:AC = BD:DC AB:AC=BD:DC 按边长比例分割线段
垂直与斜率 l 1 ⊥ l 2    ⟺    k 1 k 2 = − 1 l_1\perp l_2 \iff k_1k_2=-1 l1l2k1k2=1 法线与切线垂直、梯度与等高线垂直、三维点积为零的二维特例
勾股定理 定理与逆定理;勾股数 欧氏距离、向量的模、二范数的几何来源
圆与角 圆周角定理及推论、垂径定理、切线、四心 隐圆判定、RANSAC 圆拟合、质心与重心坐标
位置关系 点/直线/圆与圆的位置判定 包围圆碰撞检测、符号距离场 SDF、射线求交
弧长与扇形 l = θ r l=\theta r l=θr S = 1 2 θ r 2 S=\frac{1}{2}\theta r^2 S=21θr2 弧度制的由来、角速度与线速度的换算
三角形面积 底乘高、两边夹角、坐标形式 坐标形式就是二维叉乘

一、三角形的基本性质

三角形的基本性质

内角和 ∠ A + ∠ B + ∠ C = 180 ∘ \angle A + \angle B + \angle C = 180^{\circ} A+B+C=180

外角定理:三角形的一个外角,等于与它不相邻的两个内角之和。图左中 ∠ A C D = ∠ A + ∠ B \angle ACD = \angle A + \angle B ACD=A+B

由内角和立刻可得: ∠ A C D = 180 ∘ − ∠ A C B = ∠ A + ∠ B \angle ACD = 180^{\circ}-\angle ACB = \angle A + \angle B ACD=180ACB=A+B。这条在上一章圆周角定理的证明里是关键一步。

三边关系:任意两边之和大于第三边,任意两边之差的绝对值小于第三边:

∣ b − c ∣ < a < b + c \lvert b-c \rvert \lt a \lt b+c bc<a<b+c

这就是三角不等式的几何原型。第 1 篇里的 ∣ a + b ∣ ≤ ∣ a ∣ + ∣ b ∣ \lvert a+b \rvert \le \lvert a \rvert + \lvert b \rvert a+ba+b 是它的代数版本,后面向量的 ∥ u + v ∥ ≤ ∥ u ∥ + ∥ v ∥ \lVert \mathbf{u}+\mathbf{v} \rVert \le \lVert \mathbf{u} \rVert + \lVert \mathbf{v} \rVert u+vu+v 是它的高维版本。三者说的是同一件事:折线走不过直线

等腰三角形:两腰相等则两底角相等(等边对等角),反过来也成立。核心是三线合一——顶角平分线、底边上的中线、底边上的高,三条线重合(图中)。垂径定理的证明用的就是这一条。

中位线定理:连接三角形两边中点的线段,平行于第三边且等于第三边的一半(图右)。

D E ∥ B C DE \parallel BC DEBC D E = 1 2 B C DE = \dfrac{1}{2}BC DE=21BC

证明用相似: A D : A B = A E : A C = 1 : 2 AD:AB = AE:AC = 1:2 AD:AB=AE:AC=1:2 且夹角 ∠ A \angle A A 公共,由 SAS 得 △ A D E ∼ △ A B C \triangle ADE \sim \triangle ABC ADEABC,相似比 1 : 2 1:2 1:2,于是对应边成比例、对应角相等(同位角相等推出平行)。

二、全等与相似

全等是形状和大小都相同,相似只要求形状相同、大小可以不同。相似是这一节的重点,因为相机成像就是一个相似变换。

判定条件

全等三角形:

  • SSS:三边对应相等
  • SAS:两边及其夹角对应相等
  • ASA / AAS:两角及一边对应相等
  • HL:直角三角形,斜边和一条直角边对应相等

相似三角形:

  • AA:两角对应相等(最常用,因为角度信息最容易获得)
  • SAS:两边对应成比例且夹角相等
  • SSS:三边对应成比例

性质

设相似比为 k k k(对应边之比):

  • 对应边之比都等于 k k k,对应角相等
  • 周长之比等于 k k k
  • 面积之比等于 k 2 k^2 k2
  • 对应中线、对应高、对应角平分线之比都等于 k k k

面积比是相似比的平方这一条要特别记牢:物体距离相机变远一倍,成像面积变成四分之一,图像上目标像素数随距离平方衰减,就是这条。

平行线分线段成比例

三条平行线截两条直线,所得对应线段成比例。用在三角形上就是基本比例定理

平行于三角形一边的直线,截其他两边所得的对应线段成比例。即 D E ∥ B C DE \parallel BC DEBC

A D D B = A E E C \dfrac{AD}{DB} = \dfrac{AE}{EC} DBAD=ECAE

它是相似三角形的来源—— D E ∥ B C DE \parallel BC DEBC △ A D E ∼ △ A B C \triangle ADE \sim \triangle ABC ADEABC。反过来也成立,比例相等可以反推平行。

角平分线定理

三角形一个内角的平分线,把对边分成的两条线段之比,等于这个角的两边之比:

A D AD AD 平分 ∠ A \angle A A D D D B C BC BC 上,则 A B A C = B D D C \dfrac{AB}{AC} = \dfrac{BD}{DC} ACAB=DCBD

角平分线定理

推导(只用上面两条工具,不需要三角函数):

过点 C C C C E ∥ A D CE \parallel AD CEAD,与 B A BA BA 的延长线交于点 E E E(图右)。

第一步,证明 △ A C E \triangle ACE ACE 是等腰三角形。

  • A D ∥ C E AD \parallel CE ADCE B E BE BE 是截线,同位角相等: ∠ B A D = ∠ A E C \angle BAD = \angle AEC BAD=AEC
  • A D ∥ C E AD \parallel CE ADCE A C AC AC 是截线,内错角相等: ∠ D A C = ∠ A C E \angle DAC = \angle ACE DAC=ACE
  • 已知 A D AD AD 平分 ∠ A \angle A A,即 ∠ B A D = ∠ D A C \angle BAD = \angle DAC BAD=DAC

三式连起来得 ∠ A E C = ∠ A C E \angle AEC = \angle ACE AEC=ACE,所以 △ A C E \triangle ACE ACE 等腰, A E = A C AE = AC AE=AC

第二步,在 △ B E C \triangle BEC BEC 中用基本比例定理。 A D ∥ E C AD \parallel EC ADEC A D AD AD B E BE BE B C BC BC 两边,于是

B D D C = B A A E \dfrac{BD}{DC} = \dfrac{BA}{AE} DCBD=AEBA

第三步,把 A E = A C AE = AC AE=AC 代进去:

B D D C = A B A C \dfrac{BD}{DC} = \dfrac{AB}{AC} DCBD=ACAB

另一种推法(用第四节的面积公式,两行): △ A B D \triangle ABD ABD △ A C D \triangle ACD ACD 共用从 A A A 出发的高,面积比等于底之比 B D : D C BD:DC BD:DC;同时按 S = 1 2 a b sin ⁡ C S=\frac{1}{2}ab\sin C S=21absinC,两者面积比又等于 A B ⋅ A D sin ⁡ ∠ B A D AB \cdot AD \sin\angle BAD ABADsinBAD A C ⋅ A D sin ⁡ ∠ D A C AC \cdot AD \sin\angle DAC ACADsinDAC 之比,因两角相等,化简即得 A B : A C AB:AC AB:AC。两式相等即证。

外角平分线同样成立,只是 D D D 落在 B C BC BC 的延长线上,结论写成 A B A C = B D D C \dfrac{AB}{AC} = \dfrac{BD}{DC} ACAB=DCBD 不变。

垂直与斜率之积

两条不垂直于坐标轴的直线 l 1 l_1 l1 l 2 l_2 l2 互相垂直,当且仅当它们的斜率满足

k 1 k 2 = − 1 k_1 k_2 = -1 k1k2=1

垂直与斜率之积

证明(只用相似,不用三角函数):设两线交于 P P P,取 l 1 l_1 l1 上一点 A A A l 2 l_2 l2 上一点 B B B(在 P P P 两侧,如图),分别向过 P P P 的水平参照线作垂线,垂足是 C C C D D D

第一步,两个直角三角形的一个锐角相等。 ∠ A P C \angle APC APC ∠ B P D \angle BPD BPD 互余于 ∠ A P B = 90 ∘ \angle APB=90^{\circ} APB=90 P P P C C C D D D 共线于水平参照线, ∠ A P C + ∠ A P B + ∠ B P D = 180 ∘ \angle APC+\angle APB+\angle BPD=180^{\circ} APC+APB+BPD=180,代入 ∠ A P B = 90 ∘ \angle APB=90^{\circ} APB=90 ∠ A P C + ∠ B P D = 90 ∘ \angle APC+\angle BPD=90^{\circ} APC+BPD=90);又在直角三角形 B D P BDP BDP ∠ D B P + ∠ B P D = 90 ∘ \angle DBP+\angle BPD=90^{\circ} DBP+BPD=90。两式消去 ∠ B P D \angle BPD BPD,得

∠ C P A = ∠ D B P    ( = θ ) \angle CPA = \angle DBP \;(=\theta) CPA=DBP(=θ)

第二步,AA 判定相似。 △ P C A \triangle PCA PCA △ B D P \triangle BDP BDP 中, ∠ P C A = ∠ B D P = 90 ∘ \angle PCA=\angle BDP=90^{\circ} PCA=BDP=90,且 ∠ C P A = ∠ D B P \angle CPA=\angle DBP CPA=DBP,所以

△ P C A ∼ △ B D P \triangle PCA \sim \triangle BDP PCABDP

对应边成比例: C A D P = P C B D \dfrac{CA}{DP} = \dfrac{PC}{BD} DPCA=BDPC,交叉相乘得

P C ⋅ P D = C A ⋅ D B PC \cdot PD = CA \cdot DB PCPD=CADB

第三步,代入斜率。设 C C C D D D 在参照线上分别位于 P P P 的右侧、左侧(如图),则

k 1 = C A P C k_1 = \dfrac{CA}{PC} k1=PCCA k 2 = − D B P D k_2 = -\dfrac{DB}{PD} k2=PDDB

负号是因为 B B B 相对 P P P x x x 减小的方向,斜率必须为负( θ \theta θ 是锐角, k 2 k_2 k2 的大小是 D B / P D DB/PD DB/PD,符号由方向决定)。两式相乘:

k 1 k 2 = C A P C ⋅ ( − D B P D ) = − C A ⋅ D B P C ⋅ P D k_1 k_2 = \dfrac{CA}{PC} \cdot \left(-\dfrac{DB}{PD}\right) = -\dfrac{CA \cdot DB}{PC \cdot PD} k1k2=PCCA(PDDB)=PCPDCADB

代入第二步的 P C ⋅ P D = C A ⋅ D B PC \cdot PD = CA \cdot DB PCPD=CADB,分子分母相等:

k 1 k 2 = − 1 k_1 k_2 = -1 k1k2=1

反之若 k 1 k 2 = − 1 k_1k_2=-1 k1k2=1,把上述步骤逆推回去可知 ∠ C P A = ∠ D B P \angle CPA=\angle DBP CPA=DBP,从而 ∠ A P B = 90 ∘ \angle APB=90^{\circ} APB=90,两线垂直。充要性成立。

在具身智能里的用途:法线方向与切线方向垂直( k 法 = − 1 / k 切 k_{\text{法}} = -1/k_{\text{切}} k=1/k),用在光线反射、梯度下降的方向与等高线垂直、SDF 梯度与表面垂直等场景。三维情形对应向量点积为零 u ⋅ v = 0 \mathbf{u}\cdot\mathbf{v}=0 uv=0,这条二维斜率公式是它的坐标特例。

图示:针孔相机成像

针孔相机的相似三角形

物体高 X X X,距光心 Z Z Z;成像平面距光心 f f f,像高 x x x,倒立。

光线从物体顶端穿过光心射到成像平面,在光心两侧形成一对对顶的相似三角形(一组对顶角相等,两组直角相等,由 AA 判定相似)。于是

x f = X Z \dfrac{x}{f} = \dfrac{X}{Z} fx=ZX

这就是针孔相机模型的全部内容。变形得 x = f X Z x = f\dfrac{X}{Z} x=fZX:像高与物高成正比,与距离成反比。单目相机只能测出 X Z \dfrac{X}{Z} ZX 这个比值,无法单独定出 X X X Z Z Z——这就是单目尺度不确定性的几何来源。

三、勾股定理

直角三角形中,两直角边 a a a b b b 与斜边 c c c 满足

a 2 + b 2 = c 2 a^2+b^2 = c^2 a2+b2=c2

逆定理同样重要:若三边满足 a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2,则该三角形必是直角三角形。逆定理是判定垂直的手段,不需要量角度。

图示:面积证明

勾股定理的面积证明

边长 a + b a+b a+b 的大正方形,四个角上各放一个直角边为 a a a b b b 的直角三角形,中间围出的是边长为 c c c 的正方形。按面积相等:

( a + b ) 2 = 4 × 1 2 a b + c 2 (a+b)^2 = 4 \times \dfrac{1}{2}ab + c^2 (a+b)2=4×21ab+c2

左边展开 a 2 + 2 a b + b 2 a^2+2ab+b^2 a2+2ab+b2,两边同时减去 2 a b 2ab 2ab,得 a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2

中间那块是正方形而不是一般四边形,理由是:四条边都等于 c c c,且每个顶点处两个锐角之和为 90 ∘ 90^{\circ} 90,所以内角都是直角。

常见勾股数

整数解 ( a , b , c ) (a,b,c) (a,b,c) 满足 a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2 的叫勾股数,记住这几组能加快心算:

  • ( 3 , 4 , 5 ) (3,4,5) (3,4,5) 及其倍数 ( 6 , 8 , 10 ) (6,8,10) (6,8,10) ( 9 , 12 , 15 ) (9,12,15) (9,12,15)
  • ( 5 , 12 , 13 ) (5,12,13) (5,12,13)
  • ( 8 , 15 , 17 ) (8,15,17) (8,15,17)
  • ( 7 , 24 , 25 ) (7,24,25) (7,24,25)

推广到坐标与高维

平面上两点 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2) 的距离

d = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d = \sqrt{(x_2-x_1)^2+(y_2-y_1)^2} d=(x2x1)2+(y2y1)2

就是把坐标差当直角边用一次勾股定理。三维再套一次:

d = ( Δ x ) 2 + ( Δ y ) 2 + ( Δ z ) 2 d = \sqrt{(\Delta x)^2+(\Delta y)^2+(\Delta z)^2} d=(Δx)2+(Δy)2+(Δz)2

推到 n n n 维就是向量的二范数 ∥ v ∥ 2 = ∑ v i 2 \lVert \mathbf{v} \rVert_2 = \sqrt{\sum v_i^2} v2=vi2 勾股定理是欧氏距离的唯一来源,后面所有"距离"的定义都以它为原型。

四、圆与角

圆是平面上到定点(圆心)距离等于定值(半径)的点的集合,写成方程就是 ( x − a ) 2 + ( y − b ) 2 = r 2 (x-a)^2+(y-b)^2 = r^2 (xa)2+(yb)2=r2

先约定名称:

  • 圆心角:顶点在圆心的角,如 ∠ B O C \angle BOC BOC
  • 圆周角:顶点在圆上、两边都与圆相交的角,如 ∠ B A C \angle BAC BAC
  • :圆上两点间的一段, B C ⌢ \overset{\frown}{BC} BC。一条弦把圆分成劣弧和优弧两段
  • 同弧:指同一条弧。"同弧所对的角"意思是这个角的两边分别经过这条弧的两个端点,而角的顶点不在这条弧上

弧、弦、圆心角三者一一对应:在同一个圆里,两条弧相等 ⟺ 所对的弦相等 ⟺ 所对的圆心角相等。所以后面说"弧相等"和说"圆心角相等"是一回事。

圆周角定理

同一条弧所对的圆周角,等于它所对的圆心角的一半。

∠ B A C = 1 2 ∠ B O C \angle BAC = \dfrac{1}{2}\angle BOC BAC=21BOC

圆周角定理三种情况

证明要按圆心 O O O 相对于 ∠ B A C \angle BAC BAC 的位置分三种情况,图上三栏依次对应。核心工具只有两个:半径相等构成等腰三角形,以及三角形的外角等于不相邻两内角之和

情况一,圆心在角的一边上(图左, A B AB AB 恰好是直径)。

O C OC OC。因为 O A = O C OA = OC OA=OC(同圆半径), △ O A C \triangle OAC OAC 是等腰三角形,所以

∠ O A C = ∠ O C A \angle OAC = \angle OCA OAC=OCA

∠ B O C \angle BOC BOC △ O A C \triangle OAC OAC 在顶点 O O O 处的外角,等于不相邻两内角之和:

∠ B O C = ∠ O A C + ∠ O C A = 2 ∠ O A C = 2 ∠ B A C \angle BOC = \angle OAC + \angle OCA = 2\angle OAC = 2\angle BAC BOC=OAC+OCA=2∠OAC=2∠BAC

情况二,圆心在角的内部(图中)。

作直径 A D AD AD,把 ∠ B A C \angle BAC BAC 拆成 ∠ B A D \angle BAD BAD ∠ D A C \angle DAC DAC。这两个角各自都落回情况一,于是

∠ B O D = 2 ∠ B A D \angle BOD = 2\angle BAD BOD=2∠BAD ∠ D O C = 2 ∠ D A C \angle DOC = 2\angle DAC DOC=2∠DAC

两式相加: ∠ B O C = ∠ B O D + ∠ D O C = 2 ( ∠ B A D + ∠ D A C ) = 2 ∠ B A C \angle BOC = \angle BOD + \angle DOC = 2(\angle BAD + \angle DAC) = 2\angle BAC BOC=BOD+DOC=2(BAD+DAC)=2∠BAC

情况三,圆心在角的外部(图右)。

同样作直径 A D AD AD,此时 ∠ B A C \angle BAC BAC 是两个角的而不是和:

∠ D O C = 2 ∠ D A C \angle DOC = 2\angle DAC DOC=2∠DAC ∠ D O B = 2 ∠ D A B \angle DOB = 2\angle DAB DOB=2∠DAB

两式相减: ∠ B O C = ∠ D O C − ∠ D O B = 2 ( ∠ D A C − ∠ D A B ) = 2 ∠ B A C \angle BOC = \angle DOC - \angle DOB = 2(\angle DAC - \angle DAB) = 2\angle BAC BOC=DOCDOB=2(DACDAB)=2∠BAC

三种情况都成立,定理得证。作直径把一般情形归约到情况一,是这个证明的全部技巧。

三个推论

圆周角定理的推论

推论一:同弧或等弧所对的圆周角相等。

因为它们都等于同一个圆心角的一半。图左中 P P P Q Q Q 是优弧上任意两点, ∠ B P C = ∠ B Q C \angle BPC = \angle BQC BPC=BQC,与点在优弧上怎么滑动无关。

这条的逆命题给出四点共圆的判定:若 P P P Q Q Q 在直线 B C BC BC 同侧且 ∠ B P C = ∠ B Q C \angle BPC = \angle BQC BPC=BQC,则 B B B C C C P P P Q Q Q 四点共圆。

推论二:半圆(直径)所对的圆周角是直角。

直径对应的圆心角是平角 180 ∘ 180^{\circ} 180,一半即 90 ∘ 90^{\circ} 90

逆命题同样成立且更常用: ∠ B A C = 90 ∘ \angle BAC = 90^{\circ} BAC=90,则 A A A 落在以 B C BC BC 为直径的圆上。于是"直角"这个条件可以直接翻译成"点在某个圆上",这就是解题中所谓的隐圆。

推论三:圆内接四边形对角互补。

∠ A + ∠ C = 180 ∘ \angle A + \angle C = 180^{\circ} A+C=180 ∠ B + ∠ D = 180 ∘ \angle B + \angle D = 180^{\circ} B+D=180

证明: ∠ A \angle A A ∠ C \angle C C 分别对着 B C D ⌢ \overset{\frown}{BCD} BCD B A D ⌢ \overset{\frown}{BAD} BAD 这两条弧,它们合起来是整个圆周 360 ∘ 360^{\circ} 360。由圆周角定理,两角之和等于这两条弧对应圆心角之和的一半,即 360 ∘ 2 = 180 ∘ \dfrac{360^{\circ}}{2}=180^{\circ} 2360=180

逆命题也成立,是四点共圆的另一个判定。

垂径定理

垂径定理

垂直于弦的直径,平分这条弦,并且平分弦所对的两条弧。

证明:连 O A OA OA O B OB OB O A = O B OA = OB OA=OB(半径),故 △ O A B \triangle OAB OAB 等腰。等腰三角形三线合一——顶角平分线、底边中线、底边高互相重合。已知 O D ⊥ A B OD \perp AB ODAB M M M,即 O M OM OM 是底边上的高,所以它同时是中线, A M = M B AM = MB AM=MB;也是顶角平分线, ∠ A O D = ∠ B O D \angle AOD = \angle BOD AOD=BOD,所以两条弧也相等。

逆定理:平分弦(这条弦不是直径)的直径,必定垂直于这条弦。

由垂径定理直接得弦长公式:圆心到弦的距离为 d d d,半径为 r r r,则

弦长 = 2 r 2 − d 2 = 2\sqrt{r^2-d^2} =2r2d2

推导就是在 △ O M A \triangle OMA OMA 里用一次勾股定理。

切线

圆的切线

切线性质:圆的切线垂直于过切点的半径。

证明(反证法):设切线 l l l 与圆切于 P P P,若 O P OP OP 不垂直于 l l l,作 O H ⊥ l OH \perp l OHl H H H,则 O H < O P = r OH \lt OP = r OH<OP=r。这说明圆心到直线的距离小于半径,直线必与圆有两个交点,与"切线只有一个公共点"矛盾。故 O P ⊥ l OP \perp l OPl

切线判定:过半径外端且垂直于这条半径的直线是圆的切线。

切线长定理:从圆外一点 Q Q Q 引圆的两条切线,两条切线长相等,即 Q P 1 = Q P 2 QP_1 = QP_2 QP1=QP2;且 O Q OQ OQ 平分 ∠ P 1 Q P 2 \angle P_1QP_2 P1QP2

证明 O P 1 = O P 2 = r OP_1 = OP_2 = r OP1=OP2=r ∠ O P 1 Q = ∠ O P 2 Q = 90 ∘ \angle OP_1Q = \angle OP_2Q = 90^{\circ} OP1Q=OP2Q=90 O Q OQ OQ 公共,由 HL 判定 △ O P 1 Q ≅ △ O P 2 Q \triangle OP_1Q \cong \triangle OP_2Q OP1QOP2Q,于是对应边 Q P 1 = Q P 2 QP_1 = QP_2 QP1=QP2、对应角 ∠ P 1 Q O = ∠ P 2 Q O \angle P_1QO = \angle P_2QO P1QO=P2QO

外接圆与内切圆

这两个概念最容易混,先记住区别:外接圆过三个顶点,内切圆与三条边相切

外接圆与内切圆

外接圆:过三角形三个顶点的圆。圆心叫外心,是三边垂直平分线的交点

证明:垂直平分线的本质是"到线段两端距离相等的点的集合"。设 B C BC BC A B AB AB 的垂直平分线交于 O O O,则

  • O O O B C BC BC 的垂直平分线上 ⇒ O B = O C \Rightarrow OB = OC OB=OC
  • O O O A B AB AB 的垂直平分线上 ⇒ O A = O B \Rightarrow OA = OB OA=OB

于是 O A = O B = O C OA = OB = OC OA=OB=OC。由 O A = O C OA = OC OA=OC 反推, O O O 也必在 A C AC AC 的垂直平分线上,三线共点。以 O O O 为圆心、 O A OA OA 为半径的圆同时过三个顶点。

外心的位置随三角形形状变化:锐角三角形在内部,直角三角形恰在斜边中点(因为斜边所对的圆周角是直角,斜边就是直径),钝角三角形在外部。

外接圆半径 R = a b c 4 S R = \dfrac{abc}{4S} R=4Sabc,其中 S S S 是三角形面积。

内切圆:与三角形三条边都相切的圆。圆心叫内心,是三条角平分线的交点

证明:角平分线的本质是"到角两边距离相等的点的集合"。设 ∠ A \angle A A ∠ B \angle B B 的平分线交于 I I I,则

  • I I I ∠ A \angle A A 的平分线上 ⇒ \Rightarrow I I I A B AB AB A C AC AC 的距离相等
  • I I I ∠ B \angle B B 的平分线上 ⇒ \Rightarrow I I I A B AB AB B C BC BC 的距离相等

于是 I I I 到三条边的距离全部相等。由"到 A C AC AC B C BC BC 距离相等"反推, I I I 也在 ∠ C \angle C C 的平分线上,三线共点。以 I I I 为圆心、这个公共距离为半径的圆与三边都相切(半径垂直于边,正是切线判定)。

内心永远在三角形内部,这一点和外心不同。

内切圆半径由面积得出:把三角形按内心切成三块,每块以一条边为底、以 r r r 为高,于是 S = 1 2 r ( a + b + c ) = r p S = \dfrac{1}{2}r(a+b+c) = rp S=21r(a+b+c)=rp,其中 p p p 是半周长。所以

r = S p r = \dfrac{S}{p} r=pS

两个圆心的对照

外接圆 内切圆
与三角形的关系 过三个顶点 与三条边相切
圆心叫法 外心 内心
圆心是什么的交点 三边垂直平分线 三条角平分线
圆心的本质性质 到三个顶点距离相等 到三条距离相等
位置 可能在三角形外 一定在三角形内
半径 R = a b c 4 S R = \dfrac{abc}{4S} R=4Sabc r = S p r = \dfrac{S}{p} r=pS

三角形的四心

上面讲了外心和内心,把四个心放在一起对照,其中重心在具身智能里用得最多。

三角形的重心与垂心

重心 G G G:三条中线的交点。两条关键性质:

  • 重心把每条中线分成 2 : 1 2:1 2:1 两段,靠近顶点的那段是靠近对边的两倍
  • 坐标就是三个顶点的算术平均: G = A + B + C 3 G = \dfrac{A+B+C}{3} G=3A+B+C

第二条把重心和"质心"直接连起来:均匀薄片三角形的质心就是重心;推广到 n n n 个点,质心就是 1 n ∑ P i \dfrac{1}{n}\sum P_i n1Pi,这正是点云求中心的做法。

证明(两条性质一起证):

重心性质的证明

M M M B C BC BC 中点, N N N A B AB AB 中点,中线 A M AM AM C N CN CN 交于 G G G

第一步,连接 M N MN MN。由中位线定理, M N MN MN △ A B C \triangle ABC ABC 中连接 B C BC BC A B AB AB 两边中点的线段,所以

M N ∥ A C MN \parallel AC MNAC M N = 1 2 A C MN = \dfrac{1}{2}AC MN=21AC

第二步,用 AA 判定相似。 M N ∥ A C MN \parallel AC MNAC 被直线 A M AM AM C N CN CN 所截,产生两组内错角:

  • ∠ N M G = ∠ G A C \angle NMG = \angle GAC NMG=GAC A M AM AM M N MN MN A C AC AC
  • ∠ M N G = ∠ G C A \angle MNG = \angle GCA MNG=GCA C N CN CN M N MN MN A C AC AC

于是 △ G M N ∼ △ G C A \triangle GMN \sim \triangle GCA GMNGCA,相似比等于 M N : C A = 1 : 2 MN:CA = 1:2 MN:CA=1:2

第三步,读出比例。相似比给出 G M : G A = G N : G C = 1 : 2 GM:GA = GN:GC = 1:2 GM:GA=GN:GC=1:2,即

A G : G M = 2 : 1 AG:GM = 2:1 AG:GM=2:1 C G : G N = 2 : 1 CG:GN = 2:1 CG:GN=2:1

第四步,证明三线共点。设第三条中线(由 B B B A C AC AC 中点 K K K)与 A M AM AM 交于 G ′ G^{\prime} G,对 ( A M ,   B K ) (AM,\,BK) (AM,BK) 这一对中线重复上面的论证,同样得到 A G ′ : G ′ M = 2 : 1 AG^{\prime}:G^{\prime}M=2:1 AG:GM=2:1。而在线段 A M AM AM 上,满足 A G : G M = 2 : 1 AG:GM=2:1 AG:GM=2:1 的点唯一,所以 G ′ = G G^{\prime}=G G=G。三条中线交于同一点。

第五步,坐标公式。由 A G : G M = 2 : 1 AG:GM=2:1 AG:GM=2:1 G G G A M AM AM 分成 2 : 1 2:1 2:1,代入定比分点:

G = A + 2 3 ( M − A ) = 1 3 A + 2 3 ⋅ B + C 2 = A + B + C 3 G = A + \dfrac{2}{3}(M-A) = \dfrac{1}{3}A + \dfrac{2}{3} \cdot \dfrac{B+C}{2} = \dfrac{A+B+C}{3} G=A+32(MA)=31A+322B+C=3A+B+C

推广到 n n n 个点,质心就是 1 n ∑ P i \dfrac{1}{n}\sum P_i n1Pi,这正是点云求中心的做法。

再推广一步得到重心坐标:三角形内任一点都能唯一写成

P = α A + β B + γ C P = \alpha A + \beta B + \gamma C P=αA+βB+γC,其中 α + β + γ = 1 \alpha+\beta+\gamma = 1 α+β+γ=1 α , β , γ ≥ 0 \alpha,\beta,\gamma \ge 0 α,β,γ0

重心对应 α = β = γ = 1 3 \alpha=\beta=\gamma=\dfrac{1}{3} α=β=γ=31。这套坐标是三角网格插值、点在三角形内判定、光栅化的标准工具, α , β , γ \alpha,\beta,\gamma α,β,γ 的几何意义就是三个小三角形的面积占比。

垂心 H H H:三条高的交点。锐角三角形在内部,直角三角形恰在直角顶点,钝角三角形在外部。

欧拉线:外心 O O O、重心 G G G、垂心 H H H 三点永远共线,且 O G : G H = 1 : 2 OG:GH = 1:2 OG:GH=1:2

欧拉线

图中绿色虚线是三条高,垂足处的直角标记表示它们确实垂直于对边;紫色线是欧拉线, O O O G G G H H H 依次排开。下面把证明拆成能一步步核对的小步骤。

准备工作:位置向量是什么。取外心 O O O 作坐标原点,每个点就用"从 O O O 出发指向它的向量"来表示——这其实就是把 O O O 当成 ( 0 , 0 ) (0,0) (0,0) A A A B B B C C C坐标就是它们的位置向量,记作 a \mathbf{a} a b \mathbf{b} b c \mathbf{c} c。因为 O O O 是外心, A A A B B B C C C 都在外接圆上,所以

∣ a ∣ = ∣ b ∣ = ∣ c ∣ = R \lvert\mathbf{a}\rvert=\lvert\mathbf{b}\rvert=\lvert\mathbf{c}\rvert=R a=b=c=R

这只是把" O A = O B = O C = R OA=OB=OC=R OA=OB=OC=R"翻译成了向量的语言。

要用到的一个事实:点积为零    ⟺    \iff 垂直。两个非零向量 u \mathbf{u} u v \mathbf{v} v 的点积定义为 u ⋅ v = ∣ u ∣ ∣ v ∣ cos ⁡ θ \mathbf{u}\cdot\mathbf{v}=\lvert\mathbf{u}\rvert\lvert\mathbf{v}\rvert\cos\theta uv=uvcosθ θ \theta θ 是夹角)。当 θ = 90 ∘ \theta=90^{\circ} θ=90 cos ⁡ θ = 0 \cos\theta=0 cosθ=0,点积为零;反过来点积为零也只能是 cos ⁡ θ = 0 \cos\theta=0 cosθ=0。所以后面只要算出某两个向量的点积等于 0 0 0,就等于证明了它们垂直——这是整个证明唯一要用的工具。

第一步:猜一个点,验证它是垂心。直接定义

H = a + b + c H = \mathbf{a}+\mathbf{b}+\mathbf{c} H=a+b+c

这只是三个坐标相加,此刻还不知道它是谁,先验证它满足"垂心"的定义——从每个顶点出发的高都经过它。只需验证 A H ⊥ B C AH \perp BC AHBC(其余两条同理,换个字母重复一遍就行)。

先说清楚"两点间的向量"怎么用位置向量表示:对任意两点 P P P Q Q Q,从 P P P 指向 Q Q Q 的向量 P Q → \overrightarrow{PQ} PQ 等于 Q Q Q 的位置向量减去 P P P 的位置向量,即 P Q → = q − p \overrightarrow{PQ}=\mathbf q-\mathbf p PQ =qp。这是向量加法的三角形法则的直接推论:从 O O O 走到 P P P 再走到 Q Q Q,等于直接从 O O O 走到 Q Q Q,即 p + P Q → = q \mathbf p+\overrightarrow{PQ}=\mathbf q p+PQ =q,移项就得到 P Q → = q − p \overrightarrow{PQ}=\mathbf q-\mathbf p PQ =qp

代入 A A A H H H B B B C C C 各自的位置向量:

A H → = H − a = ( a + b + c ) − a = b + c \overrightarrow{AH} = H-\mathbf{a} = (\mathbf a+\mathbf b+\mathbf c)-\mathbf a = \mathbf{b}+\mathbf{c} AH =Ha=(a+b+c)a=b+c B C → = c − b \overrightarrow{BC} = \mathbf{c}-\mathbf{b} BC =cb

把这两个向量点乘,逐项展开(点积对加减法可以像乘法分配律一样展开):

A H → ⋅ B C → = ( b + c ) ⋅ ( c − b ) = b ⋅ c − b ⋅ b + c ⋅ c − c ⋅ b \overrightarrow{AH}\cdot\overrightarrow{BC} = (\mathbf{b}+\mathbf{c})\cdot(\mathbf{c}-\mathbf{b}) = \mathbf{b}\cdot\mathbf{c}-\mathbf{b}\cdot\mathbf{b}+\mathbf{c}\cdot\mathbf{c}-\mathbf{c}\cdot\mathbf{b} AH BC =(b+c)(cb)=bcbb+cccb

b ⋅ c \mathbf{b}\cdot\mathbf{c} bc c ⋅ b \mathbf{c}\cdot\mathbf{b} cb 是同一个数(点积可交换),正负抵消; b ⋅ b = ∣ b ∣ 2 \mathbf{b}\cdot\mathbf{b}=\lvert\mathbf{b}\rvert^2 bb=b2 c ⋅ c = ∣ c ∣ 2 \mathbf{c}\cdot\mathbf{c}=\lvert\mathbf{c}\rvert^2 cc=c2,所以

A H → ⋅ B C → = ∣ c ∣ 2 − ∣ b ∣ 2 \overrightarrow{AH}\cdot\overrightarrow{BC} = \lvert\mathbf{c}\rvert^2-\lvert\mathbf{b}\rvert^2 AH BC =c2b2

由准备工作, ∣ b ∣ = ∣ c ∣ = R \lvert\mathbf{b}\rvert=\lvert\mathbf{c}\rvert=R b=c=R,所以这个值等于 R 2 − R 2 = 0 R^2-R^2=0 R2R2=0

点积为零,所以 A H ⊥ B C AH \perp BC AHBC——也就是说, A A A 且垂直于 B C BC BC 的那条高,正好经过 H H H。把 A A A 换成 B B B C C C 重复同样的计算(只是字母轮换),可得 B H ⊥ A C BH\perp AC BHAC C H ⊥ A B CH\perp AB CHAB。三条高都过 H H H,所以 H H H 就是垂心。

第二步:比较 G G G H H H,得到共线和比例。前面已经证明重心 G = a + b + c 3 G=\dfrac{\mathbf{a}+\mathbf{b}+\mathbf{c}}{3} G=3a+b+c,而这里 H = a + b + c H=\mathbf{a}+\mathbf{b}+\mathbf{c} H=a+b+c,两式对比, G G G 恰好是 H H H 1 3 \dfrac13 31

G = 1 3 H G = \dfrac{1}{3}H G=31H,也就是 O G → = 1 3 O H → \overrightarrow{OG} = \dfrac{1}{3}\overrightarrow{OH} OG =31OH

O G → \overrightarrow{OG} OG O H → \overrightarrow{OH} OH 方向相同(一个是另一个乘以正数 1 3 \dfrac13 31),这意味着 G G G 就落在射线 O H OH OH 上——也就是说 O O O G G G H H H 三点共线。再比较长度:

O G = 1 3 O H OG=\dfrac13 OH OG=31OH,所以 G H = O H − O G = 2 3 O H GH = OH-OG = \dfrac23 OH GH=OHOG=32OH,故 O G : G H = 1 3 : 2 3 = 1 : 2 OG:GH=\dfrac13:\dfrac23 = 1:2 OG:GH=31:32=1:2

这条证明顺带给出一个副产品:垂心的位置向量就是三个顶点位置向量之和(以外心为原点时)——这是一条比"三条高的交点"直观得多的垂心刻画方式。

是什么的交点 到什么等距 是否总在内部
外心 O O O 三边垂直平分线 三个顶点
内心 I I I 三条角平分线 三条边
重心 G G G 三条中线 —(是顶点的平均)
垂心 H H H 三条高

位置关系

判断两个几何体的相对位置,只需要比较距离半径。这是碰撞检测最基础的一层。

点线与圆的位置关系

点与圆:设点到圆心的距离为 d d d

  • d < r d \lt r d<r:点在圆内
  • d = r d = r d=r:点在圆上
  • d > r d \gt r d>r:点在圆外

写成一个量就是 d − r d - r dr:负数在内、零在边界、正数在外。这正是圆的符号距离函数(SDF),学习路径第 88 行的 SDF 就是把它推广到任意形状。

直线与圆:设圆心到直线的距离为 d d d

  • d > r d \gt r d>r:相离,无交点
  • d = r d = r d=r:相切,一个交点
  • d < r d \lt r d<r:相交,两个交点,弦长 2 r 2 − d 2 2\sqrt{r^2-d^2} 2r2d2

判别时用点到直线距离公式算 d d d,不必联立方程。射线与球求交(光线追踪、激光测距仿真)就是这条的三维版。

圆与圆的位置关系

圆与圆:设圆心距为 d d d,半径 r 1 > r 2 r_1 \gt r_2 r1>r2

关系 条件 公切线条数
外离 d > r 1 + r 2 d \gt r_1+r_2 d>r1+r2 4
外切 d = r 1 + r 2 d = r_1+r_2 d=r1+r2 3
相交 ∣ r 1 − r 2 ∣ < d < r 1 + r 2 \lvert r_1-r_2 \rvert \lt d \lt r_1+r_2 r1r2<d<r1+r2 2
内切 d = ∣ r 1 − r 2 ∣ d = \lvert r_1-r_2 \rvert d=r1r2 1
内含 d < ∣ r 1 − r 2 ∣ d \lt \lvert r_1-r_2 \rvert d<r1r2 0

第一行的否定就是最常用的碰撞判据:两个圆盘相碰    ⟺    d ≤ r 1 + r 2 \iff d \le r_1+r_2 dr1+r2。给每个物体套一个包围圆(三维是包围球),先用这一个不等式做粗筛,通过了再做精确检测——这是所有碰撞检测系统的第一层。

弧长与扇形面积

设圆心角为 n n n 度,半径 r r r

  • 弧长 l = n π r 180 l = \dfrac{n\pi r}{180} l=180r
  • 扇形面积 S = n π r 2 360 = 1 2 l r S = \dfrac{n\pi r^2}{360} = \dfrac{1}{2}lr S=360r2=21lr

角度制下这两个公式都带着 π 180 \dfrac{\pi}{180} 180π 这个累赘。改用弧度制——把圆心角 θ \theta θ 定义为"所对弧长与半径之比" θ = l r \theta = \dfrac{l}{r} θ=rl——公式立刻变成

l = θ r l = \theta r l=θr S = 1 2 θ r 2 S = \dfrac{1}{2}\theta r^2 S=21θr2

这就是弧度制存在的理由:它让弧长公式退化成一个乘法。第 9 行三角函数、以及后面所有涉及角速度的地方( v = ω r v = \omega r v=ωr 就是 l = θ r l=\theta r l=θr 对时间求导)都默认用弧度。

圆幂定理

从一点 P P P 引直线与圆交于两点,两段线段长之积是定值,与直线怎么转无关。这个定值叫 P P P 对圆的幂,等于 d 2 − r 2 d^2-r^2 d2r2 d d d P P P 到圆心的距离)。

圆幂定理三种情形

情形一,相交弦定理 P P P 在圆内):弦 A B AB AB C D CD CD 交于圆内一点 P P P,则

P A ⋅ P B = P C ⋅ P D = r 2 − d 2 PA \cdot PB = PC \cdot PD = r^2-d^2 PAPB=PCPD=r2d2

证明:连 A C AC AC D B DB DB ∠ P A C \angle PAC PAC ∠ P D B \angle PDB PDB 是同弧 B C ⌢ \overset{\frown}{BC} BC 所对的圆周角(分别是 ∠ C A B \angle CAB CAB ∠ C D B \angle CDB CDB 的一部分/延伸),由圆周角定理相等; ∠ A P C \angle APC APC ∠ D P B \angle DPB DPB 是对顶角,也相等。于是

△ A P C ∼ △ D P B \triangle APC \sim \triangle DPB APCDPB(AA)

对应边成比例: P A P D = P C P B \dfrac{PA}{PD} = \dfrac{PC}{PB} PDPA=PBPC,交叉相乘得 P A ⋅ P B = P C ⋅ P D PA \cdot PB = PC \cdot PD PAPB=PCPD

情形二,割线定理 P P P 在圆外):两条割线分别交圆于 A , B A,B A,B C , D C,D C,D A A A C C C 是近点),则

P A ⋅ P B = P C ⋅ P D = d 2 − r 2 PA \cdot PB = PC \cdot PD = d^2-r^2 PAPB=PCPD=d2r2

证明:连 A C AC AC D B DB DB ∠ P A C \angle PAC PAC ∠ P D B \angle PDB PDB 分别是 ∠ A \angle A A 处、 ∠ D \angle D D 处的角, A A A B B B C C C D D D 四点共圆, ∠ P A C \angle PAC PAC ∠ B D C \angle BDC BDC(即 ∠ P D B \angle PDB PDB)同样是同弧 B C ⌢ \overset{\frown}{BC} BC 所对的圆周角,相等; ∠ P \angle P P △ P A C \triangle PAC PAC △ P D B \triangle PDB PDB 的公共角。于是同样由 AA 得

△ P A C ∼ △ P D B \triangle PAC \sim \triangle PDB PACPDB

P A P D = P C P B    ⇒    P A ⋅ P B = P C ⋅ P D \dfrac{PA}{PD} = \dfrac{PC}{PB} \;\Rightarrow\; PA \cdot PB = PC \cdot PD PDPA=PBPCPAPB=PCPD

这两种情形用的是同一个相似三角形结构,只是 P P P 在圆内还是圆外决定了 ∠ A P C \angle APC APC ∠ D P B \angle DPB DPB 是对顶角还是公共角。

情形三,切割线定理 P P P 在圆外,一条线是切线):切线切于 T T T,割线交圆于 A A A B B B A A A 是近点),则

P T 2 = P A ⋅ P B = d 2 − r 2 PT^2 = PA \cdot PB = d^2-r^2 PT2=PAPB=d2r2

证明要先补一条引理——切线弦角定理:切线与弦的夹角,等于这条弦在弦的另一侧所对的圆周角。即图中 ∠ P T A = ∠ T B A \angle PTA = \angle TBA PTA=TBA

引理的证明:连 O T OT OT O A OA OA。切线垂直半径, ∠ O T P = 90 ∘ \angle OTP=90^{\circ} OTP=90,所以

∠ P T A = ∠ O T P − ∠ O T A = 90 ∘ − ∠ O T A \angle PTA = \angle OTP - \angle OTA = 90^{\circ}-\angle OTA PTA=OTPOTA=90OTA

△ O T A \triangle OTA OTA O T = O A = r OT=OA=r OT=OA=r,是等腰三角形, ∠ O T A = ∠ O A T = 180 ∘ − ∠ T O A 2 = 90 ∘ − ∠ T O A 2 \angle OTA=\angle OAT=\dfrac{180^{\circ}-\angle TOA}{2}=90^{\circ}-\dfrac{\angle TOA}{2} OTA=OAT=2180TOA=902TOA,代入:

∠ P T A = 90 ∘ − ( 90 ∘ − ∠ T O A 2 ) = ∠ T O A 2 \angle PTA = 90^{\circ}-\left(90^{\circ}-\dfrac{\angle TOA}{2}\right)=\dfrac{\angle TOA}{2} PTA=90(902TOA)=2TOA

∠ T O A \angle TOA TOA 正是 T A ⌢ \overset{\frown}{TA} TA 的圆心角,由圆周角定理, ∠ T O A 2 = ∠ T B A \dfrac{\angle TOA}{2}=\angle TBA 2TOA=TBA B B B 在优弧上)。两式相等, ∠ P T A = ∠ T B A \angle PTA=\angle TBA PTA=TBA,引理得证。

回到切割线定理: △ P T A \triangle PTA PTA △ P B T \triangle PBT PBT 中, ∠ P \angle P P 是公共角, ∠ P T A = ∠ P B T \angle PTA=\angle PBT PTA=PBT(引理),由 AA 得

△ P T A ∼ △ P B T \triangle PTA \sim \triangle PBT PTAPBT

P T P B = P A P T    ⇒    P T 2 = P A ⋅ P B \dfrac{PT}{PB} = \dfrac{PA}{PT} \;\Rightarrow\; PT^2 = PA \cdot PB PBPT=PTPAPT2=PAPB

三种情形本质上是同一条定理:只要过 P P P 的两条直线与圆各交出两点,两条直线上各自的两段之积就相等;切线是割线两个交点重合的极限情形,所以 P A ⋅ P B PA\cdot PB PAPB 退化成 P T ⋅ P T = P T 2 PT\cdot PT=PT^2 PTPT=PT2

注意 d 2 − r 2 d^2-r^2 d2r2 与上面点与圆位置关系里的 d − r d-r dr 是同一件事的两种写法,符号相同:圆外为正、圆上为零、圆内为负。工程上更常用 d 2 − r 2 d^2-r^2 d2r2,因为它避免了开方。

三点定圆

不共线的三点确定唯一一个圆——这正是上面外接圆存在唯一性的另一种说法。

这是激光点云里拟合圆柱、拟合弯道的基础:随机取三点算出一个圆,统计有多少点落在容差范围内,重复若干次取最好的,就是 RANSAC 拟合圆。所需的最少采样点数 3 3 3,正是由"三点定圆"决定的。

"三点不共线"这个条件在工程上对应一个实际问题:若采样到的三点接近共线,解出的圆心会跑到极远处、半径趋于无穷,数值上极不稳定。实现时通常要先剔除近似共线的采样。

五、三角形的面积

三个公式,按已知条件选用:

  • 已知底和高: S = 1 2 a h S = \dfrac{1}{2}ah S=21ah

  • 已知两边及夹角: S = 1 2 a b sin ⁡ C S = \dfrac{1}{2}ab\sin C S=21absinC

  • 已知三个顶点坐标 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2) ( x 3 , y 3 ) (x_3,y_3) (x3,y3)

    S = 1 2 ∣ ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ∣ S = \dfrac{1}{2}\left\lvert (x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1) \right\rvert S=21(x2x1)(y3y1)(x3x1)(y2y1)

证明(坐标公式):设 u = ( x 2 − x 1 ,   y 2 − y 1 ) \mathbf{u}=(x_2-x_1,\ y_2-y_1) u=(x2x1, y2y1) v = ( x 3 − x 1 ,   y 3 − y 1 ) \mathbf{v}=(x_3-x_1,\ y_3-y_1) v=(x3x1, y3y1),即 A A A 出发的两条边 A B AB AB A C AC AC

面积与叉积

平移不改变面积,把 A A A 移到原点,问题变成:向量 u \mathbf{u} u v \mathbf{v} v 张成的三角形面积是多少。

已知公式 S = 1 2 ∣ u ∣ ∣ v ∣ sin ⁡ θ S = \dfrac{1}{2}\lvert\mathbf{u}\rvert\lvert\mathbf{v}\rvert\sin\theta S=21uvsinθ(本节第二个公式, θ \theta θ u \mathbf{u} u v \mathbf{v} v 的夹角)。要证它等于 1 2 ∣ u 1 v 2 − u 2 v 1 ∣ \dfrac{1}{2}\lvert u_1v_2-u_2v_1\rvert 21u1v2u2v1,只需证

∣ u ∣ ∣ v ∣ sin ⁡ θ = ∣ u 1 v 2 − u 2 v 1 ∣ \lvert\mathbf{u}\rvert\lvert\mathbf{v}\rvert\sin\theta = \lvert u_1v_2-u_2v_1\rvert uvsinθ=u1v2u2v1

这是一个纯代数恒等式(拉格朗日恒等式),直接展开验证:

( u 1 v 2 − u 2 v 1 ) 2 + ( u 1 v 1 + u 2 v 2 ) 2 = u 1 2 v 2 2 − 2 u 1 u 2 v 1 v 2 + u 2 2 v 1 2 + u 1 2 v 1 2 + 2 u 1 u 2 v 1 v 2 + u 2 2 v 2 2 (u_1v_2-u_2v_1)^2+(u_1v_1+u_2v_2)^2 = u_1^2v_2^2-2u_1u_2v_1v_2+u_2^2v_1^2+u_1^2v_1^2+2u_1u_2v_1v_2+u_2^2v_2^2 (u1v2u2v1)2+(u1v1+u2v2)2=u12v222u1u2v1v2+u22v12+u12v12+2u1u2v1v2+u22v22

右边中间两项抵消,合并得 ( u 1 2 + u 2 2 ) ( v 1 2 + v 2 2 ) = ∣ u ∣ 2 ∣ v ∣ 2 (u_1^2+u_2^2)(v_1^2+v_2^2) = \lvert\mathbf{u}\rvert^2\lvert\mathbf{v}\rvert^2 (u12+u22)(v12+v22)=u2v2。所以

( u 1 v 2 − u 2 v 1 ) 2 = ∣ u ∣ 2 ∣ v ∣ 2 − ( u 1 v 1 + u 2 v 2 ) 2 = ∣ u ∣ 2 ∣ v ∣ 2 − ( u ⋅ v ) 2 (u_1v_2-u_2v_1)^2 = \lvert\mathbf{u}\rvert^2\lvert\mathbf{v}\rvert^2-(u_1v_1+u_2v_2)^2 = \lvert\mathbf{u}\rvert^2\lvert\mathbf{v}\rvert^2-(\mathbf{u}\cdot\mathbf{v})^2 (u1v2u2v1)2=u2v2(u1v1+u2v2)2=u2v2(uv)2

代入 u ⋅ v = ∣ u ∣ ∣ v ∣ cos ⁡ θ \mathbf{u}\cdot\mathbf{v}=\lvert\mathbf{u}\rvert\lvert\mathbf{v}\rvert\cos\theta uv=uvcosθ

( u 1 v 2 − u 2 v 1 ) 2 = ∣ u ∣ 2 ∣ v ∣ 2 ( 1 − cos ⁡ 2 θ ) = ∣ u ∣ 2 ∣ v ∣ 2 sin ⁡ 2 θ (u_1v_2-u_2v_1)^2 = \lvert\mathbf{u}\rvert^2\lvert\mathbf{v}\rvert^2(1-\cos^2\theta) = \lvert\mathbf{u}\rvert^2\lvert\mathbf{v}\rvert^2\sin^2\theta (u1v2u2v1)2=u2v2(1cos2θ)=u2v2sin2θ

两边开方即证。代回 S = 1 2 ∣ u ∣ ∣ v ∣ sin ⁡ θ S=\dfrac{1}{2}\lvert\mathbf{u}\rvert\lvert\mathbf{v}\rvert\sin\theta S=21uvsinθ,得

S = 1 2 ∣ u 1 v 2 − u 2 v 1 ∣ = 1 2 ∣ ( x 2 − x 1 ) ( y 3 − y 1 ) − ( x 3 − x 1 ) ( y 2 − y 1 ) ∣ S = \dfrac{1}{2}\lvert u_1v_2-u_2v_1\rvert = \dfrac{1}{2}\left\lvert (x_2-x_1)(y_3-y_1)-(x_3-x_1)(y_2-y_1) \right\rvert S=21u1v2u2v1=21(x2x1)(y3y1)(x3x1)(y2y1)

几何上看, ∣ u 1 v 2 − u 2 v 1 ∣ \lvert u_1v_2-u_2v_1\rvert u1v2u2v1 u \mathbf{u} u v \mathbf{v} v 张成的平行四边形的面积(图中黄色三角形与蓝色三角形拼成的平行四边形),三角形恰好是它的一半——这也是"叉乘的模等于两向量张成平行四边形面积"这条性质在二维的由来。

绝对值内部那一坨 u 1 v 2 − u 2 v 1 u_1v_2-u_2v_1 u1v2u2v1,就是向量 u = ( x 2 − x 1 ,   y 2 − y 1 ) \mathbf{u}=(x_2-x_1,\ y_2-y_1) u=(x2x1, y2y1) v = ( x 3 − x 1 ,   y 3 − y 1 ) \mathbf{v}=(x_3-x_1,\ y_3-y_1) v=(x3x1, y3y1)二维叉乘。它有三个用处:

  • 取绝对值再除以 2 2 2,得到面积
  • 只看符号,就能判断第三点在前两点连线的哪一侧(正为左侧,负为右侧,零为共线)
  • 符号为零即三点共线,这是判定共线最省事的办法(不用除法,没有斜率不存在的特例)

判断点在直线哪一侧,在碰撞检测、凸包构造、多边形内外判定里反复出现。

对应视频

正文看得懂就跳过,卡住了再看对应那一段。下面只列真正值得看的。

实际要看的约 55 分钟。勾股定理、三点定圆、三角形面积的坐标公式这几块合集里没有对应内容——勾股定理初中默认已会,后两个超出中考范围,以正文为准。

集数、标题、时长取自 B 站页面,未逐集观看。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐