1
任何人都可以向我解释为什么speed
计算关闭?
这是一个浮点计算。我在日志中显示(下面)涉及的所有因素。
根据我的手计算器:Android漂浮点乘法因子0.004739
长度:SQRT(3.497924^2 +(-1.134711)^ 2)= 3.67736881
速度:1.05 * 3.67736881 = 3.86123725
这是关通过一个因子4.739 10^-3从印刷结果3.879624
的代码:
float factor = yTouch(paddle, ballBounds);
float speed = SPEED_TRANSFER[level] * PointF.length(mSpeed.x, mSpeed.y);
double alpha = Math.PI/2;
double beta = Math.atan2(mSpeed.y, mSpeed.x);
double tau = -(2*alpha+beta);
Log.v("debug", String.format("speed(%f) mSpeed(%f,%f) transfer(%2.2f)
length(%f) Original tau(%3.2f)", speed, mSpeed.x, mSpeed.y,
SPEED_TRANSFER[level], PointF.length(mSpeed.x, mSpeed.y), tau/Math.PI));
日志:
03-24 10:48:53.421: V/debug(3236): speed(3.879624) mSpeed(3.497924,-1.134711) transfer(1.05) length(3.677369) Original tau(-0.90)
编辑
这个我试过,直接乘法是正确的。
Log.v("debug", "Direct multiplication:" + (1.05f * 3.677369f));
03-24 11:49:08.687: V/debug(7644): Direct multiplication:3.8612373
你确定你的代码中的SPEED_TRANSFER [level] = 1.05和PointF.length(mSpeed.x,mSpeed.y)= 3.67736881的值吗?你有没有尝试记录它? – 2013-03-24 09:45:18
@NAYOSO在日志打印中,向右滚动 – ilomambo 2013-03-24 09:47:12
这是多线程的吗? 'mSpeed'在计算'speed'和你的Log线之间改变?另外,如果你将'factor'和'speed'声明为'double',它有什么区别吗? – mtrw 2013-03-24 09:48:39