2

如果我不能很好地解释标题,我很抱歉。

我已经进行了研究,但找不到有关此主题的任何答案。

Point Start;
Point End;
float Distance;

这就是我需要帮助的地方,我需要将点Start移向点End,只有距离很长。

因此,假设Start位于(0, 0)End位于(11, 17),并且Distance2.5

斜率为17/11又名17 超过 11。但是两点之间的距离是多少?假设两点之间的距离是20f。我想将点Start移向点End距离2.5f

所以最后,点Start和点End之间的距离将是17.5 (20-2.5)。

但是,正如我之前提到的,我在互联网或这些论坛上找不到任何关于此的信息。如何获得两点之间的距离(不是斜率)?以及如何将点沿距离移动一定距离?

希望我能解释一下自己。谢谢

4

3 回答 3

4

很抱歉回答了一个旧问题,但所选答案并不完全正确。

yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff * yDiff + xDiff * xDiff)

请注意两个 xDiff 之间的乘法 * 运算符,而不是 + 号。

如果您使用 + 号而不是 * 号,则 X 距离看起来会比实际短。我花了一段时间才找到这个错误,我一直在寻找错误的地方一段时间...... -.-

于 2013-07-07T16:45:48.553 回答
1

使用直角三角形关系:

c*c = a*a + b*b

其中 c 是最长边(斜边)所以:

yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff *yDiff + xDiff*xDiff)
于 2013-02-22T03:34:23.720 回答
1

你有一个点,斜率,距离:

您可以使用以下公式获取坐标:

Y = m(d/(1+m^2)^(1/2) + x) - mx + y, x=0,y=0, d= 2.5, m=17/11

然后你可以通过求解以下方程得到 X。

Y=17/11(X)
于 2013-02-22T03:43:02.393 回答