计算几何初步

基本公式

正弦定理

a sin ⁡ A = b sin ⁡ B = c sin ⁡ C = 2 R \dfrac a{\sin A}=\dfrac b{\sin B}=\dfrac c{\sin C}=2R sinAa=sinBb=sinCc=2R

余弦定理

a 2 = b 2 + c 2 − 2 b c cos ⁡ A b 2 = a 2 + c 2 − 2 a c cos ⁡ B c 2 = a 2 + b 2 + 2 a b cos ⁡ C a^2=b^2+c^2-2bc\cos A\\ b^2=a^2+c^2-2ac\cos B\\ c^2=a^2+b^2+2ab\cos C a2=b2+c22bccosAb2=a2+c22accosBc2=a2+b2+2abcosC

向量

基本概念

向量的模:有向线段 A B → \overrightarrow{AB} AB 长度,记为 ∣ A B → ∣ |\overrightarrow{AB}| AB ∣ a ∣ |\boldsymbol a| a

向量的夹角:有向量 a , b \boldsymbol a,\boldsymbol b a,b,作 O A → = a \overrightarrow{OA}=\boldsymbol a OA =a O B → = b \overrightarrow{OB}=\boldsymbol b OB =b θ \theta θ为向量 a \boldsymbol a a与向量 b \boldsymbol b b的夹角,记作 ⟨ a , b ⟩ \lang\boldsymbol a,\boldsymbol b\rang a,b。根据概念可得:若 θ = 0 \theta=0 θ=0,则两向量同向;若 θ = π 2 \theta=\dfrac{\pi}{2} θ=2π,则两向量垂直, a ⊥ b \boldsymbol a\perp\boldsymbol b ab;若 θ = π \theta=\pi θ=π,则两向量反向。

运算

加减法

有向量 P = ( x 1 , y 1 ) , Q = ( x 2 , y 2 ) P=(x_1,y_1),Q=(x_2,y_2) P=(x1,y1),Q=(x2,y2)

P + Q = ( x 1 + x 2 , y 1 + y 2 ) P+Q=(x_1+x_2,y_1+y_2) P+Q=(x1+x2,y1+y2)

P − Q = ( x 1 − x 2 , y 1 − y 2 ) P-Q=(x_1-x_2,y_1-y_2) PQ=(x1x2,y1y2)

显然有, P + Q = Q + P , P − Q = − ( Q − P ) P+Q=Q+P,P-Q=-(Q-P) P+Q=Q+P,PQ=(QP)

点积

A B → ⋅ C D → = x 1 x 2 + y 1 y 2 \overrightarrow{AB}\cdot\overrightarrow{CD}=x_1x_2+y_1y_2 AB CD =x1x2+y1y2

A B → ⋅ C D → = ∣ A B ∣ ∣ C D ∣ cos ⁡ θ \overrightarrow{AB}\cdot\overrightarrow{CD}=|AB||CD|\cos\theta AB CD =ABCDcosθ

叉乘

A B → × C D → = x 1 y 2 − x 2 y 1 \overrightarrow{AB}\times\overrightarrow{CD}=x_1y_2-x_2y_1 AB ×CD =x1y2x2y1

A B → × C D → = ∣ A B ∣ ∣ C D ∣ sin ⁡ θ \overrightarrow{AB}\times\overrightarrow{CD}=|AB||CD|\sin\theta AB ×CD =ABCDsinθ

旋转

逆时针旋转: ( x cos ⁡ θ − y sin ⁡ θ , x sin ⁡ θ − y cos ⁡ θ ) (x\cos\theta-y\sin\theta,x\sin\theta-y\cos\theta) (xcosθysinθ,xsinθycosθ)

应用

多边形的面积:将多边形上的点逆时针标记为 p 1 … p n p_1…p_n p1pn,任选辅助点 O O O,记向量 v i = p i − O v_i=p_i-O vi=piO,得:
S = 1 2 ∣ ∑ i = 1 n v i × v i   m o d   n + 1 ∣ S=\dfrac12|\sum^n_{i=1}v_i\times v_i\bmod_{n+1}| S=21i=1nvi×vimodn+1

三个距离

欧式距离

有点 A ( x 1 , y 1 ) , B ( x 2 , y 2 ) A(x_1,y_1),B(x_2,y_2) A(x1,y1),B(x2,y2),则两点的欧氏距离为:
∣ A B ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 |AB|=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2} AB=(x1x2)2+(y1y2)2
n n n维空间中的欧式距离公式:

