|
发表于 2007-10-30 13:17:00
|
显示全部楼层
0rjbqzb4xgl.jpg
点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, 就可以用上述方法求出点到直线的距离 |
|