找到两条线的垂直线相交的点

时间:2014-12-08 12:26:02

标签: javascript math geometry 2d line

我有两条线A和B,其坐标是已知的 当线条在绿色框内不相交时,我必须在每条线上绘制垂线 在这里,我假设绿色框是画布。

我需要找到A线和B线的垂线相交的点(x5,y5)。
此外,我应该从哪个角度垂直绘制,以便它们最早见到。

Image Image2

1 个答案:

答案 0 :(得分:1)

您的问题没有独特的解决方案。假设线A和B不平行,那么你可以在一个方向上延伸它们使它们相交,你会发现一个由交叉点和两个端点A和B定义的角度。找到这个角度的平分线和该等分线上的每个点都将满足您的标准。如果A行和B行是平行的,很容易找到与A行和B行平行的另一行并位于它们之间的中间位置。此行上的每一点也符合您的标准。

如果"最早见到",则表示从(x5,y5)到A行和B行的距离最小化,那么当A行和B行不平行时,您可以找到一个独特的解决方案。 (x5,y5)的唯一位置可以通过以下方式确定:

1)找到更接近交叉点的A线和B线的终点。在您的示例中,它将是点(x2,y2)和点(x4,y4)
2)沿垂直于线本身的方向投射这两个点并将其投射到二等分线上。在您的示例中,沿黄线方向将项目(x2,y2)投影到二等分线上。对点(x4,y4)执行相同操作,但沿红线方向执行相同操作。
3)你应该从步骤(2)找到两个投影点,无论哪一点远离线A和B的交点是(x5,y5)的位置。
4)从点(x5,y5)开始,你应该很容易计算A线和B线上的垂直点并计算距离。

当A行和B行平行时,即使最小距离为"解决方案仍然不是唯一的。标准。