最小垂直3D平面算法中点与线的距离

时间:2009-10-23 21:38:20

标签: algorithm math

如何在3D平面中找到点与线的最小垂直距离?

请给我逻辑,我会尝试自己编码。

请告诉我如何根据坐标系统的x,y,z进行操作。

我发现从编码的角度来看,找到合适的解决方案有点困难。理解在线解决方案有点生疏。所以请帮助我。

请注意,行以3D空间方程式给出。

3 个答案:

答案 0 :(得分:13)

给定A点和一条线,在线上选择两个不同的点(B和C)。使用Heron's formula计算三角形ABC的面积。将面积乘以2并将其除以[BC]的长度。你有你需要的结果。

答案 1 :(得分:2)

对于无限直线,最小距离是与通过从线开始并在该点结束的点的无限直线成直角的线段的长度。垂直方向由垂直于平面的单位和沿线的单位矢量的叉积给出,垂直的底部由同时求解第一条线的方程给出,垂直方向通过点。点之间的距离就是你所追求的。

对于有限线,只有当垂线的底部位于线段上时,这才是解决方案;否则它是该点与该段的任何一端之间距离的较短者。

答案 2 :(得分:1)

你说这条线是以3D方程式给出的,但真正的平面是由方程式给出的。而且由于这条线据说位于一个3D平面上,大概是由另一个方程给出的,所以该线实际上是两个平面的交点。

要获取直线的方向向量,请将法线的叉积乘以两个平面。如果您使用Pavel的方法,则不需要此方法。

要在线上得到一个点,选择x的某个值,比如x = 0.然后在插入该值后求解y和z的两个等式。要找到在Pavel方法中使用的另一个点,请将x设置为其他值,例如x = 1,然后再次求解系统。

如果线的方向错误(垂直于x轴),则x可能是固定值。在这种情况下,请尝试将y设置为两个固定值。如果仍然无效,请尝试z。另外,检查原始平面是否不平行,以便实际存在交叉线。

要解决没有Pavel方法的问题,请使用给定点形成的向量和线上找到的点交叉线的方向。现在将该结果与行方向交叉以获得新的向量。将该矢量与原点对齐并再次与该点上的点。取差值,然后除以矢量的长度。