2013-01-25 24 views
1

我在玩android,想試試用正弦波模擬手榴彈的運動。任何人都可以幫助我的語法?Android,Java以正弦波移動手榴彈

這是我試圖與小的數學知識,我有:

mPositionX += mSpeed; 
mPositionY = (float) (0.5f * Math.sin(mTargetX * mPositionX)); 
setPosition(mPositionX, mPositionY); 

但它並沒有真正做什麼,我excpected ..

我mPositionX /伊蘇初始值是手榴彈的spawnpoint而mTargetX/Y是我希望正弦波做了半波(換句話說就是半圓)的地方;手榴彈應該降落的地方。

我的位置值是百分比,因此0.5是畫布等的一半。如果值得一提的話。

+0

爲正弦波

mSpeed=constant; mTargetX = constant2; mOriginalX=constant3; mDistanceX=mTargetX-mOriginalX; 

現在的工作到底發生了什麼「按預期的行爲不」? – cjds

回答

1

您用於正弦波的概念看起來很奇怪。 在正弦波中,方程是

y = sin(x);

這應該在反覆調用onDraw

mPositionX+=mDistanceX/mSpeed; //Distance divided by speed 
mPositionY=(float) (0.5* Math.sin(Math.PI*(Math.abs(mPositionX-mOriginalX))/mDistanceX); 
      //Assuming you want it to go to pi degrees 
      //Divide current distance by total distance * total angle reqd 
+0

它的工作原理,謝謝。只是一個小問題,曲線是倒置的:P下降,然後上升。我將如何編輯公式以使其繼續向下? – Rasmus

+1

@RasmusAppelkvist我編輯了答案。絕對的位置。現在它應該總是向上(希望) – cjds

+0

我應該編輯什麼以使其向後?就像有人從另一個方向投擲手榴彈一樣 – Rasmus