让我们一步一步地完成它。
点 1 从 (x,y) 开始。点 2 在 (x2, y2) 处。
它们之间的斜率是 m = (y2-y)/(x2-x)。这告诉我们什么?它告诉我们,如果我们想从点 2 移动到点 1,对于我们在 x 方向上移动的每 1 个单位,我们需要在 y 方向上移动 m。
所以现在我们已经有了一个算法,可以让它们相互靠近!只是速度不对。
我们如何计算应该在 x 方向上移动多少点 2,以便在 y 方向上也移动了正确的量之后,它总共对角移动了 5 个单位?
好吧,如果我们在 x 上移动 1 个单位,在 y 上移动 m 个单位,我们将覆盖的距离为 d = sqrt(1^2 + m^2)(勾股定理)
我们想在 x 方向上移动一些数字 X,这样在 y 方向上移动 Xm 之后,我们将移动 5 个单位。很简单:我们移动的距离是 d = sqrt(X^2 + (Xm)^2)。只需将 d 设置为 5:
5 = sqrt(X^2 + (Xm)^2)
25 = X^2 + (Xm)^2 = (m^2 + 1)*X^2
X^2 = 25/(m^2 + 1)
X = sqrt(25/(m^2 + 1))
Run Code Online (Sandbox Code Playgroud)
现在,我们已经知道 m 是什么了。所以我们只需插入并求解 X。但请注意 X 将始终为正。这是因为我们对等式进行了平方。因此,您必须找出 X 的正确符号。(只需检查点 1 是在点 2 的左侧还是右侧)
有了这些之后,我们就会知道点 2 必须向左或向右移动 X 个单位,向上或向下移动 mX。