C# 将一点向另一点移动一定距离

C# 将一点向另一点移动一定距离,c#,.net,C#,.net,如果我不能很好地解释标题,我很抱歉 我做过研究,在这个问题上找不到任何答案 Point Start; Point End; float Distance; 这就是我需要帮助的地方,我需要将点开始移向点结束,只需距离长 因此,让我们假设开始位于(0,0),结束位于(11,17),距离位于2.5 坡度为17/11aka17/11。但两点之间的距离是多少?假设两点之间的距离为20f。我想将点开始移动到点结束,移动距离为2.5f 因此,在结束时,点开始和点结束之间的距离为17.5(20-2.5) 但是

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

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

Point Start;
Point End;
float Distance;
这就是我需要帮助的地方,我需要将点开始移向点结束,只需距离

因此,让我们假设开始位于(0,0)结束位于(11,17)距离位于2.5

坡度为17/11aka17/11。但两点之间的距离是多少?假设两点之间的距离为20f。我想将点开始移动到点结束,移动距离为2.5f

因此,在结束时,点开始和点结束之间的距离为17.5(20-2.5)

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


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

使用直角三角形关系:

c*c = a*a + b*b
其中c为最长边(斜边) 因此:


您有一个点、坡度、距离:

可以使用以下公式获得坐标:

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)

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

yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff * yDiff + xDiff * xDiff)
请注意,两个XDIFF之间有一个乘法*运算符,而不是+号


如果用+号代替*号,则X距离看起来比实际距离短。我花了一段时间才找到这个bug,我已经在错误的地方搜索了一段时间了…--

我想这些应该会有帮助:我会查看它们并回复给你。无法编辑以前的评论,但非常感谢!我终于找到了,就是这个。和我一样。谢谢你的时间和努力。是不是应该是
xDiff*xDiff
而不是
xDiff+xDiff
yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff * yDiff + xDiff * xDiff)