我正在玩android,想尝试用正弦波模拟手榴弹运动。有人可以帮我语法吗?

这是我在掌握的少量数学知识中尝试过的:

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


但这并没有真正实现我的期望。

我的mPositionX / Ys初始值是手榴弹的生成点,而mTargetX / Y是我希望正弦波产生半波(例如半圆)的位置。手榴弹应该降落的地方。

我的排名值以百分比为单位,所以0.5是画布的一半,等等。

最佳答案

您用于正弦波的概念似乎很奇怪。
在正弦波中,等式为


  y = sin(x);


这应该对正弦波有效

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


现在在反复调用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

10-08 19:09