我正在玩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