点到直线距离计算
·
1. 点到参数直线距离
- 点 : K K K, 线 l l l: X ( t ) = P + t ⋅ n ⃗ , n ⃗ 已经标准化 X(t)=P+t \cdot \vec{n},\vec{n}已经标准化 X(t)=P+t⋅n,n已经标准化
分析:点 K K K到直线 X ( t ) X(t) X(t)的距离为 点 K K K到直线上投影点 X ( t ′ ) X(t') X(t′)距离。 且投影向量必须与直线垂直,因此:
n ⃗ ⋅ ( K − X ( t ′ ) ) = 0 = n ⃗ ⋅ ( K − P − t ′ n ⃗ ) = n ⃗ ( K − P ) − t ′ ∥ n ⃗ ∥ 2 \vec{n} \cdot (K-X(t'))=0=\vec{n}\cdot(K-P-t'\vec{n})=\vec{n}(K-P)-t' \left \| \vec{n}\right \|^2 n⋅(K−X(t′))=0=n⋅(K−P−t′n)=n(K−P)−t′∥n∥2
得:
t ′ = n ⃗ ⋅ ( K − P ) / ∥ n ⃗ ∥ 2 t' = \vec{n} \cdot (K-P)/ \left\| \vec{n} \right\|^2 t′=n⋅(K−P)/∥n∥2
则点到直线距离为:
D 2 ( K , l ) = ∥ K − P − t ′ ⋅ n ⃗ ∥ 2 = ∥ K − P ∥ 2 − ( n ⃗ ⋅ ( K − P ) ) 2 ∥ n ⃗ ∥ 2 = ∥ K − P ∥ 2 − ( n ⃗ ⋅ ( K − P ) ) 2 D^2(K,l)=\left\| K-P-t' \cdot \vec{n}\right\|^2=\left\| K-P\right\|^2 - \frac{(\vec{n}\cdot(K-P))^2}{ \left\| \vec{n} \right\|^2}=\left\| K-P\right\|^2 - (\vec{n}\cdot(K-P))^2 D2(K,l)=∥K−P−t′⋅n∥2=∥K−P∥2−∥n∥2(n⋅(K−P))2=∥K−P∥2−(n⋅(K−P))2
2. 点到 隐含形式直线 距离
- 点 : K K K, 线 l l l: n ⃗ ⋅ X = c , n ⃗ 已经标准化 \vec{n} \cdot X = c,\vec{n}已经标准化 n⋅X=c,n已经标准化
分析:直线上到 K K K最近的点 Y Y Y满足 K = Y + s n ⃗ K=Y+s \vec{n} K=Y+sn, 两边同乘 n ⃗ \vec{n} n,可以得到: s = n ⃗ K − c ∥ n ⃗ ∥ 2 s=\frac{\vec{n}K-c}{\left\| \vec{n} \right\|^2} s=∥n∥2nK−c.
So,the distance between K and l l l:
D 2 ( K , l ) = ∥ K − Y ∥ = ∣ s ∣ ∥ n ⃗ ∥ = ∣ n ⃗ K − c ∣ ∥ n ⃗ ∥ D^2(K,l)=\left\| K-Y\right\|=|s|\left\| \vec{n} \right\|=\frac{|\vec{n}K-c|}{\left\| \vec{n} \right\|} D2(K,l)=∥K−Y∥=∣s∣∥n∥=∥n∥∣nK−c∣
更多推荐

所有评论(0)