三维空间中,已知3个点坐标。求其中一点要另外两点所构成的线段的距离
三维空间中已知3个点坐标。求其中一点要另外两点所构成的线段的距离延伸:由若干个线段组成的一个平面,求这点到这个平面的距离三个点:p(x,y,z),p1(x1,y1,z1)...
三维空间中 已知3个点坐标。
求其中一点要另外两点所构成的线段的距离
延伸:
由若干个线段组成的一个平面,求这点到这个平面的距离
三个点:p(x,y,z),p1(x1,y1,z1),p2(x2,y2,z2); 求p到线段p1p2的距离。本人数学基础不是很牢固,希望能解释各个步骤 。 小弟在此谢过啦 展开
求其中一点要另外两点所构成的线段的距离
延伸:
由若干个线段组成的一个平面,求这点到这个平面的距离
三个点:p(x,y,z),p1(x1,y1,z1),p2(x2,y2,z2); 求p到线段p1p2的距离。本人数学基础不是很牢固,希望能解释各个步骤 。 小弟在此谢过啦 展开
1个回答
展开全部
向量
p1p=(x-x1,y-y1,z-z1)
p1p2=(x2-x1,y2-y1,z2-z1)
再用
(x-x1)(x2-x1)+(y-y1)(y2-y1)+(z-z1)(y2-y1)的绝对值
除以
sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)*sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2)
(sqrt代表根号)
得到p1p和p1p2夹角的余弦cos值,这利用了向量内积的性质,你看下参考资料,可以由内积反推出cos值。
然后用 sin^2+cos^2=1,得到sin值。
最后用 sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2) 乘以这个sin值,就结束了。
如果你还不满意,也可以用三角形面积=0.5×底×高来算。
三角形如果知道三条边的长度a,b,c,则面积S=0.5*根号下((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))。
你可以先求出pp1p2的边长,然后代进去算出面积,然后高=2×S/底,就求出来了。
p1p=(x-x1,y-y1,z-z1)
p1p2=(x2-x1,y2-y1,z2-z1)
再用
(x-x1)(x2-x1)+(y-y1)(y2-y1)+(z-z1)(y2-y1)的绝对值
除以
sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)*sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2)
(sqrt代表根号)
得到p1p和p1p2夹角的余弦cos值,这利用了向量内积的性质,你看下参考资料,可以由内积反推出cos值。
然后用 sin^2+cos^2=1,得到sin值。
最后用 sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2) 乘以这个sin值,就结束了。
如果你还不满意,也可以用三角形面积=0.5×底×高来算。
三角形如果知道三条边的长度a,b,c,则面积S=0.5*根号下((a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c))。
你可以先求出pp1p2的边长,然后代进去算出面积,然后高=2×S/底,就求出来了。
追问
错了了,我求的是最短距离,在三维空间内。这点的最短距离不一定在垂线上。
比如我在这个多边形的右上方,那么它到这个多边形的最短距离就成了右上点 到这个点的距离了。
追答
哦,那你需要求出C在AB的垂足的位置D,然后看垂足是否在线段AB上。如果不在线段上,则需要求出CA和CB里的较小的距离,就可以了!按我的方法,看AC和AB的夹角,是否小于90度(利用向量内积),如果BC和BA的夹角也小于90度(利用向量内积),则说明是个垂足会在AB上。否则的话,垂足不会在AB上,那么最短距离就会在顶点出现,不是A就是B。
参考资料: http://baike.baidu.com/view/1485493.htm
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询