2013-02-22 96 views
1

如果我不能很好地解釋標題,我很抱歉。將點移向另一點,移動一定距離

我已經完成了研究,並且找不到有關此主題的任何答案。

Point Start; 
Point End; 
float Distance; 

這就是我需要幫助,我需要移動點開始對點,只有距離長。

因此,可以說開始(0,0),並(11,17),並距離2.5

坡度爲17/11又名17多於11。但是這兩點之間的距離是多少?可以說,兩點之間的距離是20f。我想移動點開始朝點結束,由距離,這是2.5f

因此,在結束時,點開始和點之間的距離17.5(20-2.5)。

但是,正如我之前提到的,我無法在互聯網或這些論壇上找到任何關於此的信息。 如何獲得兩點之間的距離(不是斜率)?我如何沿着距離移動一個點,距離一定?

希望我能解釋一下自己。感謝

+0

所有者http://math.stackexchange.com/ imo – 2013-02-22 03:31:35

+2

這些應該有所幫助:http:/ /stackoverflow.com/questions/4702782/move-point-to-another-in-c-sharp http://cboard.cprogramming.com/game-programming/123811-move-point.html – 2013-02-22 03:32:28

+0

我會檢查出來並回到你身邊。 – user2066764 2013-02-22 03:33:03

回答

3

對不起回覆一個老問題,但所選的答案是不完全正確的。

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

請注意,兩個xDiffs之間有乘法運算符*,而不是+符號。

如果你用+符號代替*符號,那麼X距離看起來會比實際要短。花了我一段時間才發現這個bug,我一直在錯誤的地方搜索一段時間... -.-

+0

這計算距離,不移動任何點。 – 2016-02-25 12:27:20

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) 
+0

就是這樣。和我的一樣。感謝您的時間和精力。 – user2066764 2013-02-22 13:06:02

+0

不應該是'xDiff * xDiff'而不是'xDiff + xDiff'? – thelastshadow 2015-05-07 08:02:33

+0

固定@thelastshadow – 2015-05-08 08:18:45

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) 
相關問題