3D平面算法中点与线的最小垂直距离
如何在三维平面上找到一条线上点的最小垂直距离?
请给我逻辑,我会尝试对自己编码。
请让我知道如何以坐标系统的x,y,z来表示它。
从编码的角度来看,我发现找到合适的解决方案很容易,有点困难。 在线解决方案有点生疏的理解。 所以请帮助我。
请注意线是根据三维空间方程给出的。
给定点A和线,在线上选择两个不同的点(B和C)。 使用Heron公式计算三角形ABC的面积。 将区域乘以2,并用[BC]的长度除。 你有你需要的结果。
对于无限长线,最小距离是线段与通过从线开始到结束点的无限长线成直角的长度。 垂线的方向由垂直于平面的单位与沿着该线的单位矢量的叉积给出,垂线的垂足由第一条线的方程的同时求解给出,点。 点之间的距离是你所追求的。
对于有限线,只有当垂直线的脚位于线段上时,这才是解决方案; 否则它是该点与该段的任一端之间的距离中较短的一个。
你说这条线是用三维方程给出的,但真正的平面是由方程给出的。 并且由于该线据说位于3D平面中,可能是由另一个等式给出的,该线实际上是两个平面的交点。
为了得到线的方向矢量,将法线的叉积乘以两个平面。 如果你使用Pavel的方法,你不需要这个。
为了得到一个点,为x选择一个值,例如x = 0。然后在插入该值后解出y和z的两个方程。 要找到在Pavel方法中使用的另一个点,请将x设置为其他值,比如x = 1,然后再次解决该问题。
如果该线的方向错误(垂直于x轴),则x可能是固定值。 在这种情况下,尝试将y设置为两个固定值。 如果仍然不起作用,请尝试z。 另外,请检查原始平面不平行,以便确实存在交叉线。
要解决没有Pavel方法的问题,用由给定点和线上找到的点组成的向量交叉线的方向。 现在将这个结果与行方向交叉得到一个新的向量。 使用原始点将该矢量点和线上的点再次相加。 采取差异,并除以矢量的长度。
链接地址: http://www.djcxy.com/p/84923.html上一篇: Minimum perpendicular Distance of a point to a line in 3D plane algorithm