点p0到直线(pt1,pt2)的距离? 这个问题用解析代数法比较简单. 1. 设直线
(应该说线段)的长为L L=sqr( (pt2(0)-pt1(0))^2 + (pt2(1)-pt1(1))^2 + (pt2(2)-pt1(2))^2 ) 2. 直线(pt1,pt2)的单位矢量为 v= (pt2 - pt1) / L , [ v(i) = (pt2(i) - pt1(i)) / L , (i=0,1,2) ] 这里就产生一个限制条件, 也是解这个问题的唯一的限制条件, 即 L不能等于0 (L>0) 3. 过点p0与直线的任意一端点(可假定为pt1),可以做一矢量n n = p0 - pt1 , [ n(i) = p0(i) - pt1(i), (i=0,1,2) ] 矢量n的长度Ln= sqr( n(0)^2 + n(1)^2 + n(2)^2 ) 4. p0到直线的垂足设为p, p0到p的长度d 为所要求的结果. 如上图, p到pt1的长度t可由矢量的内积运算求出 t=n·v t=n(0)*v(0)+ n(1)*v(1)+ n(2)*v(2) 由勾股定理, d=sqr(t^2 + Ln^2) 5. 结论 只要直线长度不为0, 就可以用上述方法求出点到直线的距离 |