如下圖所示,我們要計算的是c點到直線ab的距離。
首先我們要認識到,雖然在數學上,【點】與【向量】是兩種不同的名詞,但在實際的計算中是可以直接把【點】的座標視為從座標系【原點】到【點】的【向量】。有了這個前提,線段ab其實可以簡單地表示為向量n,其他的向量同理可得。用向量解決這個問題的關鍵是求出v在n上的投影向量vn。
經過推導,得到等式
(注意【點乘】和【乘以】的區別)
為了便於計算,可以把等式寫為這樣
【點乘】的計算優先順序高於【乘以】,所以該等式是通過
計算出投影向量vn的【模】,然後再乘以n的標準化向量
也就是vn的方向,最後得到vn
。前面提到過,【點】和【向量】可視為等價的,也就是說【向量】也可以代表【點】的座標,所以求出了vn,也就等價於求出了c到ab的垂線與ab(ab的延長線)相交的點的座標。然後我們利用兩點間的距離公式即可以求出c到ab的距離。下面直接上**。
usingsystem;
using
system.numerics;
namespace
_3dmath
public
float
distancecalculate()
private
vector3 _point_a;
private
vector3 _point_b;
private
vector3 _point_c;
}class
test
", res);}}
}
計算空間點到直線的距離
利用向量的叉積計算空間點到直線的距離,eigen庫已經給我封裝好了只需按著要求呼叫就好了。舉個簡單的例子如下 已知空間直線的方向向量表示為 m,n,p 已知直線上一點座標為b x0,y0,z0 求解空間點a x,y,z b到直線的距離d 需要構建兩個向量 eigen vector4d vec1 m,...
點到直線距離求解
點到線距離求解演算法 解法一 向量法求解 1.當不知道直線公式,僅知道幾個點時 問題 比如a 1,2 b 2,3 c 0,2 求點a到bc距 向量bc 2,1 我們給它找乙個垂直向量,稱為法向量n 1,2 注意,這裡只要垂直就可以了,比如 3,6 也行,對結果無妨,但不能 0,0 取向量ab 1,1...
求點到直線的距離
關於點到直線的距離,在vtkline中有乙個方法 distancetoline 用法 double closestpt1 3 double t1 3 double dist0 vtkline distancetoline seed,first seed,second seed,t1,closestp...