A → = ( x 1 , 1 … x 1 , n ) , B → = ( x 2 , 1 … x 2 , n ) \overrightarrow A=(x_{1,1}…x_{1,n}),\overrightarrow B=(x_{2,1}…x_{2,n}) A =(x1,1x1,n),B =(x2,1x2,n)
∣ A B → ∣ = ∑ i = 1 n ( x 1 , i − x 2 , i ) 2 |\overrightarrow{AB}|=\sqrt{\sum^n_{i=1}(x_{1,i}-x_{2,i})^2} AB =i=1n(x1,ix2,i)2

曼哈顿距离

对于两点 A ( x 1 , y 1 ) , B ( x 2 , y 2 ) A(x_1,y_1),B(x_2,y_2) A(x1,y1),B(x2,y2),其曼哈顿距离为:
d ( A , B ) = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d(A,B)=|x_1-x_2|+|y_1-y_2| d(A,B)=x1x2+y1y2
相关性质:

  • d ( i , j ) ≥ 0 d(i,j)\ge0 d(i,j)0

  • d ( i , i ) = 0 d(i,i)=0 d(i,i)=0

  • d ( i , j ) = d ( j , i ) d(i,j)=d(j,i) d(i,j)=d(j,i)

  • d ( i , j ) ≤ d ( i , k ) + d ( k , j ) d(i,j)\le d(i,k)+d(k,j) d(i,j)d(i,k)+d(k,j)

切比雪夫距离

有点 A ( x 1 , y 1 ) , B ( x 2 , y 2 ) A(x_1,y_1),B(x_2,y_2) A(x1,y1),B(x2,y2)​,其切比雪夫距离为:
d ( A , B ) = m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) d(A,B)=max(|x_1-x_2|,|y_1-y_2|) d(A,B)=max(x1x2,y1y2)

应用

切比雪夫距离与曼哈顿距离转换

( x , y ) (x,y) (x,y)的坐标变为 ( x + y , x − y ) (x+y,x-y) (x+y,xy)时,原坐标系中曼哈顿距离等于新坐标系中的切比雪夫距离。

( x , y ) (x,y) (x,y)的坐标变为 ( x + y 2 , x − y 2 ) (\dfrac{x+y}2,\dfrac{x-y}2) (2x+y,2xy),原坐标系中的切比雪夫距离等于新坐标系中的曼哈顿距离。

判断

判断点是否在线段上

Q Q Q,线段 P 1 P 2 P_1P_2 P1P2

  • ( Q − P 1 ) × ( P 2 − P 1 ) = 0 (Q-P_1)\times(P_2-P_1)=0 (QP1)×(P2P1)=0

  • Q Q Q在以 P 1 , P 2 P1,P2 P1,P2为对角顶点的矩形内。

第一条满足 Q Q Q在直线 P 1 P 2 P_1P_2 P1P2上,第二条满足 Q Q Q不在线段 P 1 P 2 P_1P_2 P1P2的两端延长线上。

判断两线段是否相交

  1. 快速排斥试验

    若以线段 P 1 P 2 P_1P_2 P1P2为对角线的矩形为 R R R,以线段 Q 1 Q 2 Q_1Q_2 Q1Q2为对角线的矩形为 T T T,若 R R R T T T不相交,则两线段不相交。

  2. 跨立实验

    若两线段相交,则两线段必然相互跨立对方。

    P 1 P 2 P_1P_2 P1P2跨立 Q 1 Q 2 Q_1Q_2 Q1Q2,满足:
    ( P 1 − Q 1 ) × ( Q 2 − Q 1 ) ⋅ ( Q 2 − Q 1 ) × ( P 2 − Q 1 ) ≥ 0 (P_1-Q_1)\times(Q2-Q_1)\cdot(Q_2-Q_1)\times(P_2-Q_1)\ge0 (P1Q1)×(Q2Q1)(Q2Q1)×(P2Q1)0

判断线段和直线是否相交

显然,若线段 P 1 P 2 P_1P_2 P1P2和直线 Q 1 Q 2 Q_1Q_2 Q1Q2相交,则 P 1 P 2 P_1P_2 P1P2跨立 Q 1 Q 2 Q_1Q_2 Q1Q2,式子同上。

判断点是否在多边形中

以点 L L L为顶点,向左作射线,计算射线与多边形的交点。

  • 对于多边形的水平边不做考虑。

  • 若射线与多边形顶点相交,若该点是其边纵坐标较大的点,计数。

  • L L L在多边形边上,直接判定 L L L在多边形中。

时间复杂度: O ( n ) O(n) O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值