将一个点移向另一个点,移动一定距离

时间:2013-02-22 03:24:38

标签: c# .net

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

我做过研究,但在这个主题上找不到任何答案。

Point Start;
Point End;
float Distance;

这是我需要帮助的,我需要将开始指向点结束,仅距离

让我们说开始位于(0,0)结束位于(11,17)距离 2.5

斜率 17/11 17> 11 。但这两点之间的距离是多少?可以说两点之间的距离是20f。我想将开始指向距离距离 2.5f

所以最后,点开始和点结束之间的距离将 17.5 (20-2.5)。

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

如果您使用+符号而不是*符号,那么X距离将显示为比实际更短。我花了一段时间才发现这个错误,我现在一直在寻找错误的地方...... -.-

答案 1 :(得分: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)

答案 2 :(得分:0)

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

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

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)