结论
我们先说公式:已知空间中直线上一点P1和直线的方向向量,求点P3到直线的距离:
向量的叉乘
要解决这个问题,首先要了解向量叉乘的意义。
可以参考下上面这篇文章,可以知道,向量的叉乘得到的是一个垂直于两叉乘向量,同时得到的向量的模长等于两向量所围成平行四边形的面积。
求解距离
当我们已知平行四边形的面积时,求解H就可以由方程:
由此可得:
Matlab代码实现
function dis = getPoints2lineDis(point1_on_line, point2_on_line, point_Others)
%输入:点的xyz行向量,point_Others可以输入多个点
vec_l = point2_on_line - point1_on_line;
dis = zeros(size(point_Others,1),1);
for i=1:length(dis)
dis(i) = norm(cross(vec_l,point_Others(i,:) - point1_on_line)) / norm(vec_l);
end
end