2011-10-12 57 views
0

我需要數學邏輯問題的幫助。 假設我有一個可以被用戶操作(移動)的對象。 用戶移動對象後,我希望對象繼續移動並減速停止。控制聲明

例如,當用戶將一個物體從A點移動到B點時,X軸上的總距離爲100像素,在用戶鬆開手指後,我想讓物體繼續移動並減速到從B點到點C.

那麼我如何計算點C的新距離,如果我設置它在2秒內減速並停止的時間?

謝謝!

回答

1

d =½at²+ V 噸+ d

d 是所述用戶 「放開」 的點。根據放開前的動作計算v i。設置一個負面的東西;你將不得不擺弄這個讓它感覺正確。將t從0增加到2. d是物體最終的位置。請記住,a和v i載體指向相反的方向,並且d 和d是

+0

謝謝你的回覆。但是你能把它翻譯成C#代碼,這樣我可以更清楚地理解它嗎?讓我知道你是否需要任何價值,如果不是,你可以假設。非常感謝你。 (: – Sydnal

+0

加速度在每次運行中都會有所不同,代碼不能每次都「擺弄[a]讓它感覺不錯」;我們必須*求解方程式* -1 – Beta

+0

您在說「-0.1 * v_i「是不是應該在測試後提出來的? –

0

如果加速度,一個是恆定的可以使用下式:

d =½at²

具有t = 2秒你得到d = 2a上。

這個加速度足夠加速到2秒鐘的v,所以a = v/2就是 。

你得到:

d = V

所以,如果每秒V = 100個像素,對象應該繼續100個像素,如果它在在持續減速2秒後停止。

0

如果你想要的是距離ç,這很容易。如果物體在k秒內距AB距離N像素(比如100),則距離BC的距離將爲N/k。

如果希望位置Ç,使A,B和C是在x軸,C = B +(B-A)/ K的整數。

如果你想動畫的議案,以便您可以更新位置x在每一步dt(例如0。1秒),然後啓動(在)用v = N/K,並且在每個步驟,

x += v * dt 
v -= N * dt/(2 * k) 

(一定要使用浮筒,不是整數,或舍入誤差會毀了效果)。